@pkmn/sim 0.5.3 → 0.5.7
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 +402 -332
- package/build/config/formats.js.map +1 -1
- package/build/data/aliases.js +4 -4
- package/build/data/aliases.js.map +1 -1
- package/build/data/formats-data.js +183 -70
- package/build/data/formats-data.js.map +1 -1
- package/build/data/mods/gen1/formats-data.js +190 -190
- package/build/data/mods/gen1/formats-data.js.map +1 -1
- package/build/data/mods/gen1/moves.js +1 -2
- package/build/data/mods/gen1/moves.js.map +1 -1
- package/build/data/mods/gen2/formats-data.js +1 -1
- package/build/data/mods/gen2/formats-data.js.map +1 -1
- package/build/data/mods/gen3/formats-data.js +13 -13
- package/build/data/mods/gen3/formats-data.js.map +1 -1
- package/build/data/mods/gen4/moves.js +22 -0
- package/build/data/mods/gen4/moves.js.map +1 -1
- package/build/data/mods/gen5/formats-data.js +173 -156
- package/build/data/mods/gen5/formats-data.js.map +1 -1
- package/build/data/mods/gen6/formats-data.js +4 -3
- package/build/data/mods/gen6/formats-data.js.map +1 -1
- package/build/data/mods/gen7/formats-data.js +3 -2
- package/build/data/mods/gen7/formats-data.js.map +1 -1
- package/build/data/mods/gen7/moves.js +154 -0
- package/build/data/mods/gen7/moves.js.map +1 -1
- package/build/data/moves.js +38 -7
- package/build/data/moves.js.map +1 -1
- package/build/data/pokedex.js +480 -11
- package/build/data/pokedex.js.map +1 -1
- package/build/data/rulesets.js +12 -1
- package/build/data/rulesets.js.map +1 -1
- package/build/data/tags.d.ts +1 -0
- package/build/data/tags.js +4 -3
- package/build/data/tags.js.map +1 -1
- package/build/data/text/abilities.js +4 -4
- package/build/data/text/abilities.js.map +1 -1
- package/build/data/text/moves.js +18 -18
- package/build/data/text/moves.js.map +1 -1
- package/build/sim/battle-actions.js +4 -1
- package/build/sim/battle-actions.js.map +1 -1
- package/build/sim/battle.js +23 -22
- package/build/sim/battle.js.map +1 -1
- package/build/sim/dex-formats.d.ts +1 -0
- package/build/sim/dex-formats.js +3 -2
- package/build/sim/dex-formats.js.map +1 -1
- package/build/sim/dex-species.js +5 -2
- package/build/sim/dex-species.js.map +1 -1
- package/build/sim/exported-global-types.d.ts +1 -0
- package/build/sim/global-types.d.ts +1 -0
- package/build/sim/index.d.ts +1 -0
- package/build/sim/index.js +3 -1
- package/build/sim/index.js.map +1 -1
- package/build/sim/team-validator.js +13 -0
- package/build/sim/team-validator.js.map +1 -1
- package/config/formats.ts +422 -352
- package/data/aliases.ts +4 -4
- package/data/formats-data.ts +183 -70
- package/data/mods/gen1/formats-data.ts +190 -190
- package/data/mods/gen1/moves.ts +1 -2
- package/data/mods/gen2/formats-data.ts +1 -1
- package/data/mods/gen3/formats-data.ts +13 -13
- package/data/mods/gen4/moves.ts +21 -0
- package/data/mods/gen5/formats-data.ts +173 -156
- package/data/mods/gen6/formats-data.ts +4 -3
- package/data/mods/gen7/formats-data.ts +3 -2
- package/data/mods/gen7/moves.ts +150 -0
- package/data/moves.ts +37 -7
- package/data/pokedex.ts +480 -11
- package/data/rulesets.ts +11 -1
- package/data/tags.ts +6 -3
- package/data/text/abilities.ts +4 -4
- package/data/text/moves.ts +18 -18
- package/package.json +2 -2
- package/sim/battle-actions.ts +4 -1
- package/sim/battle.ts +24 -23
- package/sim/dex-formats.ts +4 -1
- package/sim/dex-species.ts +5 -2
- package/sim/exported-global-types.ts +1 -0
- package/sim/global-types.ts +1 -0
- package/sim/index.ts +1 -0
- package/sim/team-validator.ts +12 -0
package/build/config/formats.js
CHANGED
|
@@ -132,7 +132,7 @@ exports.Formats = [
|
|
|
132
132
|
],
|
|
133
133
|
mod: 'gen8',
|
|
134
134
|
ruleset: ['[Gen 8] RU'],
|
|
135
|
-
banlist: ['RU', 'NUBL', 'Drizzle', 'Drought'],
|
|
135
|
+
banlist: ['RU', 'NUBL', 'Drizzle', 'Drought', 'Slush Rush'],
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
name: "[Gen 8] PU",
|
|
@@ -193,7 +193,7 @@ exports.Formats = [
|
|
|
193
193
|
'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Dialga', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Jirachi',
|
|
194
194
|
'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mew', 'Mewtwo', 'Mimikyu', 'Necrozma-Dawn-Wings',
|
|
195
195
|
'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Sableye', 'Snorlax', 'Solgaleo', 'Victini', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
|
|
196
|
-
'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Perish Song',
|
|
196
|
+
'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Power Construct', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Perish Song',
|
|
197
197
|
],
|
|
198
198
|
},
|
|
199
199
|
{
|
|
@@ -217,7 +217,7 @@ exports.Formats = [
|
|
|
217
217
|
mod: 'gen8',
|
|
218
218
|
ruleset: ['[Gen 8] PU'],
|
|
219
219
|
banlist: [
|
|
220
|
-
'PU', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton', 'Omastar', 'Rotom-Frost',
|
|
220
|
+
'PU', 'Aurorus', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton', 'Omastar', 'Rotom-Frost',
|
|
221
221
|
'Turtonator', 'Vanilluxe', 'Vikavolt', 'Silvally-Dragon', 'Silvally-Ground', 'Sneasel', 'Damp Rock', 'Grassy Seed',
|
|
222
222
|
],
|
|
223
223
|
},
|
|
@@ -264,33 +264,9 @@ exports.Formats = [
|
|
|
264
264
|
{
|
|
265
265
|
name: "[Gen 8] Battle Stadium Singles",
|
|
266
266
|
mod: 'gen8',
|
|
267
|
-
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit
|
|
267
|
+
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit Two Restricted'],
|
|
268
268
|
restricted: ['Restricted Legendary'],
|
|
269
269
|
},
|
|
270
|
-
{
|
|
271
|
-
name: "[Gen 8] Battle Stadium Singles Series 9",
|
|
272
|
-
threads: [
|
|
273
|
-
`• <a href="https://www.smogon.com/forums/threads/3679374/">BSS Discussion</a>`,
|
|
274
|
-
`• <a href="https://www.smogon.com/forums/threads/3672698/">BSS Viability Rankings</a>`,
|
|
275
|
-
],
|
|
276
|
-
mod: 'gen8',
|
|
277
|
-
searchShow: false,
|
|
278
|
-
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
name: "[Gen 8] Test Your Luck!",
|
|
282
|
-
threads: [
|
|
283
|
-
`• <a href="https://www.smogon.com/forums/threads/3695144/">Test Your Luck! Discussion</a>`,
|
|
284
|
-
],
|
|
285
|
-
mod: 'gen8',
|
|
286
|
-
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Min Source Gen = 8'],
|
|
287
|
-
banlist: ['Azelf', 'Mesprit', 'Uxie'],
|
|
288
|
-
onValidateSet(set, format) {
|
|
289
|
-
if (set.moves.length !== 1 || this.dex.moves.get(set.moves[0]).id !== 'metronome') {
|
|
290
|
-
return [`${set.name || set.species} has illegal moves.`, `(${format.name} only allows the move Metronome)`];
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
|
-
},
|
|
294
270
|
{
|
|
295
271
|
name: "[Gen 8] Custom Game",
|
|
296
272
|
mod: 'gen8',
|
|
@@ -363,19 +339,7 @@ exports.Formats = [
|
|
|
363
339
|
restricted: ['Restricted Legendary'],
|
|
364
340
|
},
|
|
365
341
|
{
|
|
366
|
-
name: "[Gen 8] VGC 2021
|
|
367
|
-
threads: [
|
|
368
|
-
`• <a href="https://www.smogon.com/forums/threads/3677186/">VGC 2021 Series 11 Metagame Discussion</a>`,
|
|
369
|
-
`• <a href="https://www.smogon.com/forums/threads/3693427/">VGC 2021 Series 11 Sample Teams</a>`,
|
|
370
|
-
`• <a href="https://www.smogon.com/forums/threads/3693284/">VGC 2021 Series 11 Viability Rankings</a>`,
|
|
371
|
-
],
|
|
372
|
-
mod: 'gen8',
|
|
373
|
-
gameType: 'doubles',
|
|
374
|
-
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer', 'Limit One Restricted'],
|
|
375
|
-
restricted: ['Restricted Legendary'],
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
name: "[Gen 8] VGC 2021 Series 9",
|
|
342
|
+
name: "[Gen 8] VGC 2021",
|
|
379
343
|
mod: 'gen8',
|
|
380
344
|
gameType: 'doubles',
|
|
381
345
|
searchShow: false,
|
|
@@ -473,13 +437,15 @@ exports.Formats = [
|
|
|
473
437
|
mod: 'gen8',
|
|
474
438
|
ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
|
|
475
439
|
banlist: [
|
|
476
|
-
'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai',
|
|
477
|
-
'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus',
|
|
478
|
-
'
|
|
479
|
-
'
|
|
480
|
-
'
|
|
481
|
-
'
|
|
482
|
-
'
|
|
440
|
+
'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai',
|
|
441
|
+
'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus',
|
|
442
|
+
'Genesect', 'Gengar-Mega', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black',
|
|
443
|
+
'Kyurem-White', 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Metagross-Mega', 'Mewtwo',
|
|
444
|
+
'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
|
|
445
|
+
'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
|
|
446
|
+
'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete', 'Arena Trap', 'Moody',
|
|
447
|
+
'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang',
|
|
448
|
+
'Quick Claw', 'Baton Pass',
|
|
483
449
|
],
|
|
484
450
|
},
|
|
485
451
|
{
|
|
@@ -501,12 +467,14 @@ exports.Formats = [
|
|
|
501
467
|
'Drizzle', 'Drought',
|
|
502
468
|
// Slowbronite is banned so it doesn't validate on Galarian Slowbro
|
|
503
469
|
'Slowbronite',
|
|
470
|
+
// NatDex suspect
|
|
471
|
+
'Tornadus-Therian',
|
|
504
472
|
],
|
|
505
473
|
// Used to distinguish UU from below UU in the client
|
|
506
474
|
restricted: [
|
|
507
475
|
'Aegislash', 'Alakazam-Base', 'Altaria-Mega', 'Amoonguss', 'Beedrill-Mega', 'Blaziken-Base', 'Breloom', 'Celesteela',
|
|
508
476
|
'Chandelure', 'Donphan', 'Dracozolt', 'Dragonite', 'Feraligatr', 'Gastrodon', 'Hatterene', 'Hippowdon', 'Infernape',
|
|
509
|
-
'Keldeo', 'Krookodile', 'Mamoswine', 'Mandibuzz', 'Manectric-Mega', '
|
|
477
|
+
'Keldeo', 'Krookodile', 'Mamoswine', 'Mandibuzz', 'Manectric-Mega', 'Melmetal', 'Mienshao', 'Moltres-Base',
|
|
510
478
|
'Nidoking', 'Nidoqueen', 'Nihilego', 'Quagsire', 'Regieleki', 'Ribombee', 'Rotom-Heat', 'Rotom-Wash', 'Salamence',
|
|
511
479
|
'Scizor', 'Skarmory', 'Slowking-Base', 'Swampert-Base', 'Talonflame', 'Tangrowth', 'Tornadus-Base', 'Umbreon',
|
|
512
480
|
'Urshifu-Rapid-Strike',
|
|
@@ -545,33 +513,60 @@ exports.Formats = [
|
|
|
545
513
|
section: "Pet Mods",
|
|
546
514
|
},
|
|
547
515
|
{
|
|
548
|
-
name: "[Gen 8]
|
|
516
|
+
name: "[Gen 8] Alternatium",
|
|
517
|
+
desc: `A metagame made up of only Pokémon with alternate forms, with all of them being separate and unique.`,
|
|
549
518
|
threads: [
|
|
550
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
519
|
+
`• <a href="https://www.smogon.com/forums/threads/3683767/">Alternatium</a>`,
|
|
520
|
+
`• <a href="https://docs.google.com/spreadsheets/d/1bvvkPg1CrUBJFJJeuwkts8elfJcEcahGOoHm-vGBXOI/edit?usp=sharing">Spreadsheet</a>`,
|
|
551
521
|
],
|
|
552
|
-
mod:
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
'
|
|
522
|
+
mod: 'alternatium',
|
|
523
|
+
ruleset: ['Standard NatDex', 'Z-Move Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
|
|
524
|
+
banlist: ['All Pokemon', 'Past'],
|
|
525
|
+
unbanlist: [
|
|
526
|
+
'Silvally', 'Silvally-Bug', 'Silvally-Dark', 'Silvally-Dragon', 'Silvally-Electric', 'Silvally-Fairy', 'Silvally-Fighting', 'Silvally-Fire', 'Silvally-Flying', 'Silvally-Ghost',
|
|
527
|
+
'Silvally-Grass', 'Silvally-Ground', 'Silvally-Ice', 'Silvally-Poison', 'Silvally-Psychic', 'Silvally-Rock', 'Silvally-Steel', 'Silvally-Water', 'Pikachu', 'Pikachu-Rock-Star',
|
|
528
|
+
'Pikachu-Belle', 'Pikachu-Idol', 'Pikachu-PhD', 'Pikachu-Libre', 'Pikachu-Partner', 'Pikachu-Starter', 'Darmanitan', 'Darmanitan-Zen', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen',
|
|
529
|
+
'Aegishield', 'Aegislash', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Rotom', 'Rotom-Heat', 'Rotom-Wash', 'Rotom-Frost', 'Rotom-Fan', 'Rotom-Mow', 'Dugtrio',
|
|
530
|
+
'Dugtrio-Alola', 'Muk', 'Muk-Oilslick', 'Slowbro', 'Slowbro-Galar', 'Slowking', 'Slowking-Galar', 'Tornadus', 'Cummulus', 'Thundurus', 'Thundurus-Therian', 'Landorus', 'Landorus-Bengal',
|
|
531
|
+
'Vivillon-Fancy', 'Vivillon', 'Vivillon-Pokeball', 'Genesect', 'Genesect-Password', 'Genesect-Molten', 'Genesect-Freezer', 'Genesect-Type-Delta', 'Groudon', 'Groudon-Primal', 'Kyogre',
|
|
532
|
+
'Kyogre-Primal', 'Deoxys-Wood', 'Deoxys-Gem', 'Deoxys-Tank', 'Deoxys-Speed', 'Sandslash-Lustrous', 'Sandslash-Alola', 'Ninetales-Steamwork', 'Ninetales-Alola', 'Giratina', 'Giratina-Shadow',
|
|
533
|
+
'Eternatus', 'Manustorm', 'Exeggutor', 'Exeggutor-Lighthouse', 'Weezing', 'Weezing-King', 'Raticate', 'Raticate-Alola', 'Linoone', 'Linoone-Punk', 'Catastroform', 'Castform-Firestorm',
|
|
534
|
+
'Castform-Thunderstorm', 'Castform-Snowy', 'Wormadam', 'Wormadam-Sandy', 'Fibormadam', 'Farfetch\u2019d', 'Farfetch\u2019d-Galar', 'Corsola', 'Corsoul', 'Shaymin', 'Shaymin-Sky', 'Keldeo',
|
|
535
|
+
'Swordeo', 'Meloetta', 'Meloetta-Fighter', 'Lycanday', 'Lycanroc-Spectre', 'Lycanroc-Dusk', 'Gourgeist', 'Gourgeist-Fae', 'Gourgeist-Pulpy', 'Supergeist', 'Cramorant', 'Cramorant-Swimmer',
|
|
536
|
+
'Cramorant-Gorging', 'Eiscue', 'Eiscue-Noice', 'Mimikyu', 'Mimikyu-Sparkstone', 'Morpeko-Marsh', 'Morvilant', 'Zygarde-Wyrm', 'Zygarde-Canid', 'Zygarde-Goliath',
|
|
537
|
+
],
|
|
538
|
+
onValidateTeam(team, format) {
|
|
539
|
+
const speciesTable = new Set();
|
|
540
|
+
for (const set of team) {
|
|
541
|
+
const species = this.dex.species.get(set.species);
|
|
542
|
+
if (speciesTable.has(species.id)) {
|
|
543
|
+
return [
|
|
544
|
+
`You are limited to one of each Pokémon by Species Clause (except for different formes).`,
|
|
545
|
+
`(You have more than one ${species.id}.)`,
|
|
546
|
+
];
|
|
547
|
+
}
|
|
548
|
+
speciesTable.add(species.id);
|
|
549
|
+
}
|
|
550
|
+
},
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
name: "[Gen 8] Random Dex",
|
|
554
|
+
desc: `A micrometagame project consisting of 80 randomly selected fully-evolved Pokémon.`,
|
|
555
|
+
threads: [
|
|
556
|
+
`• <a href="https://www.smogon.com/forums/threads/3690182/">Random Dex</a>`,
|
|
557
557
|
],
|
|
558
|
+
mod: 'randomdex',
|
|
559
|
+
ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
|
|
560
|
+
banlist: ['All Pokemon', 'Past', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Kangaskhanite', 'Medichamite', 'Kommonium Z'],
|
|
558
561
|
unbanlist: [
|
|
559
|
-
'
|
|
560
|
-
'
|
|
561
|
-
'
|
|
562
|
-
'
|
|
563
|
-
'
|
|
564
|
-
'
|
|
565
|
-
'
|
|
566
|
-
'
|
|
567
|
-
'Silvino-Fire', 'Silvino-Flying', 'Silvino-Ghost', 'Silvino-Grass', 'Silvino-Ground', 'Silvino-Ice',
|
|
568
|
-
'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino-Steel', 'Silvino-Water', 'Silvino',
|
|
569
|
-
'Silvino-Bug-Mega', 'Silvino-Dark-Mega', 'Silvino-Dragon-Mega',
|
|
570
|
-
'Silvino-Electric-Mega', 'Silvino-Fairy-Mega', 'Silvino-Fighting-Mega',
|
|
571
|
-
'Silvino-Fire-Mega', 'Silvino-Flying-Mega', 'Silvino-Ghost-Mega',
|
|
572
|
-
'Silvino-Grass-Mega', 'Silvino-Ground-Mega', 'Silvino-Ice-Mega',
|
|
573
|
-
'Silvino-Poison-Mega', 'Silvino-Psychic-Mega', 'Silvino-Rock-Mega',
|
|
574
|
-
'Silvino-Steel-Mega', 'Silvino-Water-Mega', 'Silvino-Mega',
|
|
562
|
+
'Absol', 'Absol-Mega', 'Appletun', 'Articuno', 'Aurorus', 'Basculin', 'Beartic', 'Bisharp', 'Calyrex', 'Camerupt', 'Camerupt-Mega',
|
|
563
|
+
'Celesteela', 'Cloyster', 'Crawdaunt', 'Cursola', 'Dedenne', 'Delibird', 'Eelektross', 'Espeon', 'Flapple', 'Flareon', 'Flygon',
|
|
564
|
+
'Galvantula', 'Girafarig', 'Glaceon', 'Goodra', 'Gourgeist', 'Grimmsnarl', 'Guzzlord', 'Heliolisk', 'Hitmonchan', 'Hitmonlee',
|
|
565
|
+
'Hitmontop', 'Incineroar', 'Indeedee', 'Jolteon', 'Kangaskhan', 'Kommo-o', 'Lanturn', 'Leafeon', 'Leavanny', 'Ludicolo', 'Lunatone',
|
|
566
|
+
'Luvdisc', 'Machamp', 'Mandibuzz', 'Medicham', 'Nihilego', 'Palossand', 'Pidgeot', 'Pidgeot-Mega', 'Probopass', 'Pyroar', 'Sawk',
|
|
567
|
+
'Sceptile', 'Sceptile-Mega', 'Scolipede', 'Shiftry', 'Simisage', 'Slowbro', 'Slowbro-Mega', 'Slowking', 'Swoobat', 'Sylveon',
|
|
568
|
+
'Tapu Bulu', 'Tapu Fini', 'Tauros', 'Typhlosion', 'Umbreon', 'Ursaring', 'Vaporeon', 'Whiscash', 'Wishiwashi', 'Zebstrika', 'Absolite',
|
|
569
|
+
'Pidgeotite', 'Sceptilite', 'Cameruptite', 'Slowbronite',
|
|
575
570
|
],
|
|
576
571
|
},
|
|
577
572
|
{
|
|
@@ -592,80 +587,134 @@ exports.Formats = [
|
|
|
592
587
|
column: 2,
|
|
593
588
|
},
|
|
594
589
|
{
|
|
595
|
-
name: "[Gen 8]
|
|
596
|
-
desc: `Pokémon
|
|
590
|
+
name: "[Gen 8] Trademarked",
|
|
591
|
+
desc: `Sacrifice your Pokémon's ability for a status move that activates on switch-in.`,
|
|
597
592
|
threads: [
|
|
598
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
593
|
+
`• <a href="https://www.smogon.com/forums/threads/3656980/">Trademarked</a>`,
|
|
599
594
|
],
|
|
600
|
-
mod: '
|
|
595
|
+
mod: 'gen8',
|
|
596
|
+
// searchShow: false,
|
|
601
597
|
ruleset: ['Standard', 'Dynamax Clause'],
|
|
602
598
|
banlist: [
|
|
603
|
-
'Calyrex-Ice', 'Calyrex-Shadow', '
|
|
604
|
-
'
|
|
605
|
-
'
|
|
606
|
-
'
|
|
607
|
-
'
|
|
608
|
-
// Moody users
|
|
609
|
-
'Glalie', 'Octillery', 'Remoraid', 'Snorunt',
|
|
610
|
-
// Shadow Tag/Arena Trap
|
|
611
|
-
'Diglett-Base', 'Dugtrio-Base', 'Gothita', 'Gothitelle', 'Gothorita', 'Trapinch', 'Wobbuffet', 'Wynaut',
|
|
599
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Kyurem-Black', 'Kyurem-White',
|
|
600
|
+
'Giratina', 'Giratina-Origin', 'Genesect', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Lugia', 'Lunala', 'Magearna', 'Marowak-Alola',
|
|
601
|
+
'Marshadow', 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza',
|
|
602
|
+
'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
|
|
603
|
+
'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Neutralizing Gas', 'Power Construct', 'Shadow Tag', 'Baton Pass',
|
|
612
604
|
],
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
605
|
+
restricted: [
|
|
606
|
+
'Baneful Bunker', 'Block', 'Copycat', 'Corrosive Gas', 'Detect', 'Destiny Bond', 'Disable', 'Encore', 'Fairy Lock', 'Hypnosis', 'Ingrain',
|
|
607
|
+
'Instruct', 'Lovely Kiss', 'King\'s Shield', 'Mat Block', 'Mean Look', 'Memento', 'move:Metronome', 'Obstruct', 'Octolock', 'Nature Power',
|
|
608
|
+
'Parting Shot', 'Psycho Shift', 'Protect', 'Roar', 'Sing', 'Skill Swap', 'Sleep Powder', 'Sleep Talk', 'Spiky Shield', 'Spore', 'Substitute',
|
|
609
|
+
'Teleport', 'Whirlwind', 'Wish', 'Yawn',
|
|
610
|
+
],
|
|
611
|
+
onValidateTeam(team, format, teamHas) {
|
|
612
|
+
const problems = [];
|
|
613
|
+
for (const trademark in teamHas.trademarks) {
|
|
614
|
+
if (teamHas.trademarks[trademark] > 1) {
|
|
615
|
+
problems.push(`You are limited to 1 of each Trademark.`, `(You have ${teamHas.trademarks[trademark]} Pok\u00e9mon with ${trademark} as a Trademark.)`);
|
|
617
616
|
}
|
|
618
|
-
pokemon.m.innates = Object.keys(pokemon.species.abilities)
|
|
619
|
-
.filter(key => key !== 'S' && (key !== 'H' || !pokemon.species.unreleasedHidden))
|
|
620
|
-
.map(key => this.toID(pokemon.species.abilities[key]))
|
|
621
|
-
.filter(ability => ability !== pokemon.ability);
|
|
622
617
|
}
|
|
618
|
+
return problems;
|
|
623
619
|
},
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
}
|
|
620
|
+
validateSet(set, teamHas) {
|
|
621
|
+
const dex = this.dex;
|
|
622
|
+
const ability = dex.moves.get(set.ability);
|
|
623
|
+
if (!ability.exists) { // Not even a real move
|
|
624
|
+
return this.validateSet(set, teamHas);
|
|
630
625
|
}
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
pokemon.removeVolatile(innate);
|
|
626
|
+
// Absolute trademark bans
|
|
627
|
+
if (ability.category !== 'Status') {
|
|
628
|
+
return [`${ability.name} is not a status move, and cannot be used as a trademark.`];
|
|
635
629
|
}
|
|
636
|
-
|
|
630
|
+
if (ability.forceSwitch || ability.selfSwitch) {
|
|
631
|
+
return [
|
|
632
|
+
`Force-switching and self-switching moves are banned from being used as trademarks.`,
|
|
633
|
+
`(${ability.name} is a ${ability.forceSwitch ? 'force' : 'self'}-switching move.)`,
|
|
634
|
+
];
|
|
635
|
+
}
|
|
636
|
+
const irrevokablyRestricted = [
|
|
637
|
+
'Assist', 'Copycat', 'Metronome', 'Mirror Move', 'Sleep Talk',
|
|
638
|
+
'Skill Swap', // Self-propagates indefinitely
|
|
639
|
+
];
|
|
640
|
+
if (irrevokablyRestricted.includes(ability.name)) {
|
|
641
|
+
return [`${ability.name} cannot safely function as a trademark.`];
|
|
642
|
+
}
|
|
643
|
+
// Contingent trademark bans
|
|
644
|
+
if (this.ruleTable.isRestricted(`move:${ability.id}`)) {
|
|
645
|
+
return [`${ability.name} is restricted from being used as a trademark.`];
|
|
646
|
+
}
|
|
647
|
+
if (set.moves.map(this.toID).includes(ability.id)) {
|
|
648
|
+
return [`${set.name} may not use ${ability.name} as both a trademark and one of its moves simultaneously.`];
|
|
649
|
+
}
|
|
650
|
+
const customRules = this.format.customRules || [];
|
|
651
|
+
if (!customRules.includes('!obtainableabilities'))
|
|
652
|
+
customRules.push('!obtainableabilities');
|
|
653
|
+
const TeamValidator = require('../sim/team-validator').TeamValidator;
|
|
654
|
+
const validator = new TeamValidator(dex.formats.get(`${this.format.id}@@@${customRules.join(',')}`));
|
|
655
|
+
const moves = set.moves;
|
|
656
|
+
set.moves = [ability.id];
|
|
657
|
+
set.ability = dex.species.get(set.species).abilities['0'];
|
|
658
|
+
let problems = validator.validateSet(set, {}) || [];
|
|
659
|
+
if (problems.length)
|
|
660
|
+
return problems;
|
|
661
|
+
set.moves = moves;
|
|
662
|
+
set.ability = dex.species.get(set.species).abilities['0'];
|
|
663
|
+
problems = problems.concat(validator.validateSet(set, teamHas) || []);
|
|
664
|
+
set.ability = ability.id;
|
|
665
|
+
if (!teamHas.trademarks)
|
|
666
|
+
teamHas.trademarks = {};
|
|
667
|
+
teamHas.trademarks[ability.name] = (teamHas.trademarks[ability.name] || 0) + 1;
|
|
668
|
+
return problems.length ? problems : null;
|
|
669
|
+
},
|
|
670
|
+
pokemon: {
|
|
671
|
+
getAbility() {
|
|
672
|
+
const move = this.battle.dex.moves.get(this.battle.toID(this.ability));
|
|
673
|
+
if (!move.exists)
|
|
674
|
+
return Object.getPrototypeOf(this).getAbility.call(this);
|
|
675
|
+
return {
|
|
676
|
+
id: move.id,
|
|
677
|
+
name: move.name,
|
|
678
|
+
onStart(pokemon) {
|
|
679
|
+
this.add('-activate', pokemon, 'ability: ' + move.name);
|
|
680
|
+
this.actions.useMove(move, pokemon);
|
|
681
|
+
},
|
|
682
|
+
toString() {
|
|
683
|
+
return "";
|
|
684
|
+
},
|
|
685
|
+
};
|
|
686
|
+
},
|
|
637
687
|
},
|
|
638
688
|
},
|
|
639
689
|
{
|
|
640
|
-
name: "[Gen 8]
|
|
641
|
-
desc: `Pokémon
|
|
690
|
+
name: "[Gen 8] Linked",
|
|
691
|
+
desc: `The first two moves in a Pokémon's moveset are used simultaneously.`,
|
|
642
692
|
threads: [
|
|
643
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
693
|
+
`• <a href="https://www.smogon.com/forums/threads/3660421/">Linked</a>`,
|
|
644
694
|
],
|
|
645
|
-
mod: '
|
|
646
|
-
|
|
647
|
-
ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Dynamax Clause', 'Sleep Clause Mod', 'Endless Battle Clause'],
|
|
695
|
+
mod: 'linked',
|
|
696
|
+
ruleset: ['Standard', 'Dynamax Clause'],
|
|
648
697
|
banlist: [
|
|
649
|
-
'Calyrex-Ice', 'Calyrex-Shadow', '
|
|
650
|
-
'
|
|
651
|
-
'
|
|
652
|
-
'
|
|
653
|
-
'
|
|
698
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Cloyster', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Eternatus', 'Genesect', 'Giratina',
|
|
699
|
+
'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna',
|
|
700
|
+
'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo',
|
|
701
|
+
'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base',
|
|
702
|
+
'Zygarde-Complete', 'Arena Trap', 'Chlorophyll', 'Moody', 'Power Construct', 'Sand Rush', 'Sand Veil', 'Shadow Tag', 'Slush Rush', 'Snow Cloak',
|
|
703
|
+
'Surge Surfer', 'Swift Swim', 'Unburden', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Baton Pass',
|
|
654
704
|
],
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
const
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
|
|
705
|
+
restricted: [
|
|
706
|
+
'Baneful Bunker', 'Bounce', 'Protect', 'Detect', 'Dig', 'Dive', 'Fly', 'King\'s Shield', 'Nature\'s Madness', 'Night Shade',
|
|
707
|
+
'Obstruct', 'Phantom Force', 'Seismic Toss', 'Shadow Force', 'Sky Drop', 'Spiky Shield', 'Super Fang', 'Trick Room',
|
|
708
|
+
],
|
|
709
|
+
onValidateSet(set) {
|
|
710
|
+
const problems = [];
|
|
711
|
+
for (const [i, moveid] of set.moves.entries()) {
|
|
712
|
+
const move = this.dex.moves.get(moveid);
|
|
713
|
+
if ([0, 1].includes(i) && this.ruleTable.isRestricted(`move:${move.id}`)) {
|
|
714
|
+
problems.push(`${set.name || set.species}'s move ${move.name} cannot be linked.`);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
return problems;
|
|
669
718
|
},
|
|
670
719
|
},
|
|
671
720
|
// Other Metagames
|
|
@@ -710,6 +759,34 @@ exports.Formats = [
|
|
|
710
759
|
}
|
|
711
760
|
},
|
|
712
761
|
},
|
|
762
|
+
{
|
|
763
|
+
name: "[Gen 8] Almost Any Ability",
|
|
764
|
+
desc: `Pokémon have access to almost any ability.`,
|
|
765
|
+
threads: [
|
|
766
|
+
`• <a href="https://www.smogon.com/forums/threads/3656414/">Almost Any Ability</a>`,
|
|
767
|
+
`• <a href="https://www.smogon.com/forums/threads/3682690/">AAA Resources</a>`,
|
|
768
|
+
],
|
|
769
|
+
mod: 'gen8',
|
|
770
|
+
ruleset: ['Obtainable', '!Obtainable Abilities', 'Species Clause', 'Nickname Clause', '2 Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Dynamax Clause', 'Sleep Moves Clause', 'Endless Battle Clause'],
|
|
771
|
+
banlist: [
|
|
772
|
+
'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina',
|
|
773
|
+
'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
|
|
774
|
+
'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja',
|
|
775
|
+
'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom',
|
|
776
|
+
'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter',
|
|
777
|
+
'Innards Out', 'Intrepid Sword', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Protean', 'Pure Power', 'Shadow Tag',
|
|
778
|
+
'Simple', 'Stakeout', 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
|
|
779
|
+
],
|
|
780
|
+
onValidateSet(set) {
|
|
781
|
+
// Temporary fix until battle-only is implemented properly
|
|
782
|
+
if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
|
|
783
|
+
return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
|
|
784
|
+
}
|
|
785
|
+
if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
|
|
786
|
+
return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
|
|
787
|
+
}
|
|
788
|
+
},
|
|
789
|
+
},
|
|
713
790
|
{
|
|
714
791
|
name: "[Gen 8] Mix and Mega",
|
|
715
792
|
desc: `Mega evolve any Pokémon with any mega stone and no limit. Boosts based on mega evolution from gen 7.`,
|
|
@@ -727,7 +804,8 @@ exports.Formats = [
|
|
|
727
804
|
restricted: [
|
|
728
805
|
'Calyrex-Ice', 'Dialga', 'Eternatus', 'Gengar', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyurem-Black', 'Kyurem-White',
|
|
729
806
|
'Lugia', 'Lunala', 'Marshadow', 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
|
|
730
|
-
'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Urshifu
|
|
807
|
+
'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Urshifu', 'Urshifu-Rapid-Strike', 'Xerneas',
|
|
808
|
+
'Yveltal', 'Zekrom', 'Zygarde-Complete',
|
|
731
809
|
],
|
|
732
810
|
onValidateTeam(team) {
|
|
733
811
|
const itemTable = new Set();
|
|
@@ -772,49 +850,23 @@ exports.Formats = [
|
|
|
772
850
|
}
|
|
773
851
|
},
|
|
774
852
|
},
|
|
775
|
-
{
|
|
776
|
-
name: "[Gen 8] Almost Any Ability",
|
|
777
|
-
desc: `Pokémon have access to almost any ability.`,
|
|
778
|
-
threads: [
|
|
779
|
-
`• <a href="https://www.smogon.com/forums/threads/3656414/">Almost Any Ability</a>`,
|
|
780
|
-
`• <a href="https://www.smogon.com/forums/threads/3682690/">AAA Resources</a>`,
|
|
781
|
-
],
|
|
782
|
-
mod: 'gen8',
|
|
783
|
-
ruleset: ['Obtainable', '!Obtainable Abilities', 'Species Clause', 'Nickname Clause', '2 Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Dynamax Clause', 'Sleep Moves Clause', 'Endless Battle Clause'],
|
|
784
|
-
banlist: [
|
|
785
|
-
'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina',
|
|
786
|
-
'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
|
|
787
|
-
'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja',
|
|
788
|
-
'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom',
|
|
789
|
-
'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter',
|
|
790
|
-
'Innards Out', 'Intrepid Sword', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power',
|
|
791
|
-
'Shadow Tag', 'Simple', 'Stakeout', 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
|
|
792
|
-
],
|
|
793
|
-
onValidateSet(set) {
|
|
794
|
-
// Temporary fix until battle-only is implemented properly
|
|
795
|
-
if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
|
|
796
|
-
return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
|
|
797
|
-
}
|
|
798
|
-
if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
|
|
799
|
-
return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
|
|
800
|
-
}
|
|
801
|
-
},
|
|
802
|
-
},
|
|
803
853
|
{
|
|
804
854
|
name: "[Gen 8] STABmons",
|
|
805
855
|
desc: `Pokémon can use any move of their typing, in addition to the moves they can normally learn.`,
|
|
806
856
|
threads: [
|
|
807
857
|
`• <a href="https://www.smogon.com/forums/threads/3656429/">STABmons</a>`,
|
|
858
|
+
`• <a href="https://www.smogon.com/forums/threads/3695169/">STABmons Resources</a>`,
|
|
808
859
|
],
|
|
809
860
|
mod: 'gen8',
|
|
810
|
-
ruleset: ['Standard', 'STABmons Move Legality', 'Dynamax Clause', 'Sleep Moves Clause'],
|
|
861
|
+
ruleset: ['Standard', 'STABmons Move Legality', 'Dynamax Clause', 'Sleep Moves Clause', '!Sleep Clause Mod'],
|
|
811
862
|
banlist: [
|
|
812
|
-
'Aegislash', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite',
|
|
813
|
-
'Garchomp', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Kyurem-Black',
|
|
814
|
-
'
|
|
815
|
-
'
|
|
816
|
-
'
|
|
817
|
-
'Power Construct', 'Shadow Tag', 'King\'s Rock',
|
|
863
|
+
'Aegislash', 'Blacephalon', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite',
|
|
864
|
+
'Eternatus', 'Genesect', 'Garchomp', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Kyurem-Black',
|
|
865
|
+
'Kyurem-White', 'Landorus', 'Landorus-Therian', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings',
|
|
866
|
+
'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Reshiram', 'Silvally', 'Solgaleo', 'Spectrier', 'Tapu Bulu',
|
|
867
|
+
'Tapu Koko', 'Thundurus-Base', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
|
|
868
|
+
'Zapdos-Galar', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock',
|
|
869
|
+
'Baton Pass',
|
|
818
870
|
],
|
|
819
871
|
restricted: [
|
|
820
872
|
'Acupressure', 'Astral Barrage', 'Belly Drum', 'Bolt Beak', 'Clangorous Soul', 'Double Iron Bash', 'Electrify', 'Extreme Speed', 'Fishious Rend',
|
|
@@ -846,7 +898,7 @@ exports.Formats = [
|
|
|
846
898
|
banlist: [
|
|
847
899
|
'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
|
|
848
900
|
'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power',
|
|
849
|
-
'Shadow Tag', 'Baton Pass',
|
|
901
|
+
'Shadow Tag', 'Swift Swim', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Baton Pass',
|
|
850
902
|
],
|
|
851
903
|
onValidateTeam(team) {
|
|
852
904
|
const gods = new Set();
|
|
@@ -928,7 +980,8 @@ exports.Formats = [
|
|
|
928
980
|
name: "[Gen 8 BDSP] OU",
|
|
929
981
|
threads: [
|
|
930
982
|
`• <a href="https://www.smogon.com/forums/threads/3693629/">BDSP OU Metagame Discussion</a>`,
|
|
931
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
983
|
+
`• <a href="https://www.smogon.com/forums/threads/3693721/">BDSP OU Sample Teams</a>`,
|
|
984
|
+
`• <a href="https://www.smogon.com/forums/threads/3696088/">BDSP OU Viability Rankings</a>`,
|
|
932
985
|
],
|
|
933
986
|
mod: 'gen8bdsp',
|
|
934
987
|
ruleset: ['Standard'],
|
|
@@ -957,9 +1010,31 @@ exports.Formats = [
|
|
|
957
1010
|
},
|
|
958
1011
|
{
|
|
959
1012
|
name: "[Gen 8 BDSP] RU",
|
|
1013
|
+
threads: [
|
|
1014
|
+
`• <a href="https://www.smogon.com/forums/threads/3695563/">BDSP RU</a>`,
|
|
1015
|
+
],
|
|
960
1016
|
mod: 'gen8bdsp',
|
|
961
1017
|
ruleset: ['[Gen 8 BDSP] UU'],
|
|
962
|
-
banlist: ['UU', 'RUBL'],
|
|
1018
|
+
banlist: ['UU', 'RUBL', 'Drought'],
|
|
1019
|
+
},
|
|
1020
|
+
{
|
|
1021
|
+
name: "[Gen 8 BDSP] NU",
|
|
1022
|
+
threads: [
|
|
1023
|
+
`• <a href="https://www.smogon.com/forums/threads/3697080/">BDSP NU</a>`,
|
|
1024
|
+
],
|
|
1025
|
+
mod: 'gen8bdsp',
|
|
1026
|
+
searchShow: false,
|
|
1027
|
+
ruleset: ['[Gen 8 BDSP] RU'],
|
|
1028
|
+
banlist: ['RU', 'NUBL'],
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
name: "[Gen 8 BDSP] LC",
|
|
1032
|
+
threads: [
|
|
1033
|
+
`• <a href="https://www.smogon.com/forums/threads/3696004/">BDSP LC</a>`,
|
|
1034
|
+
],
|
|
1035
|
+
mod: 'gen8bdsp',
|
|
1036
|
+
ruleset: ['Little Cup', 'Standard'],
|
|
1037
|
+
banlist: ['Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma', 'Moody', 'Baton Pass'],
|
|
963
1038
|
},
|
|
964
1039
|
{
|
|
965
1040
|
name: "[Gen 8 BDSP] Monotype",
|
|
@@ -1023,6 +1098,38 @@ exports.Formats = [
|
|
|
1023
1098
|
section: "Challengeable OMs",
|
|
1024
1099
|
column: 2,
|
|
1025
1100
|
},
|
|
1101
|
+
{
|
|
1102
|
+
name: "[Gen 8] Camomons",
|
|
1103
|
+
desc: `Pokémon change type to match their first two moves.`,
|
|
1104
|
+
threads: [
|
|
1105
|
+
`• <a href="https://www.smogon.com/forums/threads/3656413/">Camomons</a>`,
|
|
1106
|
+
],
|
|
1107
|
+
mod: 'gen8',
|
|
1108
|
+
searchShow: false,
|
|
1109
|
+
ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Dynamax Clause', 'Sleep Clause Mod', 'Endless Battle Clause'],
|
|
1110
|
+
banlist: [
|
|
1111
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin',
|
|
1112
|
+
'Groudon', 'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia',
|
|
1113
|
+
'Lunala', 'Marshadow', 'Mew', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
|
|
1114
|
+
'Reuniclus', 'Shedinja', 'Slowking-Galar', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Volcarona', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
|
|
1115
|
+
'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
|
|
1116
|
+
],
|
|
1117
|
+
onModifySpeciesPriority: 2,
|
|
1118
|
+
onModifySpecies(species, target, source, effect) {
|
|
1119
|
+
if (!target)
|
|
1120
|
+
return; // Chat command
|
|
1121
|
+
if (effect && ['imposter', 'transform'].includes(effect.id))
|
|
1122
|
+
return;
|
|
1123
|
+
const types = [...new Set(target.baseMoveSlots.slice(0, 2).map(move => this.dex.moves.get(move.id).type))];
|
|
1124
|
+
return { ...species, types: types };
|
|
1125
|
+
},
|
|
1126
|
+
onSwitchIn(pokemon) {
|
|
1127
|
+
this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
|
|
1128
|
+
},
|
|
1129
|
+
onAfterMega(pokemon) {
|
|
1130
|
+
this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
|
|
1131
|
+
},
|
|
1132
|
+
},
|
|
1026
1133
|
{
|
|
1027
1134
|
name: "[Gen 8] Inheritance",
|
|
1028
1135
|
desc: `Pokémon may use the ability and moves of another, as long as they forfeit their own learnset.`,
|
|
@@ -1471,6 +1578,53 @@ exports.Formats = [
|
|
|
1471
1578
|
},
|
|
1472
1579
|
},
|
|
1473
1580
|
},
|
|
1581
|
+
{
|
|
1582
|
+
name: "[Gen 8] Pokebilities",
|
|
1583
|
+
desc: `Pokémon have all of their released abilities simultaneously.`,
|
|
1584
|
+
threads: [
|
|
1585
|
+
`• <a href="https://www.smogon.com/forums/threads/3679692/">Pokébilities</a>`,
|
|
1586
|
+
],
|
|
1587
|
+
mod: 'pokebilities',
|
|
1588
|
+
searchShow: false,
|
|
1589
|
+
ruleset: ['Standard', 'Dynamax Clause'],
|
|
1590
|
+
banlist: [
|
|
1591
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Conkeldurr', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dracozolt',
|
|
1592
|
+
'Eternatus', 'Excadrill', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black',
|
|
1593
|
+
'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings',
|
|
1594
|
+
'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base',
|
|
1595
|
+
'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zygarde-Base', 'Power Construct',
|
|
1596
|
+
'Baton Pass', 'King\'s Rock',
|
|
1597
|
+
// Moody users
|
|
1598
|
+
'Glalie', 'Octillery', 'Remoraid', 'Snorunt',
|
|
1599
|
+
// Shadow Tag/Arena Trap
|
|
1600
|
+
'Diglett-Base', 'Dugtrio-Base', 'Gothita', 'Gothitelle', 'Gothorita', 'Trapinch', 'Wobbuffet', 'Wynaut',
|
|
1601
|
+
],
|
|
1602
|
+
onBegin() {
|
|
1603
|
+
for (const pokemon of this.getAllPokemon()) {
|
|
1604
|
+
if (pokemon.ability === this.toID(pokemon.species.abilities['S'])) {
|
|
1605
|
+
continue;
|
|
1606
|
+
}
|
|
1607
|
+
pokemon.m.innates = Object.keys(pokemon.species.abilities)
|
|
1608
|
+
.filter(key => key !== 'S' && (key !== 'H' || !pokemon.species.unreleasedHidden))
|
|
1609
|
+
.map(key => this.toID(pokemon.species.abilities[key]))
|
|
1610
|
+
.filter(ability => ability !== pokemon.ability);
|
|
1611
|
+
}
|
|
1612
|
+
},
|
|
1613
|
+
onSwitchInPriority: 2,
|
|
1614
|
+
onSwitchIn(pokemon) {
|
|
1615
|
+
if (pokemon.m.innates) {
|
|
1616
|
+
for (const innate of pokemon.m.innates) {
|
|
1617
|
+
pokemon.addVolatile("ability:" + innate, pokemon);
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
},
|
|
1621
|
+
onAfterMega(pokemon) {
|
|
1622
|
+
for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
|
|
1623
|
+
pokemon.removeVolatile(innate);
|
|
1624
|
+
}
|
|
1625
|
+
pokemon.m.innates = undefined;
|
|
1626
|
+
},
|
|
1627
|
+
},
|
|
1474
1628
|
{
|
|
1475
1629
|
name: "[Gen 8] Shared Power",
|
|
1476
1630
|
desc: `Once a Pokémon switches in, its ability is shared with the rest of the team.`,
|
|
@@ -1657,106 +1811,6 @@ exports.Formats = [
|
|
|
1657
1811
|
},
|
|
1658
1812
|
},
|
|
1659
1813
|
},
|
|
1660
|
-
{
|
|
1661
|
-
name: "[Gen 8] Trademarked",
|
|
1662
|
-
desc: `Sacrifice your Pokémon's ability for a status move that activates on switch-in.`,
|
|
1663
|
-
threads: [
|
|
1664
|
-
`• <a href="https://www.smogon.com/forums/threads/3656980/">Trademarked</a>`,
|
|
1665
|
-
],
|
|
1666
|
-
mod: 'gen8',
|
|
1667
|
-
searchShow: false,
|
|
1668
|
-
ruleset: ['Standard', 'Dynamax Clause'],
|
|
1669
|
-
banlist: [
|
|
1670
|
-
'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Kyurem-Black', 'Kyurem-White',
|
|
1671
|
-
'Giratina', 'Giratina-Origin', 'Genesect', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
|
|
1672
|
-
'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
|
|
1673
|
-
'Solgaleo', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base',
|
|
1674
|
-
'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
|
|
1675
|
-
],
|
|
1676
|
-
restricted: [
|
|
1677
|
-
'Baneful Bunker', 'Block', 'Copycat', 'Corrosive Gas', 'Detect', 'Destiny Bond', 'Disable', 'Encore', 'Fairy Lock', 'Hypnosis', 'Ingrain',
|
|
1678
|
-
'Instruct', 'Lovely Kiss', 'King\'s Shield', 'Mat Block', 'Mean Look', 'move:Metronome', 'Obstruct', 'Octolock', 'Nature Power', 'Parting Shot',
|
|
1679
|
-
'Psycho Shift', 'Protect', 'Roar', 'Sing', 'Skill Swap', 'Sleep Powder', 'Sleep Talk', 'Spiky Shield', 'Spore', 'Substitute', 'Teleport',
|
|
1680
|
-
'Whirlwind', 'Wish', 'Yawn',
|
|
1681
|
-
],
|
|
1682
|
-
onValidateTeam(team, format, teamHas) {
|
|
1683
|
-
const problems = [];
|
|
1684
|
-
for (const trademark in teamHas.trademarks) {
|
|
1685
|
-
if (teamHas.trademarks[trademark] > 1) {
|
|
1686
|
-
problems.push(`You are limited to 1 of each Trademark.`, `(You have ${teamHas.trademarks[trademark]} Pok\u00e9mon with ${trademark} as a Trademark.)`);
|
|
1687
|
-
}
|
|
1688
|
-
}
|
|
1689
|
-
return problems;
|
|
1690
|
-
},
|
|
1691
|
-
validateSet(set, teamHas) {
|
|
1692
|
-
const dex = this.dex;
|
|
1693
|
-
const ability = dex.moves.get(set.ability);
|
|
1694
|
-
if (!ability.exists) { // Not even a real move
|
|
1695
|
-
return this.validateSet(set, teamHas);
|
|
1696
|
-
}
|
|
1697
|
-
// Absolute trademark bans
|
|
1698
|
-
if (ability.category !== 'Status') {
|
|
1699
|
-
return [`${ability.name} is not a status move, and cannot be used as a trademark.`];
|
|
1700
|
-
}
|
|
1701
|
-
if (ability.forceSwitch || ability.selfSwitch) {
|
|
1702
|
-
return [
|
|
1703
|
-
`Force-switching and self-switching moves are banned from being used as trademarks.`,
|
|
1704
|
-
`(${ability.name} is a ${ability.forceSwitch ? 'force' : 'self'}-switching move.)`,
|
|
1705
|
-
];
|
|
1706
|
-
}
|
|
1707
|
-
const irrevokablyRestricted = [
|
|
1708
|
-
'Assist', 'Copycat', 'Metronome', 'Mirror Move', 'Sleep Talk',
|
|
1709
|
-
'Skill Swap', // Self-propagates indefinitely
|
|
1710
|
-
];
|
|
1711
|
-
if (irrevokablyRestricted.includes(ability.name)) {
|
|
1712
|
-
return [`${ability.name} cannot safely function as a trademark.`];
|
|
1713
|
-
}
|
|
1714
|
-
// Contingent trademark bans
|
|
1715
|
-
if (this.ruleTable.isRestricted(`move:${ability.id}`)) {
|
|
1716
|
-
return [`${ability.name} is restricted from being used as a trademark.`];
|
|
1717
|
-
}
|
|
1718
|
-
if (set.moves.map(this.toID).includes(ability.id)) {
|
|
1719
|
-
return [`${set.name} may not use ${ability.name} as both a trademark and one of its moves simultaneously.`];
|
|
1720
|
-
}
|
|
1721
|
-
const customRules = this.format.customRules || [];
|
|
1722
|
-
if (!customRules.includes('!obtainableabilities'))
|
|
1723
|
-
customRules.push('!obtainableabilities');
|
|
1724
|
-
const TeamValidator = require('../sim/team-validator').TeamValidator;
|
|
1725
|
-
const validator = new TeamValidator(dex.formats.get(`${this.format.id}@@@${customRules.join(',')}`));
|
|
1726
|
-
const moves = set.moves;
|
|
1727
|
-
set.moves = [ability.id];
|
|
1728
|
-
set.ability = dex.species.get(set.species).abilities['0'];
|
|
1729
|
-
let problems = validator.validateSet(set, {}) || [];
|
|
1730
|
-
if (problems.length)
|
|
1731
|
-
return problems;
|
|
1732
|
-
set.moves = moves;
|
|
1733
|
-
set.ability = dex.species.get(set.species).abilities['0'];
|
|
1734
|
-
problems = problems.concat(validator.validateSet(set, teamHas) || []);
|
|
1735
|
-
set.ability = ability.id;
|
|
1736
|
-
if (!teamHas.trademarks)
|
|
1737
|
-
teamHas.trademarks = {};
|
|
1738
|
-
teamHas.trademarks[ability.name] = (teamHas.trademarks[ability.name] || 0) + 1;
|
|
1739
|
-
return problems.length ? problems : null;
|
|
1740
|
-
},
|
|
1741
|
-
pokemon: {
|
|
1742
|
-
getAbility() {
|
|
1743
|
-
const move = this.battle.dex.moves.get(this.battle.toID(this.ability));
|
|
1744
|
-
if (!move.exists)
|
|
1745
|
-
return Object.getPrototypeOf(this).getAbility.call(this);
|
|
1746
|
-
return {
|
|
1747
|
-
id: move.id,
|
|
1748
|
-
name: move.name,
|
|
1749
|
-
onStart(pokemon) {
|
|
1750
|
-
this.add('-activate', pokemon, 'ability: ' + move.name);
|
|
1751
|
-
this.actions.useMove(move, pokemon);
|
|
1752
|
-
},
|
|
1753
|
-
toString() {
|
|
1754
|
-
return "";
|
|
1755
|
-
},
|
|
1756
|
-
};
|
|
1757
|
-
},
|
|
1758
|
-
},
|
|
1759
|
-
},
|
|
1760
1814
|
// Randomized Metas
|
|
1761
1815
|
///////////////////////////////////////////////////////////////////
|
|
1762
1816
|
{
|
|
@@ -1864,7 +1918,8 @@ exports.Formats = [
|
|
|
1864
1918
|
desc: `Randomized teams of level-balanced Pokémon with absolutely any ability, moves, and item.`,
|
|
1865
1919
|
mod: 'gen8',
|
|
1866
1920
|
team: 'randomHC',
|
|
1867
|
-
ruleset: ['
|
|
1921
|
+
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
1922
|
+
banlist: ['Nonexistent'],
|
|
1868
1923
|
},
|
|
1869
1924
|
{
|
|
1870
1925
|
name: "[Gen 8] Doubles Hackmons Cup",
|
|
@@ -1872,7 +1927,8 @@ exports.Formats = [
|
|
|
1872
1927
|
gameType: 'doubles',
|
|
1873
1928
|
team: 'randomHC',
|
|
1874
1929
|
searchShow: false,
|
|
1875
|
-
ruleset: ['
|
|
1930
|
+
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
1931
|
+
banlist: ['Nonexistent'],
|
|
1876
1932
|
},
|
|
1877
1933
|
{
|
|
1878
1934
|
name: "[Gen 8] CAP 1v1",
|
|
@@ -1941,6 +1997,7 @@ exports.Formats = [
|
|
|
1941
1997
|
team: 'randomHC',
|
|
1942
1998
|
searchShow: false,
|
|
1943
1999
|
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
2000
|
+
banlist: ['Nonexistent'],
|
|
1944
2001
|
},
|
|
1945
2002
|
{
|
|
1946
2003
|
name: "[Gen 7 Let's Go] Random Battle",
|
|
@@ -2007,6 +2064,7 @@ exports.Formats = [
|
|
|
2007
2064
|
team: 'randomHC',
|
|
2008
2065
|
searchShow: false,
|
|
2009
2066
|
ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Desync Clause Mod', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Team Type Preview'],
|
|
2067
|
+
banlist: ['Nonexistent'],
|
|
2010
2068
|
onModifySpecies(species, target, source, effect) {
|
|
2011
2069
|
if (!target)
|
|
2012
2070
|
return;
|
|
@@ -2028,37 +2086,36 @@ exports.Formats = [
|
|
|
2028
2086
|
column: 3,
|
|
2029
2087
|
},
|
|
2030
2088
|
{
|
|
2031
|
-
name: "[Gen
|
|
2032
|
-
threads: [
|
|
2033
|
-
|
|
2089
|
+
name: "[Gen 3] UU",
|
|
2090
|
+
threads: [
|
|
2091
|
+
`• <a href="https://www.smogon.com/forums/threads/3585923/">ADV UU Metagame Discussion</a>`,
|
|
2092
|
+
`• <a href="https://www.smogon.com/forums/threads/3548578/">ADV UU Viability Rankings</a>`,
|
|
2093
|
+
],
|
|
2094
|
+
mod: 'gen3',
|
|
2034
2095
|
// searchShow: false,
|
|
2035
|
-
ruleset: ['
|
|
2036
|
-
banlist: ['OU', 'UUBL'],
|
|
2096
|
+
ruleset: ['Standard', 'NFE Clause'],
|
|
2097
|
+
banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Baton Pass'],
|
|
2098
|
+
unbanlist: ['Scyther', 'Sand Veil'],
|
|
2037
2099
|
},
|
|
2038
2100
|
{
|
|
2039
|
-
name: "[Gen
|
|
2101
|
+
name: "[Gen 1] NU",
|
|
2040
2102
|
threads: [
|
|
2041
|
-
`• <a href="https://www.smogon.com/forums/
|
|
2042
|
-
`• <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Rankings</a>`,
|
|
2103
|
+
`• <a href="https://www.smogon.com/forums/threads/3668913/">RBY NU Viability Rankings</a>`,
|
|
2043
2104
|
],
|
|
2044
|
-
mod: '
|
|
2105
|
+
mod: 'gen1',
|
|
2045
2106
|
// searchShow: false,
|
|
2046
|
-
ruleset: ['[Gen
|
|
2047
|
-
banlist: ['
|
|
2107
|
+
ruleset: ['[Gen 1] UU'],
|
|
2108
|
+
banlist: ['UU', 'NUBL'],
|
|
2048
2109
|
},
|
|
2049
2110
|
{
|
|
2050
|
-
name: "[Gen
|
|
2111
|
+
name: "[Gen 4] Ubers",
|
|
2051
2112
|
threads: [
|
|
2052
|
-
`• <a href="https://www.smogon.com/forums/posts/
|
|
2053
|
-
`• <a href="https://www.smogon.com/forums/threads/3485860/">BW2 LC Viability Rankings</a>`,
|
|
2113
|
+
`• <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
|
|
2054
2114
|
],
|
|
2055
|
-
mod: '
|
|
2115
|
+
mod: 'gen4',
|
|
2056
2116
|
// searchShow: false,
|
|
2057
|
-
ruleset: ['Standard'
|
|
2058
|
-
banlist: [
|
|
2059
|
-
'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma',
|
|
2060
|
-
'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger',
|
|
2061
|
-
],
|
|
2117
|
+
ruleset: ['Standard'],
|
|
2118
|
+
banlist: ['AG'],
|
|
2062
2119
|
},
|
|
2063
2120
|
// Past Gens OU
|
|
2064
2121
|
///////////////////////////////////////////////////////////////////
|
|
@@ -2095,8 +2152,8 @@ exports.Formats = [
|
|
|
2095
2152
|
`• <a href="https://www.smogon.com/forums/threads/3668699/">BW2 OU Viability Rankings</a>`,
|
|
2096
2153
|
],
|
|
2097
2154
|
mod: 'gen5',
|
|
2098
|
-
ruleset: ['Standard', 'Evasion Abilities Clause', '
|
|
2099
|
-
banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist'],
|
|
2155
|
+
ruleset: ['Standard', 'Evasion Abilities Clause', 'Sleep Moves Clause', 'Swagger Clause'],
|
|
2156
|
+
banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist', 'Baton Pass'],
|
|
2100
2157
|
},
|
|
2101
2158
|
{
|
|
2102
2159
|
name: "[Gen 4] OU",
|
|
@@ -2107,7 +2164,7 @@ exports.Formats = [
|
|
|
2107
2164
|
],
|
|
2108
2165
|
mod: 'gen4',
|
|
2109
2166
|
ruleset: ['Standard'],
|
|
2110
|
-
banlist: ['AG', 'Uber', 'Arena Trap', 'Sand Veil', 'Swinub + Snow Cloak', 'Piloswine + Snow Cloak', 'Mamoswine + Snow Cloak', 'Soul Dew', 'Baton Pass'],
|
|
2167
|
+
banlist: ['AG', 'Uber', 'Arena Trap', 'Sand Veil', 'Swinub + Snow Cloak', 'Piloswine + Snow Cloak', 'Mamoswine + Snow Cloak', 'Soul Dew', 'Baton Pass', 'Swagger'],
|
|
2111
2168
|
},
|
|
2112
2169
|
{
|
|
2113
2170
|
name: "[Gen 3] OU",
|
|
@@ -2117,7 +2174,7 @@ exports.Formats = [
|
|
|
2117
2174
|
],
|
|
2118
2175
|
mod: 'gen3',
|
|
2119
2176
|
ruleset: ['Standard', 'One Boost Passer Clause'],
|
|
2120
|
-
banlist: ['Uber', 'Sand Veil', 'Assist', 'Smeargle + Ingrain'],
|
|
2177
|
+
banlist: ['Uber', 'Sand Veil', 'Assist', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain'],
|
|
2121
2178
|
},
|
|
2122
2179
|
{
|
|
2123
2180
|
name: "[Gen 2] OU",
|
|
@@ -2261,6 +2318,15 @@ exports.Formats = [
|
|
|
2261
2318
|
mod: 'gen6',
|
|
2262
2319
|
ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'],
|
|
2263
2320
|
},
|
|
2321
|
+
{
|
|
2322
|
+
name: "[Gen 5] ZU",
|
|
2323
|
+
threads: [
|
|
2324
|
+
`• <a href="https://www.smogon.com/forums/posts/8034680/">BW2 ZU</a>`,
|
|
2325
|
+
],
|
|
2326
|
+
mod: 'gen5',
|
|
2327
|
+
ruleset: ['[Gen 5] PU'],
|
|
2328
|
+
banlist: ['PU', 'Dragonair', 'Glalie', 'Machoke', 'Marowak', 'Omanyte', 'Regigigas', 'Trubbish', 'Whirlipede', 'Baton Pass'],
|
|
2329
|
+
},
|
|
2264
2330
|
// US/UM Singles
|
|
2265
2331
|
///////////////////////////////////////////////////////////////////
|
|
2266
2332
|
{
|
|
@@ -2843,6 +2909,17 @@ exports.Formats = [
|
|
|
2843
2909
|
banlist: ['UU', 'RUBL', 'Shadow Tag', 'Shell Smash + Baton Pass'],
|
|
2844
2910
|
unbanlist: ['Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
|
|
2845
2911
|
},
|
|
2912
|
+
{
|
|
2913
|
+
name: "[Gen 5] NU",
|
|
2914
|
+
threads: [
|
|
2915
|
+
`• <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
|
|
2916
|
+
`• <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Rankings</a>`,
|
|
2917
|
+
],
|
|
2918
|
+
mod: 'gen5',
|
|
2919
|
+
searchShow: false,
|
|
2920
|
+
ruleset: ['[Gen 5] RU', '!Sleep Moves Clause', 'Sleep Clause Mod'],
|
|
2921
|
+
banlist: ['RU', 'NUBL', 'Assist', 'Copycat'],
|
|
2922
|
+
},
|
|
2846
2923
|
{
|
|
2847
2924
|
name: "[Gen 5] PU",
|
|
2848
2925
|
threads: [
|
|
@@ -2851,7 +2928,21 @@ exports.Formats = [
|
|
|
2851
2928
|
mod: 'gen5',
|
|
2852
2929
|
searchShow: false,
|
|
2853
2930
|
ruleset: ['[Gen 5] NU', 'Sleep Moves Clause'],
|
|
2854
|
-
banlist: ['NU', '
|
|
2931
|
+
banlist: ['NU', 'PUBL'],
|
|
2932
|
+
},
|
|
2933
|
+
{
|
|
2934
|
+
name: "[Gen 5] LC",
|
|
2935
|
+
threads: [
|
|
2936
|
+
`• <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
|
|
2937
|
+
`• <a href="https://www.smogon.com/forums/threads/3485860/">BW2 LC Viability Rankings</a>`,
|
|
2938
|
+
],
|
|
2939
|
+
mod: 'gen5',
|
|
2940
|
+
searchShow: false,
|
|
2941
|
+
ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
|
|
2942
|
+
banlist: [
|
|
2943
|
+
'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma',
|
|
2944
|
+
'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger',
|
|
2945
|
+
],
|
|
2855
2946
|
},
|
|
2856
2947
|
{
|
|
2857
2948
|
name: "[Gen 5] Monotype",
|
|
@@ -2963,16 +3054,6 @@ exports.Formats = [
|
|
|
2963
3054
|
section: "DPP Singles",
|
|
2964
3055
|
column: 5,
|
|
2965
3056
|
},
|
|
2966
|
-
{
|
|
2967
|
-
name: "[Gen 4] Ubers",
|
|
2968
|
-
threads: [
|
|
2969
|
-
`• <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
|
|
2970
|
-
],
|
|
2971
|
-
mod: 'gen4',
|
|
2972
|
-
searchShow: false,
|
|
2973
|
-
ruleset: ['Standard'],
|
|
2974
|
-
banlist: ['AG'],
|
|
2975
|
-
},
|
|
2976
3057
|
{
|
|
2977
3058
|
name: "[Gen 4] UU",
|
|
2978
3059
|
threads: [
|
|
@@ -2983,7 +3064,7 @@ exports.Formats = [
|
|
|
2983
3064
|
searchShow: false,
|
|
2984
3065
|
ruleset: ['[Gen 4] OU'],
|
|
2985
3066
|
banlist: ['OU', 'UUBL'],
|
|
2986
|
-
unbanlist: ['Arena Trap'],
|
|
3067
|
+
unbanlist: ['Arena Trap', 'Swagger'],
|
|
2987
3068
|
},
|
|
2988
3069
|
{
|
|
2989
3070
|
name: "[Gen 4] NU",
|
|
@@ -3040,7 +3121,7 @@ exports.Formats = [
|
|
|
3040
3121
|
'[Gen 4] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
|
|
3041
3122
|
],
|
|
3042
3123
|
banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Shaymin', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
|
|
3043
|
-
unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil'],
|
|
3124
|
+
unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil', 'Swagger'],
|
|
3044
3125
|
},
|
|
3045
3126
|
{
|
|
3046
3127
|
name: "[Gen 4] Anything Goes",
|
|
@@ -3071,7 +3152,7 @@ exports.Formats = [
|
|
|
3071
3152
|
searchShow: false,
|
|
3072
3153
|
ruleset: ['[Gen 4] OU'],
|
|
3073
3154
|
banlist: ['Explosion'],
|
|
3074
|
-
unbanlist: ['Garchomp', 'Latias', 'Latios', 'Manaphy', 'Mew', 'Salamence', 'Wobbuffet', 'Wynaut'],
|
|
3155
|
+
unbanlist: ['Garchomp', 'Latias', 'Latios', 'Manaphy', 'Mew', 'Salamence', 'Wobbuffet', 'Wynaut', 'Swagger'],
|
|
3075
3156
|
},
|
|
3076
3157
|
{
|
|
3077
3158
|
name: "[Gen 4] VGC 2010",
|
|
@@ -3113,21 +3194,9 @@ exports.Formats = [
|
|
|
3113
3194
|
],
|
|
3114
3195
|
mod: 'gen3',
|
|
3115
3196
|
searchShow: false,
|
|
3116
|
-
ruleset: ['Standard', 'Deoxys Camouflage Clause'],
|
|
3197
|
+
ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'],
|
|
3117
3198
|
banlist: ['Wobbuffet + Leftovers'],
|
|
3118
3199
|
},
|
|
3119
|
-
{
|
|
3120
|
-
name: "[Gen 3] UU",
|
|
3121
|
-
threads: [
|
|
3122
|
-
`• <a href="https://www.smogon.com/forums/threads/3585923/">ADV UU Metagame Discussion</a>`,
|
|
3123
|
-
`• <a href="https://www.smogon.com/forums/threads/3548578/">ADV UU Viability Rankings</a>`,
|
|
3124
|
-
],
|
|
3125
|
-
mod: 'gen3',
|
|
3126
|
-
searchShow: false,
|
|
3127
|
-
ruleset: ['Standard', 'NFE Clause'],
|
|
3128
|
-
banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Baton Pass'],
|
|
3129
|
-
unbanlist: ['Scyther', 'Sand Veil'],
|
|
3130
|
-
},
|
|
3131
3200
|
{
|
|
3132
3201
|
name: "[Gen 3] NU",
|
|
3133
3202
|
threads: [
|
|
@@ -3191,6 +3260,14 @@ exports.Formats = [
|
|
|
3191
3260
|
searchShow: false,
|
|
3192
3261
|
ruleset: ['Standard'],
|
|
3193
3262
|
},
|
|
3263
|
+
{
|
|
3264
|
+
name: "[Gen 2] UU",
|
|
3265
|
+
threads: [`• <a href="https://www.smogon.com/forums/threads/3576710/">GSC UU</a>`],
|
|
3266
|
+
mod: 'gen2',
|
|
3267
|
+
searchShow: false,
|
|
3268
|
+
ruleset: ['[Gen 2] OU'],
|
|
3269
|
+
banlist: ['OU', 'UUBL'],
|
|
3270
|
+
},
|
|
3194
3271
|
{
|
|
3195
3272
|
name: "[Gen 2] NU",
|
|
3196
3273
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3642565/">GSC NU</a>`],
|
|
@@ -3208,7 +3285,10 @@ exports.Formats = [
|
|
|
3208
3285
|
'Picked Team Size = 1', 'Max Team Size = 3',
|
|
3209
3286
|
'[Gen 2] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
|
|
3210
3287
|
],
|
|
3211
|
-
banlist: [
|
|
3288
|
+
banlist: [
|
|
3289
|
+
'Clefable', 'Snorlax', 'Zapdos', 'Berserk Gene', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Quick Claw',
|
|
3290
|
+
'Attract', 'Destiny Bond', 'Explosion', 'Perish Song', 'Present', 'Self-Destruct', 'Swagger',
|
|
3291
|
+
],
|
|
3212
3292
|
},
|
|
3213
3293
|
{
|
|
3214
3294
|
name: "[Gen 2] Nintendo Cup 2000",
|
|
@@ -3262,16 +3342,6 @@ exports.Formats = [
|
|
|
3262
3342
|
ruleset: ['[Gen 1] OU'],
|
|
3263
3343
|
banlist: ['OU', 'UUBL'],
|
|
3264
3344
|
},
|
|
3265
|
-
{
|
|
3266
|
-
name: "[Gen 1] NU",
|
|
3267
|
-
threads: [
|
|
3268
|
-
`• <a href="https://www.smogon.com/forums/threads/3668913/">RBY NU Viability Rankings</a>`,
|
|
3269
|
-
],
|
|
3270
|
-
mod: 'gen1',
|
|
3271
|
-
searchShow: false,
|
|
3272
|
-
ruleset: ['[Gen 1] UU'],
|
|
3273
|
-
banlist: ['UU', 'NUBL'],
|
|
3274
|
-
},
|
|
3275
3345
|
{
|
|
3276
3346
|
name: "[Gen 1] Japanese OU",
|
|
3277
3347
|
desc: `Generation 1 with Japanese battle mechanics.`,
|