@pkmn/sim 0.5.2 → 0.5.6
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 +410 -311
- 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 +205 -93
- package/build/data/formats-data.js.map +1 -1
- package/build/data/learnsets.js +1 -1
- package/build/data/learnsets.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/gen1/scripts.js +12 -0
- package/build/data/mods/gen1/scripts.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 +44 -19
- 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 +12 -4
- 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 +2 -0
- package/build/sim/global-types.d.ts +2 -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 +418 -316
- package/data/aliases.ts +4 -4
- package/data/formats-data.ts +205 -93
- package/data/learnsets.ts +1 -1
- package/data/mods/gen1/formats-data.ts +190 -190
- package/data/mods/gen1/moves.ts +1 -2
- package/data/mods/gen1/scripts.ts +11 -0
- 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 +43 -19
- 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 +12 -4
- 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 +2 -0
- package/sim/global-types.ts +2 -0
- package/sim/index.ts +1 -0
- package/sim/team-validator.ts +12 -0
package/config/formats.ts
CHANGED
|
@@ -143,7 +143,7 @@ export const Formats: FormatList = [
|
|
|
143
143
|
|
|
144
144
|
mod: 'gen8',
|
|
145
145
|
ruleset: ['[Gen 8] RU'],
|
|
146
|
-
banlist: ['RU', 'NUBL', 'Drizzle', 'Drought'],
|
|
146
|
+
banlist: ['RU', 'NUBL', 'Drizzle', 'Drought', 'Slush Rush'],
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
name: "[Gen 8] PU",
|
|
@@ -208,7 +208,7 @@ export const Formats: FormatList = [
|
|
|
208
208
|
'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Dialga', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Jirachi',
|
|
209
209
|
'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mew', 'Mewtwo', 'Mimikyu', 'Necrozma-Dawn-Wings',
|
|
210
210
|
'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Sableye', 'Snorlax', 'Solgaleo', 'Victini', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
|
|
211
|
-
'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Perish Song',
|
|
211
|
+
'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Power Construct', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Perish Song',
|
|
212
212
|
],
|
|
213
213
|
},
|
|
214
214
|
{
|
|
@@ -234,7 +234,7 @@ export const Formats: FormatList = [
|
|
|
234
234
|
mod: 'gen8',
|
|
235
235
|
ruleset: ['[Gen 8] PU'],
|
|
236
236
|
banlist: [
|
|
237
|
-
'PU', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton', 'Omastar', 'Rotom-Frost',
|
|
237
|
+
'PU', 'Aurorus', 'Centiskorch', 'Drampa', 'Exeggutor-Alola', 'Gallade', 'Haunter', 'Magmortar', 'Magneton', 'Omastar', 'Rotom-Frost',
|
|
238
238
|
'Turtonator', 'Vanilluxe', 'Vikavolt', 'Silvally-Dragon', 'Silvally-Ground', 'Sneasel', 'Damp Rock', 'Grassy Seed',
|
|
239
239
|
],
|
|
240
240
|
},
|
|
@@ -249,9 +249,9 @@ export const Formats: FormatList = [
|
|
|
249
249
|
ruleset: ['[Gen 8] LC'],
|
|
250
250
|
banlist: [
|
|
251
251
|
// LC OU
|
|
252
|
-
'Abra', '
|
|
253
|
-
'Larvesta', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Munchlax', 'Natu', 'Onix', 'Pawniard',
|
|
254
|
-
'Ponyta-Galar', 'Porygon', 'Slowpoke-Base', '
|
|
252
|
+
'Abra', 'Carvanha', 'Croagunk', 'Diglett-Base', 'Dwebble', 'Ferroseed', 'Foongus', 'Frillish', 'Grookey',
|
|
253
|
+
'Koffing', 'Larvesta', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Munchlax', 'Natu', 'Onix', 'Pawniard',
|
|
254
|
+
'Ponyta', 'Ponyta-Galar', 'Porygon', 'Slowpoke-Base', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt', 'Vulpix',
|
|
255
255
|
// LC UUBL
|
|
256
256
|
'Farfetch\u2019d-Galar', 'Scorbunny', 'Shellder', 'Wingull',
|
|
257
257
|
],
|
|
@@ -285,20 +285,9 @@ export const Formats: FormatList = [
|
|
|
285
285
|
name: "[Gen 8] Battle Stadium Singles",
|
|
286
286
|
|
|
287
287
|
mod: 'gen8',
|
|
288
|
-
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit
|
|
288
|
+
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'Limit Two Restricted'],
|
|
289
289
|
restricted: ['Restricted Legendary'],
|
|
290
290
|
},
|
|
291
|
-
{
|
|
292
|
-
name: "[Gen 8] Battle Stadium Singles Series 9",
|
|
293
|
-
threads: [
|
|
294
|
-
`• <a href="https://www.smogon.com/forums/threads/3679374/">BSS Discussion</a>`,
|
|
295
|
-
`• <a href="https://www.smogon.com/forums/threads/3672698/">BSS Viability Rankings</a>`,
|
|
296
|
-
],
|
|
297
|
-
|
|
298
|
-
mod: 'gen8',
|
|
299
|
-
searchShow: false,
|
|
300
|
-
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
|
|
301
|
-
},
|
|
302
291
|
{
|
|
303
292
|
name: "[Gen 8] Custom Game",
|
|
304
293
|
|
|
@@ -372,35 +361,15 @@ export const Formats: FormatList = [
|
|
|
372
361
|
banlist: ['Corsola-Galar', 'Cutiefly', 'Ponyta-Base', 'Scyther', 'Sneasel', 'Swirlix', 'Tangela', 'Vulpix', 'Vulpix-Alola'],
|
|
373
362
|
},
|
|
374
363
|
{
|
|
375
|
-
name: "[Gen 8] VGC
|
|
376
|
-
threads: [
|
|
377
|
-
`• <a href="https://www.smogon.com/forums/threads/3677186/">VGC 2021 Series 11 Metagame Discussion</a>`,
|
|
378
|
-
`• <a href="https://www.smogon.com/forums/threads/3693427/">VGC 2021 Series 11 Sample Teams</a>`,
|
|
379
|
-
`• <a href="https://www.smogon.com/forums/threads/3693284/">VGC 2021 Series 11 Viability Rankings</a>`,
|
|
380
|
-
],
|
|
364
|
+
name: "[Gen 8] VGC 2022",
|
|
381
365
|
|
|
382
366
|
mod: 'gen8',
|
|
383
367
|
gameType: 'doubles',
|
|
384
|
-
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer', 'Limit
|
|
368
|
+
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8', 'VGC Timer', 'Limit Two Restricted'],
|
|
385
369
|
restricted: ['Restricted Legendary'],
|
|
386
370
|
},
|
|
387
371
|
{
|
|
388
|
-
name: "[Gen 8]
|
|
389
|
-
threads: [
|
|
390
|
-
`• <a href="https://www.smogon.com/forums/threads/3694047/">Tiny Tourney Metagame Discussion</a>`,
|
|
391
|
-
],
|
|
392
|
-
|
|
393
|
-
mod: 'gen8',
|
|
394
|
-
gameType: 'doubles',
|
|
395
|
-
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 8'],
|
|
396
|
-
onValidateSet(set) {
|
|
397
|
-
const species = this.dex.species.get(set.species);
|
|
398
|
-
if (!species.nfe || species.prevo) return [`Non-first-stage Pok\u00e9mon cannot be used in Tiny Tourney.`];
|
|
399
|
-
if (species.heightm > 1) return [`${species.name} is too tall to be used in Tiny Tourney.`];
|
|
400
|
-
},
|
|
401
|
-
},
|
|
402
|
-
{
|
|
403
|
-
name: "[Gen 8] VGC 2021 Series 9",
|
|
372
|
+
name: "[Gen 8] VGC 2021",
|
|
404
373
|
|
|
405
374
|
mod: 'gen8',
|
|
406
375
|
gameType: 'doubles',
|
|
@@ -506,13 +475,15 @@ export const Formats: FormatList = [
|
|
|
506
475
|
mod: 'gen8',
|
|
507
476
|
ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
|
|
508
477
|
banlist: [
|
|
509
|
-
'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai',
|
|
510
|
-
'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus',
|
|
511
|
-
'
|
|
512
|
-
'
|
|
513
|
-
'
|
|
514
|
-
'
|
|
515
|
-
'
|
|
478
|
+
'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai',
|
|
479
|
+
'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus',
|
|
480
|
+
'Genesect', 'Gengar-Mega', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black',
|
|
481
|
+
'Kyurem-White', 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Metagross-Mega', 'Mewtwo',
|
|
482
|
+
'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
|
|
483
|
+
'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
|
|
484
|
+
'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete', 'Arena Trap', 'Moody',
|
|
485
|
+
'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang',
|
|
486
|
+
'Quick Claw', 'Baton Pass',
|
|
516
487
|
],
|
|
517
488
|
},
|
|
518
489
|
{
|
|
@@ -527,22 +498,25 @@ export const Formats: FormatList = [
|
|
|
527
498
|
ruleset: ['[Gen 8] National Dex'],
|
|
528
499
|
banlist: [
|
|
529
500
|
// National Dex OU
|
|
530
|
-
'
|
|
531
|
-
'
|
|
532
|
-
'
|
|
533
|
-
'
|
|
534
|
-
'Weavile', 'Zapdos-Base',
|
|
501
|
+
'Blissey', 'Chansey', 'Charizard-Mega-X', 'Charizard-Mega-Y', 'Clefable', 'Corviknight', 'Diancie-Mega', 'Excadrill',
|
|
502
|
+
'Ferrothorn', 'Garchomp', 'Gliscor', 'Greninja', 'Heatran', 'Kartana', 'Kommo-o', 'Kyurem', 'Landorus-Therian', 'Lopunny-Mega',
|
|
503
|
+
'Magnezone', 'Mawile-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior', 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini',
|
|
504
|
+
'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona', 'Weavile', 'Zapdos-Base',
|
|
535
505
|
'ND UUBL', // National Dex UUBL
|
|
536
506
|
'Drizzle', 'Drought',
|
|
537
507
|
// Slowbronite is banned so it doesn't validate on Galarian Slowbro
|
|
538
508
|
'Slowbronite',
|
|
509
|
+
// NatDex suspect
|
|
510
|
+
'Tornadus-Therian',
|
|
539
511
|
],
|
|
540
512
|
// Used to distinguish UU from below UU in the client
|
|
541
513
|
restricted: [
|
|
542
|
-
'
|
|
543
|
-
'
|
|
544
|
-
'
|
|
545
|
-
'
|
|
514
|
+
'Aegislash', 'Alakazam-Base', 'Altaria-Mega', 'Amoonguss', 'Beedrill-Mega', 'Blaziken-Base', 'Breloom', 'Celesteela',
|
|
515
|
+
'Chandelure', 'Donphan', 'Dracozolt', 'Dragonite', 'Feraligatr', 'Gastrodon', 'Hatterene', 'Hippowdon', 'Infernape',
|
|
516
|
+
'Keldeo', 'Krookodile', 'Mamoswine', 'Mandibuzz', 'Manectric-Mega', 'Melmetal', 'Mienshao', 'Moltres-Base',
|
|
517
|
+
'Nidoking', 'Nidoqueen', 'Nihilego', 'Quagsire', 'Regieleki', 'Ribombee', 'Rotom-Heat', 'Rotom-Wash', 'Salamence',
|
|
518
|
+
'Scizor', 'Skarmory', 'Slowking-Base', 'Swampert-Base', 'Talonflame', 'Tangrowth', 'Tornadus-Base', 'Umbreon',
|
|
519
|
+
'Urshifu-Rapid-Strike',
|
|
546
520
|
],
|
|
547
521
|
},
|
|
548
522
|
{
|
|
@@ -582,36 +556,62 @@ export const Formats: FormatList = [
|
|
|
582
556
|
section: "Pet Mods",
|
|
583
557
|
},
|
|
584
558
|
{
|
|
585
|
-
name: "[Gen 8]
|
|
559
|
+
name: "[Gen 8] Alternatium",
|
|
560
|
+
desc: `A metagame made up of only Pokémon with alternate forms, with all of them being separate and unique.`,
|
|
586
561
|
threads: [
|
|
587
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
562
|
+
`• <a href="https://www.smogon.com/forums/threads/3683767/">Alternatium</a>`,
|
|
563
|
+
`• <a href="https://docs.google.com/spreadsheets/d/1bvvkPg1CrUBJFJJeuwkts8elfJcEcahGOoHm-vGBXOI/edit?usp=sharing">Spreadsheet</a>`,
|
|
588
564
|
],
|
|
589
565
|
|
|
590
|
-
mod:
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
banlist: [
|
|
594
|
-
'All Pokemon', 'Lopunnite', 'Tapu Lop-Mega', 'Red Orb', 'Grousle-Primal',
|
|
595
|
-
],
|
|
566
|
+
mod: 'alternatium',
|
|
567
|
+
ruleset: ['Standard NatDex', 'Z-Move Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
|
|
568
|
+
banlist: ['All Pokemon', 'Past'],
|
|
596
569
|
unbanlist: [
|
|
597
|
-
'
|
|
598
|
-
'
|
|
599
|
-
'
|
|
600
|
-
'
|
|
601
|
-
'
|
|
602
|
-
'
|
|
603
|
-
'
|
|
604
|
-
|
|
605
|
-
'
|
|
606
|
-
'
|
|
607
|
-
'
|
|
570
|
+
'Silvally', 'Silvally-Bug', 'Silvally-Dark', 'Silvally-Dragon', 'Silvally-Electric', 'Silvally-Fairy', 'Silvally-Fighting', 'Silvally-Fire', 'Silvally-Flying', 'Silvally-Ghost',
|
|
571
|
+
'Silvally-Grass', 'Silvally-Ground', 'Silvally-Ice', 'Silvally-Poison', 'Silvally-Psychic', 'Silvally-Rock', 'Silvally-Steel', 'Silvally-Water', 'Pikachu', 'Pikachu-Rock-Star',
|
|
572
|
+
'Pikachu-Belle', 'Pikachu-Idol', 'Pikachu-PhD', 'Pikachu-Libre', 'Pikachu-Partner', 'Pikachu-Starter', 'Darmanitan', 'Darmanitan-Zen', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen',
|
|
573
|
+
'Aegishield', 'Aegislash', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Rotom', 'Rotom-Heat', 'Rotom-Wash', 'Rotom-Frost', 'Rotom-Fan', 'Rotom-Mow', 'Dugtrio',
|
|
574
|
+
'Dugtrio-Alola', 'Muk', 'Muk-Oilslick', 'Slowbro', 'Slowbro-Galar', 'Slowking', 'Slowking-Galar', 'Tornadus', 'Cummulus', 'Thundurus', 'Thundurus-Therian', 'Landorus', 'Landorus-Bengal',
|
|
575
|
+
'Vivillon-Fancy', 'Vivillon', 'Vivillon-Pokeball', 'Genesect', 'Genesect-Password', 'Genesect-Molten', 'Genesect-Freezer', 'Genesect-Type-Delta', 'Groudon', 'Groudon-Primal', 'Kyogre',
|
|
576
|
+
'Kyogre-Primal', 'Deoxys-Wood', 'Deoxys-Gem', 'Deoxys-Tank', 'Deoxys-Speed', 'Sandslash-Lustrous', 'Sandslash-Alola', 'Ninetales-Steamwork', 'Ninetales-Alola', 'Giratina', 'Giratina-Shadow',
|
|
577
|
+
'Eternatus', 'Manustorm', 'Exeggutor', 'Exeggutor-Lighthouse', 'Weezing', 'Weezing-King', 'Raticate', 'Raticate-Alola', 'Linoone', 'Linoone-Punk', 'Catastroform', 'Castform-Firestorm',
|
|
578
|
+
'Castform-Thunderstorm', 'Castform-Snowy', 'Wormadam', 'Wormadam-Sandy', 'Fibormadam', 'Farfetch\u2019d', 'Farfetch\u2019d-Galar', 'Corsola', 'Corsoul', 'Shaymin', 'Shaymin-Sky', 'Keldeo',
|
|
579
|
+
'Swordeo', 'Meloetta', 'Meloetta-Fighter', 'Lycanday', 'Lycanroc-Spectre', 'Lycanroc-Dusk', 'Gourgeist', 'Gourgeist-Fae', 'Gourgeist-Pulpy', 'Supergeist', 'Cramorant', 'Cramorant-Swimmer',
|
|
580
|
+
'Cramorant-Gorging', 'Eiscue', 'Eiscue-Noice', 'Mimikyu', 'Mimikyu-Sparkstone', 'Morpeko-Marsh', 'Morvilant', 'Zygarde-Wyrm', 'Zygarde-Canid', 'Zygarde-Goliath',
|
|
581
|
+
],
|
|
582
|
+
onValidateTeam(team, format) {
|
|
583
|
+
const speciesTable = new Set<string>();
|
|
584
|
+
for (const set of team) {
|
|
585
|
+
const species = this.dex.species.get(set.species);
|
|
586
|
+
if (speciesTable.has(species.id)) {
|
|
587
|
+
return [
|
|
588
|
+
`You are limited to one of each Pokémon by Species Clause (except for different formes).`,
|
|
589
|
+
`(You have more than one ${species.id}.)`,
|
|
590
|
+
];
|
|
591
|
+
}
|
|
592
|
+
speciesTable.add(species.id);
|
|
593
|
+
}
|
|
594
|
+
},
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
name: "[Gen 8] Random Dex",
|
|
598
|
+
desc: `A micrometagame project consisting of 80 randomly selected fully-evolved Pokémon.`,
|
|
599
|
+
threads: [
|
|
600
|
+
`• <a href="https://www.smogon.com/forums/threads/3690182/">Random Dex</a>`,
|
|
601
|
+
],
|
|
608
602
|
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
'
|
|
614
|
-
'
|
|
603
|
+
mod: 'randomdex',
|
|
604
|
+
ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
|
|
605
|
+
banlist: ['All Pokemon', 'Past', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Kangaskhanite', 'Medichamite', 'Kommonium Z'],
|
|
606
|
+
unbanlist: [
|
|
607
|
+
'Absol', 'Absol-Mega', 'Appletun', 'Articuno', 'Aurorus', 'Basculin', 'Beartic', 'Bisharp', 'Calyrex', 'Camerupt', 'Camerupt-Mega',
|
|
608
|
+
'Celesteela', 'Cloyster', 'Crawdaunt', 'Cursola', 'Dedenne', 'Delibird', 'Eelektross', 'Espeon', 'Flapple', 'Flareon', 'Flygon',
|
|
609
|
+
'Galvantula', 'Girafarig', 'Glaceon', 'Goodra', 'Gourgeist', 'Grimmsnarl', 'Guzzlord', 'Heliolisk', 'Hitmonchan', 'Hitmonlee',
|
|
610
|
+
'Hitmontop', 'Incineroar', 'Indeedee', 'Jolteon', 'Kangaskhan', 'Kommo-o', 'Lanturn', 'Leafeon', 'Leavanny', 'Ludicolo', 'Lunatone',
|
|
611
|
+
'Luvdisc', 'Machamp', 'Mandibuzz', 'Medicham', 'Nihilego', 'Palossand', 'Pidgeot', 'Pidgeot-Mega', 'Probopass', 'Pyroar', 'Sawk',
|
|
612
|
+
'Sceptile', 'Sceptile-Mega', 'Scolipede', 'Shiftry', 'Simisage', 'Slowbro', 'Slowbro-Mega', 'Slowking', 'Swoobat', 'Sylveon',
|
|
613
|
+
'Tapu Bulu', 'Tapu Fini', 'Tauros', 'Typhlosion', 'Umbreon', 'Ursaring', 'Vaporeon', 'Whiscash', 'Wishiwashi', 'Zebstrika', 'Absolite',
|
|
614
|
+
'Pidgeotite', 'Sceptilite', 'Cameruptite', 'Slowbronite',
|
|
615
615
|
],
|
|
616
616
|
},
|
|
617
617
|
{
|
|
@@ -635,38 +635,135 @@ export const Formats: FormatList = [
|
|
|
635
635
|
column: 2,
|
|
636
636
|
},
|
|
637
637
|
{
|
|
638
|
-
name: "[Gen 8]
|
|
639
|
-
desc: `
|
|
638
|
+
name: "[Gen 8] Trademarked",
|
|
639
|
+
desc: `Sacrifice your Pokémon's ability for a status move that activates on switch-in.`,
|
|
640
640
|
threads: [
|
|
641
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
641
|
+
`• <a href="https://www.smogon.com/forums/threads/3656980/">Trademarked</a>`,
|
|
642
642
|
],
|
|
643
643
|
|
|
644
644
|
mod: 'gen8',
|
|
645
|
-
|
|
645
|
+
// searchShow: false,
|
|
646
|
+
ruleset: ['Standard', 'Dynamax Clause'],
|
|
646
647
|
banlist: [
|
|
647
|
-
'
|
|
648
|
-
'
|
|
649
|
-
'
|
|
650
|
-
'
|
|
651
|
-
'
|
|
652
|
-
|
|
648
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Kyurem-Black', 'Kyurem-White',
|
|
649
|
+
'Giratina', 'Giratina-Origin', 'Genesect', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Lugia', 'Lunala', 'Magearna', 'Marowak-Alola',
|
|
650
|
+
'Marshadow', 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza',
|
|
651
|
+
'Reshiram', 'Solgaleo', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom',
|
|
652
|
+
'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
|
|
653
|
+
],
|
|
654
|
+
restricted: [
|
|
655
|
+
'Baneful Bunker', 'Block', 'Copycat', 'Corrosive Gas', 'Detect', 'Destiny Bond', 'Disable', 'Encore', 'Fairy Lock', 'Hypnosis', 'Ingrain',
|
|
656
|
+
'Instruct', 'Lovely Kiss', 'King\'s Shield', 'Mat Block', 'Mean Look', 'Memento', 'move:Metronome', 'Obstruct', 'Octolock', 'Nature Power',
|
|
657
|
+
'Parting Shot', 'Psycho Shift', 'Protect', 'Roar', 'Sing', 'Skill Swap', 'Sleep Powder', 'Sleep Talk', 'Spiky Shield', 'Spore', 'Substitute',
|
|
658
|
+
'Teleport', 'Whirlwind', 'Wish', 'Yawn',
|
|
653
659
|
],
|
|
654
|
-
|
|
660
|
+
onValidateTeam(team, format, teamHas) {
|
|
661
|
+
const problems = [];
|
|
662
|
+
for (const trademark in teamHas.trademarks) {
|
|
663
|
+
if (teamHas.trademarks[trademark] > 1) {
|
|
664
|
+
problems.push(`You are limited to 1 of each Trademark.`, `(You have ${teamHas.trademarks[trademark]} Pok\u00e9mon with ${trademark} as a Trademark.)`);
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
return problems;
|
|
668
|
+
},
|
|
669
|
+
validateSet(set, teamHas) {
|
|
670
|
+
const dex = this.dex;
|
|
671
|
+
const ability = dex.moves.get(set.ability);
|
|
672
|
+
if (!ability.exists) { // Not even a real move
|
|
673
|
+
return this.validateSet(set, teamHas);
|
|
674
|
+
}
|
|
675
|
+
// Absolute trademark bans
|
|
676
|
+
if (ability.category !== 'Status') {
|
|
677
|
+
return [`${ability.name} is not a status move, and cannot be used as a trademark.`];
|
|
678
|
+
}
|
|
679
|
+
if (ability.forceSwitch || ability.selfSwitch) {
|
|
680
|
+
return [
|
|
681
|
+
`Force-switching and self-switching moves are banned from being used as trademarks.`,
|
|
682
|
+
`(${ability.name} is a ${ability.forceSwitch ? 'force' : 'self'}-switching move.)`,
|
|
683
|
+
];
|
|
684
|
+
}
|
|
685
|
+
const irrevokablyRestricted = [
|
|
686
|
+
'Assist', 'Copycat', 'Metronome', 'Mirror Move', 'Sleep Talk', // Could call another unsafe trademark
|
|
687
|
+
'Skill Swap', // Self-propagates indefinitely
|
|
688
|
+
];
|
|
689
|
+
if (irrevokablyRestricted.includes(ability.name)) {
|
|
690
|
+
return [`${ability.name} cannot safely function as a trademark.`];
|
|
691
|
+
}
|
|
692
|
+
// Contingent trademark bans
|
|
693
|
+
if (this.ruleTable.isRestricted(`move:${ability.id}`)) {
|
|
694
|
+
return [`${ability.name} is restricted from being used as a trademark.`];
|
|
695
|
+
}
|
|
696
|
+
if (set.moves.map(this.toID).includes(ability.id)) {
|
|
697
|
+
return [`${set.name} may not use ${ability.name} as both a trademark and one of its moves simultaneously.`];
|
|
698
|
+
}
|
|
699
|
+
const customRules = this.format.customRules || [];
|
|
700
|
+
if (!customRules.includes('!obtainableabilities')) customRules.push('!obtainableabilities');
|
|
701
|
+
|
|
702
|
+
const TeamValidator: typeof import('../sim/team-validator').TeamValidator =
|
|
703
|
+
require('../sim/team-validator').TeamValidator;
|
|
704
|
+
|
|
705
|
+
const validator = new TeamValidator(dex.formats.get(`${this.format.id}@@@${customRules.join(',')}`));
|
|
706
|
+
const moves = set.moves;
|
|
707
|
+
set.moves = [ability.id];
|
|
708
|
+
set.ability = dex.species.get(set.species).abilities['0'];
|
|
709
|
+
let problems = validator.validateSet(set, {}) || [];
|
|
710
|
+
if (problems.length) return problems;
|
|
711
|
+
set.moves = moves;
|
|
712
|
+
set.ability = dex.species.get(set.species).abilities['0'];
|
|
713
|
+
problems = problems.concat(validator.validateSet(set, teamHas) || []);
|
|
714
|
+
set.ability = ability.id;
|
|
715
|
+
if (!teamHas.trademarks) teamHas.trademarks = {};
|
|
716
|
+
teamHas.trademarks[ability.name] = (teamHas.trademarks[ability.name] || 0) + 1;
|
|
717
|
+
return problems.length ? problems : null;
|
|
718
|
+
},
|
|
719
|
+
pokemon: {
|
|
720
|
+
getAbility() {
|
|
721
|
+
const move = this.battle.dex.moves.get(this.battle.toID(this.ability));
|
|
722
|
+
if (!move.exists) return Object.getPrototypeOf(this).getAbility.call(this);
|
|
723
|
+
return {
|
|
724
|
+
id: move.id,
|
|
725
|
+
name: move.name,
|
|
726
|
+
onStart(this: Battle, pokemon: Pokemon) {
|
|
727
|
+
this.add('-activate', pokemon, 'ability: ' + move.name);
|
|
728
|
+
this.actions.useMove(move, pokemon);
|
|
729
|
+
},
|
|
730
|
+
toString() {
|
|
731
|
+
return "";
|
|
732
|
+
},
|
|
733
|
+
};
|
|
734
|
+
},
|
|
735
|
+
},
|
|
655
736
|
},
|
|
656
737
|
{
|
|
657
|
-
name: "[Gen 8
|
|
658
|
-
desc: `
|
|
738
|
+
name: "[Gen 8] Linked",
|
|
739
|
+
desc: `The first two moves in a Pokémon's moveset are used simultaneously.`,
|
|
659
740
|
threads: [
|
|
660
|
-
`• <a href="https://www.smogon.com/forums/
|
|
741
|
+
`• <a href="https://www.smogon.com/forums/threads/3660421/">Linked</a>`,
|
|
661
742
|
],
|
|
662
743
|
|
|
663
|
-
mod: '
|
|
664
|
-
ruleset: ['
|
|
744
|
+
mod: 'linked',
|
|
745
|
+
ruleset: ['Standard', 'Dynamax Clause'],
|
|
665
746
|
banlist: [
|
|
666
|
-
'
|
|
667
|
-
'
|
|
668
|
-
'
|
|
747
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh',
|
|
748
|
+
'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings',
|
|
749
|
+
'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
|
|
750
|
+
'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Zygarde-Complete', 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak',
|
|
751
|
+
'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Baton Pass',
|
|
752
|
+
],
|
|
753
|
+
restricted: [
|
|
754
|
+
'Baneful Bunker', 'Bounce', 'Protect', 'Detect', 'Dig', 'Dive', 'Fly', 'King\'s Shield', 'Nature\'s Madness', 'Night Shade',
|
|
755
|
+
'Obstruct', 'Phantom Force', 'Seismic Toss', 'Shadow Force', 'Sky Drop', 'Spiky Shield', 'Super Fang',
|
|
669
756
|
],
|
|
757
|
+
onValidateSet(set) {
|
|
758
|
+
const problems = [];
|
|
759
|
+
for (const [i, moveid] of set.moves.entries()) {
|
|
760
|
+
const move = this.dex.moves.get(moveid);
|
|
761
|
+
if ([0, 1].includes(i) && this.ruleTable.isRestricted(`move:${move.id}`)) {
|
|
762
|
+
problems.push(`${set.name || set.species}'s move ${move.name} cannot be linked.`);
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
return problems;
|
|
766
|
+
},
|
|
670
767
|
},
|
|
671
768
|
|
|
672
769
|
// Other Metagames
|
|
@@ -713,6 +810,35 @@ export const Formats: FormatList = [
|
|
|
713
810
|
}
|
|
714
811
|
},
|
|
715
812
|
},
|
|
813
|
+
{
|
|
814
|
+
name: "[Gen 8] Almost Any Ability",
|
|
815
|
+
desc: `Pokémon have access to almost any ability.`,
|
|
816
|
+
threads: [
|
|
817
|
+
`• <a href="https://www.smogon.com/forums/threads/3656414/">Almost Any Ability</a>`,
|
|
818
|
+
`• <a href="https://www.smogon.com/forums/threads/3682690/">AAA Resources</a>`,
|
|
819
|
+
],
|
|
820
|
+
|
|
821
|
+
mod: 'gen8',
|
|
822
|
+
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'],
|
|
823
|
+
banlist: [
|
|
824
|
+
'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina',
|
|
825
|
+
'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
|
|
826
|
+
'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja',
|
|
827
|
+
'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom',
|
|
828
|
+
'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter',
|
|
829
|
+
'Innards Out', 'Intrepid Sword', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power',
|
|
830
|
+
'Shadow Tag', 'Simple', 'Stakeout', 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
|
|
831
|
+
],
|
|
832
|
+
onValidateSet(set) {
|
|
833
|
+
// Temporary fix until battle-only is implemented properly
|
|
834
|
+
if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
|
|
835
|
+
return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
|
|
836
|
+
}
|
|
837
|
+
if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
|
|
838
|
+
return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
|
|
839
|
+
}
|
|
840
|
+
},
|
|
841
|
+
},
|
|
716
842
|
{
|
|
717
843
|
name: "[Gen 8] Mix and Mega",
|
|
718
844
|
desc: `Mega evolve any Pokémon with any mega stone and no limit. Boosts based on mega evolution from gen 7.`,
|
|
@@ -731,7 +857,8 @@ export const Formats: FormatList = [
|
|
|
731
857
|
restricted: [
|
|
732
858
|
'Calyrex-Ice', 'Dialga', 'Eternatus', 'Gengar', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyurem-Black', 'Kyurem-White',
|
|
733
859
|
'Lugia', 'Lunala', 'Marshadow', 'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
|
|
734
|
-
'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Urshifu
|
|
860
|
+
'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Urshifu', 'Urshifu-Rapid-Strike', 'Xerneas',
|
|
861
|
+
'Yveltal', 'Zekrom', 'Zygarde-Complete',
|
|
735
862
|
],
|
|
736
863
|
onValidateTeam(team) {
|
|
737
864
|
const itemTable = new Set<ID>();
|
|
@@ -774,51 +901,24 @@ export const Formats: FormatList = [
|
|
|
774
901
|
}
|
|
775
902
|
},
|
|
776
903
|
},
|
|
777
|
-
{
|
|
778
|
-
name: "[Gen 8] Almost Any Ability",
|
|
779
|
-
desc: `Pokémon have access to almost any ability.`,
|
|
780
|
-
threads: [
|
|
781
|
-
`• <a href="https://www.smogon.com/forums/threads/3656414/">Almost Any Ability</a>`,
|
|
782
|
-
`• <a href="https://www.smogon.com/forums/threads/3682690/">AAA Resources</a>`,
|
|
783
|
-
],
|
|
784
|
-
|
|
785
|
-
mod: 'gen8',
|
|
786
|
-
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'],
|
|
787
|
-
banlist: [
|
|
788
|
-
'Archeops', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Gengar', 'Giratina', 'Giratina-Origin',
|
|
789
|
-
'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo',
|
|
790
|
-
'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja', 'Solgaleo', 'Spectrier',
|
|
791
|
-
'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zeraora', 'Zygarde-Base',
|
|
792
|
-
'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Intrepid Sword',
|
|
793
|
-
'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Protean', 'Pure Power', 'Shadow Tag', 'Simple', 'Stakeout',
|
|
794
|
-
'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
|
|
795
|
-
],
|
|
796
|
-
onValidateSet(set) {
|
|
797
|
-
// Temporary fix until battle-only is implemented properly
|
|
798
|
-
if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
|
|
799
|
-
return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
|
|
800
|
-
}
|
|
801
|
-
if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
|
|
802
|
-
return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
|
|
803
|
-
}
|
|
804
|
-
},
|
|
805
|
-
},
|
|
806
904
|
{
|
|
807
905
|
name: "[Gen 8] STABmons",
|
|
808
906
|
desc: `Pokémon can use any move of their typing, in addition to the moves they can normally learn.`,
|
|
809
907
|
threads: [
|
|
810
908
|
`• <a href="https://www.smogon.com/forums/threads/3656429/">STABmons</a>`,
|
|
909
|
+
`• <a href="https://www.smogon.com/forums/threads/3695169/">STABmons Resources</a>`,
|
|
811
910
|
],
|
|
812
911
|
|
|
813
912
|
mod: 'gen8',
|
|
814
|
-
ruleset: ['Standard', 'STABmons Move Legality', 'Dynamax Clause', 'Sleep Moves Clause'],
|
|
913
|
+
ruleset: ['Standard', 'STABmons Move Legality', 'Dynamax Clause', 'Sleep Moves Clause', '!Sleep Clause Mod'],
|
|
815
914
|
banlist: [
|
|
816
|
-
'Aegislash', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite',
|
|
817
|
-
'Garchomp', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Kyurem-Black',
|
|
818
|
-
'
|
|
819
|
-
'
|
|
820
|
-
'
|
|
821
|
-
'Power Construct', 'Shadow Tag', 'King\'s Rock',
|
|
915
|
+
'Aegislash', 'Blacephalon', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite',
|
|
916
|
+
'Eternatus', 'Genesect', 'Garchomp', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Kyurem-Black',
|
|
917
|
+
'Kyurem-White', 'Landorus', 'Landorus-Therian', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings',
|
|
918
|
+
'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Reshiram', 'Silvally', 'Solgaleo', 'Spectrier', 'Tapu Bulu',
|
|
919
|
+
'Tapu Koko', 'Thundurus-Base', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
|
|
920
|
+
'Zapdos-Galar', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock',
|
|
921
|
+
'Baton Pass',
|
|
822
922
|
],
|
|
823
923
|
restricted: [
|
|
824
924
|
'Acupressure', 'Astral Barrage', 'Belly Drum', 'Bolt Beak', 'Clangorous Soul', 'Double Iron Bash', 'Electrify', 'Extreme Speed', 'Fishious Rend',
|
|
@@ -848,11 +948,11 @@ export const Formats: FormatList = [
|
|
|
848
948
|
],
|
|
849
949
|
|
|
850
950
|
mod: 'gen8',
|
|
851
|
-
ruleset: ['Standard', 'Dynamax Clause'],
|
|
951
|
+
ruleset: ['Standard', 'Dynamax Clause', 'Sleep Moves Clause'],
|
|
852
952
|
banlist: [
|
|
853
|
-
'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
|
|
953
|
+
'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Mantine', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
|
|
854
954
|
'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power',
|
|
855
|
-
'Shadow Tag', 'Baton Pass',
|
|
955
|
+
'Shadow Tag', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Baton Pass',
|
|
856
956
|
],
|
|
857
957
|
onValidateTeam(team) {
|
|
858
958
|
const gods = new Set<string>();
|
|
@@ -933,7 +1033,8 @@ export const Formats: FormatList = [
|
|
|
933
1033
|
name: "[Gen 8 BDSP] OU",
|
|
934
1034
|
threads: [
|
|
935
1035
|
`• <a href="https://www.smogon.com/forums/threads/3693629/">BDSP OU Metagame Discussion</a>`,
|
|
936
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
1036
|
+
`• <a href="https://www.smogon.com/forums/threads/3693721/">BDSP OU Sample Teams</a>`,
|
|
1037
|
+
`• <a href="https://www.smogon.com/forums/threads/3696088/">BDSP OU Viability Rankings</a>`,
|
|
937
1038
|
],
|
|
938
1039
|
|
|
939
1040
|
mod: 'gen8bdsp',
|
|
@@ -963,6 +1064,34 @@ export const Formats: FormatList = [
|
|
|
963
1064
|
ruleset: ['[Gen 8 BDSP] OU'],
|
|
964
1065
|
banlist: ['OU', 'UUBL'],
|
|
965
1066
|
},
|
|
1067
|
+
{
|
|
1068
|
+
name: "[Gen 8 BDSP] RU",
|
|
1069
|
+
threads: [
|
|
1070
|
+
`• <a href="https://www.smogon.com/forums/threads/3695563/">BDSP RU</a>`,
|
|
1071
|
+
],
|
|
1072
|
+
|
|
1073
|
+
mod: 'gen8bdsp',
|
|
1074
|
+
ruleset: ['[Gen 8 BDSP] UU'],
|
|
1075
|
+
banlist: ['UU', 'RUBL', 'Drought'],
|
|
1076
|
+
},
|
|
1077
|
+
{
|
|
1078
|
+
name: "[Gen 8 BDSP] NU",
|
|
1079
|
+
|
|
1080
|
+
mod: 'gen8bdsp',
|
|
1081
|
+
searchShow: false,
|
|
1082
|
+
ruleset: ['[Gen 8 BDSP] RU'],
|
|
1083
|
+
banlist: ['RU', 'NUBL'],
|
|
1084
|
+
},
|
|
1085
|
+
{
|
|
1086
|
+
name: "[Gen 8 BDSP] LC",
|
|
1087
|
+
threads: [
|
|
1088
|
+
`• <a href="https://www.smogon.com/forums/threads/3696004/">BDSP LC</a>`,
|
|
1089
|
+
],
|
|
1090
|
+
|
|
1091
|
+
mod: 'gen8bdsp',
|
|
1092
|
+
ruleset: ['Little Cup', 'Standard'],
|
|
1093
|
+
banlist: ['Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma', 'Moody', 'Baton Pass'],
|
|
1094
|
+
},
|
|
966
1095
|
{
|
|
967
1096
|
name: "[Gen 8 BDSP] Monotype",
|
|
968
1097
|
threads: [
|
|
@@ -986,6 +1115,15 @@ export const Formats: FormatList = [
|
|
|
986
1115
|
searchShow: false,
|
|
987
1116
|
ruleset: ['[Gen 8 BDSP] OU', '+CAP'],
|
|
988
1117
|
},
|
|
1118
|
+
{
|
|
1119
|
+
name: "[Gen 8 BDSP] 3v3 Singles",
|
|
1120
|
+
threads: [
|
|
1121
|
+
`• <a href="https://www.smogon.com/forums/threads/3695092/">BDSP 3v3 Singles</a>`,
|
|
1122
|
+
],
|
|
1123
|
+
|
|
1124
|
+
mod: 'gen8bdsp',
|
|
1125
|
+
ruleset: ['Flat Rules', 'Min Source Gen = 8'],
|
|
1126
|
+
},
|
|
989
1127
|
{
|
|
990
1128
|
name: "[Gen 8 BDSP] Doubles OU",
|
|
991
1129
|
threads: [
|
|
@@ -1033,11 +1171,11 @@ export const Formats: FormatList = [
|
|
|
1033
1171
|
searchShow: false,
|
|
1034
1172
|
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'],
|
|
1035
1173
|
banlist: [
|
|
1036
|
-
'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin',
|
|
1037
|
-
'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia',
|
|
1038
|
-
'Mew', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
|
|
1039
|
-
'Slowking-Galar', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', '
|
|
1040
|
-
'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
|
|
1174
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin',
|
|
1175
|
+
'Groudon', 'Ho-Oh', 'Hydreigon', 'Kartana', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Latias', 'Latios', 'Lugia',
|
|
1176
|
+
'Lunala', 'Marshadow', 'Mew', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
|
|
1177
|
+
'Reuniclus', 'Shedinja', 'Slowking-Galar', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Volcarona', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
|
|
1178
|
+
'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
|
|
1041
1179
|
],
|
|
1042
1180
|
onModifySpeciesPriority: 2,
|
|
1043
1181
|
onModifySpecies(species, target, source, effect) {
|
|
@@ -1541,6 +1679,53 @@ export const Formats: FormatList = [
|
|
|
1541
1679
|
}
|
|
1542
1680
|
},
|
|
1543
1681
|
},
|
|
1682
|
+
{
|
|
1683
|
+
name: "[Gen 8] Pokebilities",
|
|
1684
|
+
desc: `Pokémon have all of their released abilities simultaneously.`,
|
|
1685
|
+
threads: [
|
|
1686
|
+
`• <a href="https://www.smogon.com/forums/threads/3679692/">Pokébilities</a>`,
|
|
1687
|
+
],
|
|
1688
|
+
mod: 'pokebilities',
|
|
1689
|
+
searchShow: false,
|
|
1690
|
+
ruleset: ['Standard', 'Dynamax Clause'],
|
|
1691
|
+
banlist: [
|
|
1692
|
+
'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Conkeldurr', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dracozolt',
|
|
1693
|
+
'Eternatus', 'Excadrill', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black',
|
|
1694
|
+
'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings',
|
|
1695
|
+
'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base',
|
|
1696
|
+
'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Base', 'Zekrom', 'Zygarde-Base', 'Power Construct',
|
|
1697
|
+
'Baton Pass', 'King\'s Rock',
|
|
1698
|
+
// Moody users
|
|
1699
|
+
'Glalie', 'Octillery', 'Remoraid', 'Snorunt',
|
|
1700
|
+
// Shadow Tag/Arena Trap
|
|
1701
|
+
'Diglett-Base', 'Dugtrio-Base', 'Gothita', 'Gothitelle', 'Gothorita', 'Trapinch', 'Wobbuffet', 'Wynaut',
|
|
1702
|
+
],
|
|
1703
|
+
onBegin() {
|
|
1704
|
+
for (const pokemon of this.getAllPokemon()) {
|
|
1705
|
+
if (pokemon.ability === this.toID(pokemon.species.abilities['S'])) {
|
|
1706
|
+
continue;
|
|
1707
|
+
}
|
|
1708
|
+
pokemon.m.innates = Object.keys(pokemon.species.abilities)
|
|
1709
|
+
.filter(key => key !== 'S' && (key !== 'H' || !pokemon.species.unreleasedHidden))
|
|
1710
|
+
.map(key => this.toID(pokemon.species.abilities[key as "0" | "1" | "H" | "S"]))
|
|
1711
|
+
.filter(ability => ability !== pokemon.ability);
|
|
1712
|
+
}
|
|
1713
|
+
},
|
|
1714
|
+
onSwitchInPriority: 2,
|
|
1715
|
+
onSwitchIn(pokemon) {
|
|
1716
|
+
if (pokemon.m.innates) {
|
|
1717
|
+
for (const innate of pokemon.m.innates) {
|
|
1718
|
+
pokemon.addVolatile("ability:" + innate, pokemon);
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
},
|
|
1722
|
+
onAfterMega(pokemon) {
|
|
1723
|
+
for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
|
|
1724
|
+
pokemon.removeVolatile(innate);
|
|
1725
|
+
}
|
|
1726
|
+
pokemon.m.innates = undefined;
|
|
1727
|
+
},
|
|
1728
|
+
},
|
|
1544
1729
|
{
|
|
1545
1730
|
name: "[Gen 8] The Loser's Game",
|
|
1546
1731
|
desc: `The first player to lose all of their Pokémon wins.`,
|
|
@@ -1676,106 +1861,6 @@ export const Formats: FormatList = [
|
|
|
1676
1861
|
},
|
|
1677
1862
|
},
|
|
1678
1863
|
},
|
|
1679
|
-
{
|
|
1680
|
-
name: "[Gen 8] Trademarked",
|
|
1681
|
-
desc: `Sacrifice your Pokémon's ability for a status move that activates on switch-in.`,
|
|
1682
|
-
threads: [
|
|
1683
|
-
`• <a href="https://www.smogon.com/forums/threads/3656980/">Trademarked</a>`,
|
|
1684
|
-
],
|
|
1685
|
-
|
|
1686
|
-
mod: 'gen8',
|
|
1687
|
-
searchShow: false,
|
|
1688
|
-
ruleset: ['Standard', 'Dynamax Clause'],
|
|
1689
|
-
banlist: [
|
|
1690
|
-
'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Kyurem-Black', 'Kyurem-White',
|
|
1691
|
-
'Giratina', 'Giratina-Origin', 'Genesect', 'Groudon', 'Ho-Oh', 'Kartana', 'Kyogre', 'Lugia', 'Lunala', 'Magearna', 'Marshadow',
|
|
1692
|
-
'Melmetal', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
|
|
1693
|
-
'Solgaleo', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base',
|
|
1694
|
-
'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass',
|
|
1695
|
-
],
|
|
1696
|
-
restricted: [
|
|
1697
|
-
'Baneful Bunker', 'Block', 'Copycat', 'Corrosive Gas', 'Detect', 'Destiny Bond', 'Disable', 'Encore', 'Fairy Lock', 'Hypnosis', 'Ingrain',
|
|
1698
|
-
'Instruct', 'Lovely Kiss', 'King\'s Shield', 'Mat Block', 'Mean Look', 'move:Metronome', 'Obstruct', 'Octolock', 'Nature Power', 'Parting Shot',
|
|
1699
|
-
'Psycho Shift', 'Protect', 'Roar', 'Sing', 'Skill Swap', 'Sleep Powder', 'Sleep Talk', 'Spiky Shield', 'Spore', 'Substitute', 'Teleport',
|
|
1700
|
-
'Whirlwind', 'Wish', 'Yawn',
|
|
1701
|
-
],
|
|
1702
|
-
onValidateTeam(team, format, teamHas) {
|
|
1703
|
-
const problems = [];
|
|
1704
|
-
for (const trademark in teamHas.trademarks) {
|
|
1705
|
-
if (teamHas.trademarks[trademark] > 1) {
|
|
1706
|
-
problems.push(`You are limited to 1 of each Trademark.`, `(You have ${teamHas.trademarks[trademark]} Pok\u00e9mon with ${trademark} as a Trademark.)`);
|
|
1707
|
-
}
|
|
1708
|
-
}
|
|
1709
|
-
return problems;
|
|
1710
|
-
},
|
|
1711
|
-
validateSet(set, teamHas) {
|
|
1712
|
-
const dex = this.dex;
|
|
1713
|
-
const ability = dex.moves.get(set.ability);
|
|
1714
|
-
if (!ability.exists) { // Not even a real move
|
|
1715
|
-
return this.validateSet(set, teamHas);
|
|
1716
|
-
}
|
|
1717
|
-
// Absolute trademark bans
|
|
1718
|
-
if (ability.category !== 'Status') {
|
|
1719
|
-
return [`${ability.name} is not a status move, and cannot be used as a trademark.`];
|
|
1720
|
-
}
|
|
1721
|
-
if (ability.forceSwitch || ability.selfSwitch) {
|
|
1722
|
-
return [
|
|
1723
|
-
`Force-switching and self-switching moves are banned from being used as trademarks.`,
|
|
1724
|
-
`(${ability.name} is a ${ability.forceSwitch ? 'force' : 'self'}-switching move.)`,
|
|
1725
|
-
];
|
|
1726
|
-
}
|
|
1727
|
-
const irrevokablyRestricted = [
|
|
1728
|
-
'Assist', 'Copycat', 'Metronome', 'Mirror Move', 'Sleep Talk', // Could call another unsafe trademark
|
|
1729
|
-
'Skill Swap', // Self-propagates indefinitely
|
|
1730
|
-
];
|
|
1731
|
-
if (irrevokablyRestricted.includes(ability.name)) {
|
|
1732
|
-
return [`${ability.name} cannot safely function as a trademark.`];
|
|
1733
|
-
}
|
|
1734
|
-
// Contingent trademark bans
|
|
1735
|
-
if (this.ruleTable.isRestricted(`move:${ability.id}`)) {
|
|
1736
|
-
return [`${ability.name} is restricted from being used as a trademark.`];
|
|
1737
|
-
}
|
|
1738
|
-
if (set.moves.map(this.toID).includes(ability.id)) {
|
|
1739
|
-
return [`${set.name} may not use ${ability.name} as both a trademark and one of its moves simultaneously.`];
|
|
1740
|
-
}
|
|
1741
|
-
const customRules = this.format.customRules || [];
|
|
1742
|
-
if (!customRules.includes('!obtainableabilities')) customRules.push('!obtainableabilities');
|
|
1743
|
-
|
|
1744
|
-
const TeamValidator: typeof import('../sim/team-validator').TeamValidator =
|
|
1745
|
-
require('../sim/team-validator').TeamValidator;
|
|
1746
|
-
|
|
1747
|
-
const validator = new TeamValidator(dex.formats.get(`${this.format.id}@@@${customRules.join(',')}`));
|
|
1748
|
-
const moves = set.moves;
|
|
1749
|
-
set.moves = [ability.id];
|
|
1750
|
-
set.ability = dex.species.get(set.species).abilities['0'];
|
|
1751
|
-
let problems = validator.validateSet(set, {}) || [];
|
|
1752
|
-
if (problems.length) return problems;
|
|
1753
|
-
set.moves = moves;
|
|
1754
|
-
set.ability = dex.species.get(set.species).abilities['0'];
|
|
1755
|
-
problems = problems.concat(validator.validateSet(set, teamHas) || []);
|
|
1756
|
-
set.ability = ability.id;
|
|
1757
|
-
if (!teamHas.trademarks) teamHas.trademarks = {};
|
|
1758
|
-
teamHas.trademarks[ability.name] = (teamHas.trademarks[ability.name] || 0) + 1;
|
|
1759
|
-
return problems.length ? problems : null;
|
|
1760
|
-
},
|
|
1761
|
-
pokemon: {
|
|
1762
|
-
getAbility() {
|
|
1763
|
-
const move = this.battle.dex.moves.get(this.battle.toID(this.ability));
|
|
1764
|
-
if (!move.exists) return Object.getPrototypeOf(this).getAbility.call(this);
|
|
1765
|
-
return {
|
|
1766
|
-
id: move.id,
|
|
1767
|
-
name: move.name,
|
|
1768
|
-
onStart(this: Battle, pokemon: Pokemon) {
|
|
1769
|
-
this.add('-activate', pokemon, 'ability: ' + move.name);
|
|
1770
|
-
this.actions.useMove(move, pokemon);
|
|
1771
|
-
},
|
|
1772
|
-
toString() {
|
|
1773
|
-
return "";
|
|
1774
|
-
},
|
|
1775
|
-
};
|
|
1776
|
-
},
|
|
1777
|
-
},
|
|
1778
|
-
},
|
|
1779
1864
|
|
|
1780
1865
|
// Randomized Metas
|
|
1781
1866
|
///////////////////////////////////////////////////////////////////
|
|
@@ -1890,7 +1975,8 @@ export const Formats: FormatList = [
|
|
|
1890
1975
|
|
|
1891
1976
|
mod: 'gen8',
|
|
1892
1977
|
team: 'randomHC',
|
|
1893
|
-
ruleset: ['
|
|
1978
|
+
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
1979
|
+
banlist: ['Nonexistent'],
|
|
1894
1980
|
},
|
|
1895
1981
|
{
|
|
1896
1982
|
name: "[Gen 8] Doubles Hackmons Cup",
|
|
@@ -1899,7 +1985,8 @@ export const Formats: FormatList = [
|
|
|
1899
1985
|
gameType: 'doubles',
|
|
1900
1986
|
team: 'randomHC',
|
|
1901
1987
|
searchShow: false,
|
|
1902
|
-
ruleset: ['
|
|
1988
|
+
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
1989
|
+
banlist: ['Nonexistent'],
|
|
1903
1990
|
},
|
|
1904
1991
|
{
|
|
1905
1992
|
name: "[Gen 8] CAP 1v1",
|
|
@@ -1975,6 +2062,7 @@ export const Formats: FormatList = [
|
|
|
1975
2062
|
team: 'randomHC',
|
|
1976
2063
|
searchShow: false,
|
|
1977
2064
|
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
2065
|
+
banlist: ['Nonexistent'],
|
|
1978
2066
|
},
|
|
1979
2067
|
{
|
|
1980
2068
|
name: "[Gen 7 Let's Go] Random Battle",
|
|
@@ -2051,6 +2139,7 @@ export const Formats: FormatList = [
|
|
|
2051
2139
|
team: 'randomHC',
|
|
2052
2140
|
searchShow: false,
|
|
2053
2141
|
ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Desync Clause Mod', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Team Type Preview'],
|
|
2142
|
+
banlist: ['Nonexistent'],
|
|
2054
2143
|
onModifySpecies(species, target, source, effect) {
|
|
2055
2144
|
if (!target) return;
|
|
2056
2145
|
return {...species, ...(target.set as any).hc};
|
|
@@ -2072,50 +2161,39 @@ export const Formats: FormatList = [
|
|
|
2072
2161
|
column: 3,
|
|
2073
2162
|
},
|
|
2074
2163
|
{
|
|
2075
|
-
name: "[Gen
|
|
2164
|
+
name: "[Gen 3] UU",
|
|
2076
2165
|
threads: [
|
|
2077
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
2078
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
2166
|
+
`• <a href="https://www.smogon.com/forums/threads/3585923/">ADV UU Metagame Discussion</a>`,
|
|
2167
|
+
`• <a href="https://www.smogon.com/forums/threads/3548578/">ADV UU Viability Rankings</a>`,
|
|
2079
2168
|
],
|
|
2080
2169
|
|
|
2081
|
-
mod: '
|
|
2170
|
+
mod: 'gen3',
|
|
2082
2171
|
// searchShow: false,
|
|
2083
|
-
ruleset: ['
|
|
2084
|
-
banlist: ['OU', 'UUBL'],
|
|
2172
|
+
ruleset: ['Standard', 'NFE Clause'],
|
|
2173
|
+
banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Baton Pass'],
|
|
2174
|
+
unbanlist: ['Scyther', 'Sand Veil'],
|
|
2085
2175
|
},
|
|
2086
2176
|
{
|
|
2087
|
-
name: "[Gen
|
|
2088
|
-
desc: `Bring three Pokémon to Team Preview and choose one to battle.`,
|
|
2177
|
+
name: "[Gen 1] NU",
|
|
2089
2178
|
threads: [
|
|
2090
|
-
`• <a href="https://www.smogon.com/forums/
|
|
2179
|
+
`• <a href="https://www.smogon.com/forums/threads/3668913/">RBY NU Viability Rankings</a>`,
|
|
2091
2180
|
],
|
|
2092
2181
|
|
|
2093
|
-
mod: '
|
|
2182
|
+
mod: 'gen1',
|
|
2094
2183
|
// searchShow: false,
|
|
2095
|
-
ruleset: [
|
|
2096
|
-
|
|
2097
|
-
'Obtainable', 'Nickname Clause', 'Moody Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Accuracy Moves Clause', 'Swagger Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview',
|
|
2098
|
-
],
|
|
2099
|
-
banlist: [
|
|
2100
|
-
'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
|
|
2101
|
-
'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
|
|
2102
|
-
'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
|
|
2103
|
-
'Focus Sash', 'Soul Dew', 'Perish Song',
|
|
2104
|
-
],
|
|
2184
|
+
ruleset: ['[Gen 1] UU'],
|
|
2185
|
+
banlist: ['UU', 'NUBL'],
|
|
2105
2186
|
},
|
|
2106
2187
|
{
|
|
2107
|
-
name: "[Gen
|
|
2188
|
+
name: "[Gen 4] Ubers",
|
|
2108
2189
|
threads: [
|
|
2109
|
-
`• <a href="https://www.smogon.com/forums/
|
|
2110
|
-
`• <a href="https://www.smogon.com/forums/posts/7393048/">BW2 Doubles Viability Rankings</a>`,
|
|
2111
|
-
`• <a href="https://www.smogon.com/forums/posts/7393081/">BW2 Doubles Sample Teams</a>`,
|
|
2190
|
+
`• <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
|
|
2112
2191
|
],
|
|
2113
2192
|
|
|
2114
|
-
mod: '
|
|
2115
|
-
gameType: 'doubles',
|
|
2193
|
+
mod: 'gen4',
|
|
2116
2194
|
// searchShow: false,
|
|
2117
|
-
ruleset: ['Standard'
|
|
2118
|
-
banlist: ['
|
|
2195
|
+
ruleset: ['Standard'],
|
|
2196
|
+
banlist: ['AG'],
|
|
2119
2197
|
},
|
|
2120
2198
|
|
|
2121
2199
|
// Past Gens OU
|
|
@@ -2157,8 +2235,8 @@ export const Formats: FormatList = [
|
|
|
2157
2235
|
],
|
|
2158
2236
|
|
|
2159
2237
|
mod: 'gen5',
|
|
2160
|
-
ruleset: ['Standard', 'Evasion Abilities Clause', '
|
|
2161
|
-
banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist'],
|
|
2238
|
+
ruleset: ['Standard', 'Evasion Abilities Clause', 'Sleep Moves Clause', 'Swagger Clause'],
|
|
2239
|
+
banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist', 'Baton Pass'],
|
|
2162
2240
|
},
|
|
2163
2241
|
{
|
|
2164
2242
|
name: "[Gen 4] OU",
|
|
@@ -2170,7 +2248,7 @@ export const Formats: FormatList = [
|
|
|
2170
2248
|
|
|
2171
2249
|
mod: 'gen4',
|
|
2172
2250
|
ruleset: ['Standard'],
|
|
2173
|
-
banlist: ['AG', 'Uber', 'Arena Trap', 'Sand Veil', 'Swinub + Snow Cloak', 'Piloswine + Snow Cloak', 'Mamoswine + Snow Cloak', 'Soul Dew', 'Baton Pass'],
|
|
2251
|
+
banlist: ['AG', 'Uber', 'Arena Trap', 'Sand Veil', 'Swinub + Snow Cloak', 'Piloswine + Snow Cloak', 'Mamoswine + Snow Cloak', 'Soul Dew', 'Baton Pass', 'Swagger'],
|
|
2174
2252
|
},
|
|
2175
2253
|
{
|
|
2176
2254
|
name: "[Gen 3] OU",
|
|
@@ -2181,7 +2259,7 @@ export const Formats: FormatList = [
|
|
|
2181
2259
|
|
|
2182
2260
|
mod: 'gen3',
|
|
2183
2261
|
ruleset: ['Standard', 'One Boost Passer Clause'],
|
|
2184
|
-
banlist: ['Uber', 'Sand Veil', 'Smeargle + Ingrain'],
|
|
2262
|
+
banlist: ['Uber', 'Sand Veil', 'Assist', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain'],
|
|
2185
2263
|
},
|
|
2186
2264
|
{
|
|
2187
2265
|
name: "[Gen 2] OU",
|
|
@@ -2331,6 +2409,16 @@ export const Formats: FormatList = [
|
|
|
2331
2409
|
mod: 'gen6',
|
|
2332
2410
|
ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'],
|
|
2333
2411
|
},
|
|
2412
|
+
{
|
|
2413
|
+
name: "[Gen 5] ZU",
|
|
2414
|
+
threads: [
|
|
2415
|
+
`• <a href="https://www.smogon.com/forums/posts/8034680/">BW2 ZU</a>`,
|
|
2416
|
+
],
|
|
2417
|
+
|
|
2418
|
+
mod: 'gen5',
|
|
2419
|
+
ruleset: ['[Gen 5] PU'],
|
|
2420
|
+
banlist: ['PU', 'Dragonair', 'Glalie', 'Machoke', 'Marowak', 'Omanyte', 'Regigigas', 'Trubbish', 'Whirlipede', 'Baton Pass'],
|
|
2421
|
+
},
|
|
2334
2422
|
|
|
2335
2423
|
// US/UM Singles
|
|
2336
2424
|
///////////////////////////////////////////////////////////////////
|
|
@@ -2748,6 +2836,26 @@ export const Formats: FormatList = [
|
|
|
2748
2836
|
'Soul Dew', 'Baton Pass',
|
|
2749
2837
|
],
|
|
2750
2838
|
},
|
|
2839
|
+
{
|
|
2840
|
+
name: "[Gen 6] 1v1",
|
|
2841
|
+
desc: `Bring three Pokémon to Team Preview and choose one to battle.`,
|
|
2842
|
+
threads: [
|
|
2843
|
+
`• <a href="https://www.smogon.com/forums/posts/8031459/">ORAS 1v1</a>`,
|
|
2844
|
+
],
|
|
2845
|
+
|
|
2846
|
+
mod: 'gen6',
|
|
2847
|
+
searchShow: false,
|
|
2848
|
+
ruleset: [
|
|
2849
|
+
'Max Team Size = 3', 'Picked Team Size = 1',
|
|
2850
|
+
'Obtainable', 'Nickname Clause', 'Moody Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Accuracy Moves Clause', 'Swagger Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview',
|
|
2851
|
+
],
|
|
2852
|
+
banlist: [
|
|
2853
|
+
'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
|
|
2854
|
+
'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
|
|
2855
|
+
'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
|
|
2856
|
+
'Focus Sash', 'Soul Dew', 'Perish Song',
|
|
2857
|
+
],
|
|
2858
|
+
},
|
|
2751
2859
|
{
|
|
2752
2860
|
name: "[Gen 6] Anything Goes",
|
|
2753
2861
|
threads: [
|
|
@@ -2967,7 +3075,7 @@ export const Formats: FormatList = [
|
|
|
2967
3075
|
mod: 'gen5',
|
|
2968
3076
|
searchShow: false,
|
|
2969
3077
|
ruleset: ['[Gen 5] NU', 'Sleep Moves Clause'],
|
|
2970
|
-
banlist: ['NU', '
|
|
3078
|
+
banlist: ['NU', 'PUBL'],
|
|
2971
3079
|
},
|
|
2972
3080
|
{
|
|
2973
3081
|
name: "[Gen 5] LC",
|
|
@@ -3037,6 +3145,20 @@ export const Formats: FormatList = [
|
|
|
3037
3145
|
section: 'B2/W2 Doubles',
|
|
3038
3146
|
column: 4,
|
|
3039
3147
|
},
|
|
3148
|
+
{
|
|
3149
|
+
name: "[Gen 5] Doubles OU",
|
|
3150
|
+
threads: [
|
|
3151
|
+
`• <a href="https://www.smogon.com/forums/threads/3606719/">BW2 Doubles Metagame Discussion</a>`,
|
|
3152
|
+
`• <a href="https://www.smogon.com/forums/posts/7393048/">BW2 Doubles Viability Rankings</a>`,
|
|
3153
|
+
`• <a href="https://www.smogon.com/forums/posts/7393081/">BW2 Doubles Sample Teams</a>`,
|
|
3154
|
+
],
|
|
3155
|
+
|
|
3156
|
+
mod: 'gen5',
|
|
3157
|
+
gameType: 'doubles',
|
|
3158
|
+
searchShow: false,
|
|
3159
|
+
ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
|
|
3160
|
+
banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Gravity'],
|
|
3161
|
+
},
|
|
3040
3162
|
{
|
|
3041
3163
|
name: "[Gen 5] VGC 2013",
|
|
3042
3164
|
|
|
@@ -3094,17 +3216,6 @@ export const Formats: FormatList = [
|
|
|
3094
3216
|
section: "DPP Singles",
|
|
3095
3217
|
column: 5,
|
|
3096
3218
|
},
|
|
3097
|
-
{
|
|
3098
|
-
name: "[Gen 4] Ubers",
|
|
3099
|
-
threads: [
|
|
3100
|
-
`• <a href="https://www.smogon.com/forums/posts/8286279/">DPP Ubers</a>`,
|
|
3101
|
-
],
|
|
3102
|
-
|
|
3103
|
-
mod: 'gen4',
|
|
3104
|
-
searchShow: false,
|
|
3105
|
-
ruleset: ['Standard'],
|
|
3106
|
-
banlist: ['AG'],
|
|
3107
|
-
},
|
|
3108
3219
|
{
|
|
3109
3220
|
name: "[Gen 4] UU",
|
|
3110
3221
|
threads: [
|
|
@@ -3116,7 +3227,7 @@ export const Formats: FormatList = [
|
|
|
3116
3227
|
searchShow: false,
|
|
3117
3228
|
ruleset: ['[Gen 4] OU'],
|
|
3118
3229
|
banlist: ['OU', 'UUBL'],
|
|
3119
|
-
unbanlist: ['Arena Trap'],
|
|
3230
|
+
unbanlist: ['Arena Trap', 'Swagger'],
|
|
3120
3231
|
},
|
|
3121
3232
|
{
|
|
3122
3233
|
name: "[Gen 4] NU",
|
|
@@ -3176,8 +3287,8 @@ export const Formats: FormatList = [
|
|
|
3176
3287
|
'Picked Team Size = 1', 'Max Team Size = 3',
|
|
3177
3288
|
'[Gen 4] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
|
|
3178
3289
|
],
|
|
3179
|
-
banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
|
|
3180
|
-
unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil'],
|
|
3290
|
+
banlist: ['Latias', 'Machamp', 'Porygon-Z', 'Shaymin', 'Snorlax', 'Togekiss', 'Focus Sash', 'Destiny Bond', 'Explosion', 'Perish Song', 'Self-Destruct'],
|
|
3291
|
+
unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil', 'Swagger'],
|
|
3181
3292
|
},
|
|
3182
3293
|
{
|
|
3183
3294
|
name: "[Gen 4] Anything Goes",
|
|
@@ -3213,7 +3324,7 @@ export const Formats: FormatList = [
|
|
|
3213
3324
|
searchShow: false,
|
|
3214
3325
|
ruleset: ['[Gen 4] OU'],
|
|
3215
3326
|
banlist: ['Explosion'],
|
|
3216
|
-
unbanlist: ['Garchomp', 'Latias', 'Latios', 'Manaphy', 'Mew', 'Salamence', 'Wobbuffet', 'Wynaut'],
|
|
3327
|
+
unbanlist: ['Garchomp', 'Latias', 'Latios', 'Manaphy', 'Mew', 'Salamence', 'Wobbuffet', 'Wynaut', 'Swagger'],
|
|
3217
3328
|
},
|
|
3218
3329
|
{
|
|
3219
3330
|
name: "[Gen 4] VGC 2010",
|
|
@@ -3261,22 +3372,9 @@ export const Formats: FormatList = [
|
|
|
3261
3372
|
|
|
3262
3373
|
mod: 'gen3',
|
|
3263
3374
|
searchShow: false,
|
|
3264
|
-
ruleset: ['Standard', 'Deoxys Camouflage Clause'],
|
|
3375
|
+
ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'],
|
|
3265
3376
|
banlist: ['Wobbuffet + Leftovers'],
|
|
3266
3377
|
},
|
|
3267
|
-
{
|
|
3268
|
-
name: "[Gen 3] UU",
|
|
3269
|
-
threads: [
|
|
3270
|
-
`• <a href="https://www.smogon.com/forums/threads/3585923/">ADV UU Metagame Discussion</a>`,
|
|
3271
|
-
`• <a href="https://www.smogon.com/forums/threads/3548578/">ADV UU Viability Rankings</a>`,
|
|
3272
|
-
],
|
|
3273
|
-
|
|
3274
|
-
mod: 'gen3',
|
|
3275
|
-
searchShow: false,
|
|
3276
|
-
ruleset: ['Standard', 'NFE Clause'],
|
|
3277
|
-
banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Baton Pass'],
|
|
3278
|
-
unbanlist: ['Scyther', 'Sand Veil'],
|
|
3279
|
-
},
|
|
3280
3378
|
{
|
|
3281
3379
|
name: "[Gen 3] NU",
|
|
3282
3380
|
threads: [
|
|
@@ -3374,7 +3472,10 @@ export const Formats: FormatList = [
|
|
|
3374
3472
|
'Picked Team Size = 1', 'Max Team Size = 3',
|
|
3375
3473
|
'[Gen 2] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
|
|
3376
3474
|
],
|
|
3377
|
-
banlist: [
|
|
3475
|
+
banlist: [
|
|
3476
|
+
'Clefable', 'Snorlax', 'Zapdos', 'Berserk Gene', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Quick Claw',
|
|
3477
|
+
'Attract', 'Destiny Bond', 'Explosion', 'Perish Song', 'Present', 'Self-Destruct', 'Swagger',
|
|
3478
|
+
],
|
|
3378
3479
|
},
|
|
3379
3480
|
{
|
|
3380
3481
|
name: "[Gen 2] Nintendo Cup 2000",
|
|
@@ -3422,15 +3523,16 @@ export const Formats: FormatList = [
|
|
|
3422
3523
|
ruleset: ['Standard'],
|
|
3423
3524
|
},
|
|
3424
3525
|
{
|
|
3425
|
-
name: "[Gen 1]
|
|
3526
|
+
name: "[Gen 1] UU",
|
|
3426
3527
|
threads: [
|
|
3427
|
-
`• <a href="https://www.smogon.com/forums/threads/
|
|
3528
|
+
`• <a href="https://www.smogon.com/forums/threads/3573896/">RBY UU Metagame Discussion</a>`,
|
|
3529
|
+
`• <a href="https://www.smogon.com/forums/threads/3647713/">RBY UU Viability Rankings</a>`,
|
|
3428
3530
|
],
|
|
3429
3531
|
|
|
3430
3532
|
mod: 'gen1',
|
|
3431
3533
|
searchShow: false,
|
|
3432
|
-
ruleset: ['[Gen 1]
|
|
3433
|
-
banlist: ['
|
|
3534
|
+
ruleset: ['[Gen 1] OU'],
|
|
3535
|
+
banlist: ['OU', 'UUBL'],
|
|
3434
3536
|
},
|
|
3435
3537
|
{
|
|
3436
3538
|
name: "[Gen 1] Japanese OU",
|