mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-03-21 17:25:10 -05:00
In most other similar systems, like TeamValidator, we use `thing.dex` instead of having it extend `ModdedDex`. Battle has always extended `ModdedDex`, though. This changes Battle to match the others. This should fix an issue with `Battle.data` not being cached. This also frees up Battle to extend ObjectReadWriteStream<string> in a future update.
2122 lines
72 KiB
JavaScript
2122 lines
72 KiB
JavaScript
'use strict';
|
|
|
|
// Note: This is the list of formats
|
|
// The rules that formats use are stored in data/rulesets.js
|
|
|
|
/**@type {(FormatsData | {section: string, column?: number})[]} */
|
|
let Formats = [
|
|
|
|
// US/UM Singles
|
|
///////////////////////////////////////////////////////////////////
|
|
{
|
|
section: "US/UM Singles",
|
|
},
|
|
{
|
|
name: "[Gen 7] Random Battle",
|
|
desc: `Randomized teams of level-balanced Pokémon with sets that are generated to be competitively viable.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3591157/">Sets and Suggestions</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3616946/">Role Compendium</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
team: 'random',
|
|
ruleset: ['PotD', 'Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Unrated Random Battle",
|
|
|
|
mod: 'gen7',
|
|
team: 'random',
|
|
challengeShow: false,
|
|
rated: false,
|
|
ruleset: ['PotD', 'Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7] OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3646999/">OU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3621329/">OU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3638845/">OU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['Obtainable', 'Standard', 'Team Preview'],
|
|
banlist: ['Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass'],
|
|
},
|
|
{
|
|
name: "[Gen 7] OU (Blitz)",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3646999/">OU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3621329/">OU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3638845/">OU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] OU', 'Blitz'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Ubers",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3621030/">Ubers Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3623296/">Ubers Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3639330/">Ubers Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['Obtainable', 'Standard', 'Team Preview', 'Mega Rayquaza Clause'],
|
|
banlist: ['Baton Pass'],
|
|
},
|
|
{
|
|
name: "[Gen 7] UU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3652404/">UU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3641346/">UU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3621217/">UU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] OU'],
|
|
banlist: ['OU', 'UUBL', 'Drizzle', 'Drought', 'Kommonium Z', 'Mewnium Z'],
|
|
},
|
|
{
|
|
name: "[Gen 7] RU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3646905/">RU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3645873/">RU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3645338/">RU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] UU'],
|
|
banlist: ['UU', 'RUBL', 'Mimikyu', 'Aurora Veil'],
|
|
unbanlist: ['Drought'],
|
|
},
|
|
{
|
|
name: "[Gen 7] NU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3650934/">NU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3645166/">NU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3632667/">NU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] RU'],
|
|
banlist: ['RU', 'NUBL', 'Drought'],
|
|
},
|
|
{
|
|
name: "[Gen 7] PU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3652157/">PU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3614892/">PU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3611496/">PU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] NU'],
|
|
banlist: ['NU', 'PUBL'],
|
|
},
|
|
{
|
|
name: "[Gen 7] LC",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3587196/">LC Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/dex/sm/formats/lc/">LC Banlist</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3621440/">LC Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3639319/">LC Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
maxLevel: 5,
|
|
ruleset: ['Obtainable', 'Standard', 'Swagger Clause', 'Team Preview', 'Little Cup'],
|
|
banlist: [
|
|
'Aipom', 'Cutiefly', 'Drifloon', 'Gligar', 'Gothita', 'Meditite', 'Misdreavus', 'Murkrow', 'Porygon',
|
|
'Scyther', 'Sneasel', 'Swirlix', 'Tangela', 'Trapinch', 'Vulpix-Base', 'Wingull', 'Yanma',
|
|
'Eevium Z', 'Baton Pass', 'Dragon Rage', 'Sonic Boom',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 7] LC UU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3628499/">LC UU</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
searchShow: false,
|
|
maxLevel: 5,
|
|
ruleset: ['[Gen 7] LC'],
|
|
banlist: [
|
|
// LC
|
|
'Abra', 'Anorith', 'Bunnelby', 'Carvanha', 'Chinchou', 'Clamperl', 'Corphish', 'Croagunk', 'Dewpider', 'Diglett-Base',
|
|
'Doduo', 'Drilbur', 'Dwebble', 'Elekid', 'Ferroseed', 'Foongus', 'Gastly', 'Grimer-Alola', 'Magnemite', 'Mareanie',
|
|
'Meowth-Base', 'Mienfoo', 'Mudbray', 'Onix', 'Pawniard', 'Pikipek', 'Ponyta', 'Pumpkaboo-Super', 'Scraggy', 'Shellder',
|
|
'Snivy', 'Snubbull', 'Spritzee', 'Staryu', 'Surskit', 'Timburr', 'Tirtouga', 'Vullaby', 'Vulpix-Alola', 'Zigzagoon',
|
|
// LC UUBL
|
|
'Magby', 'Rufflet', 'Wynaut', 'Deep Sea Tooth',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 7] Monotype",
|
|
desc: `All the Pokémon on a team must share a type.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3621036/">Monotype Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3622349">Monotype Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3599682/">Monotype Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['Obtainable', 'Standard', 'Swagger Clause', 'Same Type Clause', 'Team Preview'],
|
|
banlist: [
|
|
'Aegislash', 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Dialga', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon',
|
|
'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kartana', 'Kyogre', 'Kyurem-White', 'Lucario-Mega', 'Lugia', 'Lunala', 'Magearna',
|
|
'Marshadow', 'Mawile-Mega', 'Medicham-Mega', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
|
|
'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Tapu Lele', 'Xerneas', 'Yveltal', 'Zekrom', 'Zygarde',
|
|
'Battle Bond', 'Shadow Tag', 'Damp Rock', 'Smooth Rock', 'Terrain Extender', 'Baton Pass',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 7] Anything Goes",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3587441/">Anything Goes Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3591711/">Anything Goes Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3646736/">Anything Goes Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['Obtainable', 'Endless Battle Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7] 1v1",
|
|
desc: `Bring three Pokémon to Team Preview and choose one to battle.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3646757/">1v1 Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3646758/">1v1 Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3646826/">1v1 Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
teamLength: {
|
|
validate: [1, 3],
|
|
battle: 1,
|
|
},
|
|
allowMultisearch: true,
|
|
ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'Moody Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Accuracy Moves Clause', 'Swagger Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview'],
|
|
banlist: [
|
|
'Arceus', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
|
|
'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo',
|
|
'Mimikyu', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky',
|
|
'Snorlax', 'Solgaleo', 'Tapu Koko', 'Xerneas', 'Yveltal', 'Zekrom', 'Focus Sash', 'Perish Song', 'Detect + Fightinium Z',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 7] ZU",
|
|
desc: `The unofficial usage-based tier below PU.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3646743/">ZU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3643412/">ZU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3646739/">ZU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] PU'],
|
|
banlist: [
|
|
'PU', 'Carracosta', 'Crabominable', 'Gorebyss', 'Jynx', 'Raticate-Alola',
|
|
'Raticate-Alola-Totem', 'Throh', 'Turtonator', 'Type: Null', 'Ursaring', 'Victreebel',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 7] NFE",
|
|
desc: `Only Pokémon that can evolve are allowed.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3648183/">NFE</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 7] OU'],
|
|
banlist: [
|
|
'Chansey', 'Doublade', 'Gligar', 'Golbat', 'Gurdurr', 'Magneton', 'Piloswine',
|
|
'Porygon2', 'Rhydon', 'Scyther', 'Sneasel', 'Type: Null', 'Vigoroth',
|
|
'Drought', 'Aurora Veil',
|
|
],
|
|
onValidateSet(set) {
|
|
let template = this.dex.getTemplate(set.species || set.name);
|
|
if (!template.nfe) {
|
|
return [set.species + " cannot evolve."];
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] CAP",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3621207/">CAP Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3626018/">CAP Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3648521/">CAP Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] OU', '+CAP'],
|
|
banlist: [
|
|
'Aurumoth + Quiver Dance', 'Crucibelle + Head Smash', 'Crucibelle + Low Kick',
|
|
'Tomohawk + Earth Power', 'Tomohawk + Reflect',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 7] CAP LC",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3599594/">CAP LC</a>`],
|
|
|
|
mod: 'gen7',
|
|
searchShow: false,
|
|
maxLevel: 5,
|
|
ruleset: ['[Gen 7] LC', '+CAP'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Battle Spot Singles",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3601012/">Introduction to Battle Spot Singles</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3605970/">Battle Spot Singles Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3601658/">Battle Spot Singles Roles Compendium</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3619162/">Battle Spot Singles Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
maxForcedLevel: 50,
|
|
teamLength: {
|
|
validate: [3, 6],
|
|
battle: 3,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
requirePentagon: true,
|
|
},
|
|
{
|
|
name: "[Gen 7] Battle Spot Special 17",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3653945/">Battle Spot Special 17</a>`],
|
|
|
|
mod: 'gen7',
|
|
maxForcedLevel: 1,
|
|
teamLength: {
|
|
validate: [3, 6],
|
|
battle: 3,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
banlist: ['Sonic Boom', 'Dragon Rage', 'Type: Null', 'Poipole'],
|
|
onValidateSet(set) {
|
|
let allowedNonLittleCupMons = [
|
|
'Accelgor', 'Aerodactyl', 'Alomomola', 'Arcanine', 'Aromatisse', 'Audino', 'Basculin', 'Bouffalant', 'Bruxish', 'Carbink',
|
|
'Carnivine', 'Castform', 'Chansey', 'Chatot', 'Cinccino', 'Cloyster', 'Comfey', 'Corsola', 'Cryogonal', 'Dedenne', 'Delcatty',
|
|
'Delibird', 'Dhelmise', 'Drampa', 'Druddigon', 'Dunsparce', 'Durant', 'Emolga', 'Escavalier', 'Exeggutor', 'Farfetch\'d',
|
|
'Flareon', 'Froslass', 'Furfrou', 'Girafarig', 'Gorebyss', 'Gourgeist', 'Gyarados', 'Hawlucha', 'Heatmor', 'Heliolisk',
|
|
'Heracross', 'Honchkrow', 'Huntail', 'Illumise', 'Jolteon', 'Kangaskhan', 'Kecleon', 'Klefki', 'Komala', 'Lapras', 'Lilligant',
|
|
'Lunatone', 'Luvdisc', 'Mantine', 'Maractus', 'Marill', 'Mawile', 'Milotic', 'Miltank', 'Mimikyu', 'Minior', 'Minun', 'Mismagius',
|
|
'Mr. Mime', 'Musharna', 'Ninetales', 'Oranguru', 'Oricorio', 'Pachirisu', 'Passimian', 'Pinsir', 'Plusle', 'Porygon-Z', 'Porygon2',
|
|
'Pyukumuku', 'Qwilfish', 'Regigigas', 'Relicanth', 'Roselia', 'Roserade', 'Rotom', 'Sableye', 'Sawk', 'Scizor', 'Seviper', 'Shuckle',
|
|
'Sigilyph', 'Simipour', 'Simisage', 'Simisear', 'Skarmory', 'Slowking', 'Slurpuff', 'Smeargle', 'Snorlax', 'Solrock', 'Spinda',
|
|
'Spiritomb', 'Stantler', 'Starmie', 'Steelix', 'Stunfisk', 'Sudowoodo', 'Sunflora', 'Tauros', 'Throh', 'Togedemaru', 'Torkoal',
|
|
'Trevenant', 'Tropius', 'Turtonator', 'Vaporeon', 'Volbeat', 'Whimsicott', 'Wishiwashi', 'Wobbuffet', 'Zangoose',
|
|
];
|
|
let template = this.dex.getTemplate(set.species || set.name);
|
|
let futureGenEvo = template.evos && this.dex.getTemplate(template.evos[0]).gen > this.gen;
|
|
if ((template.prevo && this.dex.getTemplate(template.prevo).gen <= this.gen || (!template.nfe || futureGenEvo)) && !allowedNonLittleCupMons.includes(template.baseSpecies) && template.speciesid !== 'sandslashalola') {
|
|
return [set.species + " isn't obtainable at Level 1."];
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] Ultra Final",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3654575/">Ultra Final Discussion</a>`],
|
|
|
|
mod: 'gen7',
|
|
forcedLevel: 100,
|
|
teamLength: {
|
|
validate: [3, 6],
|
|
battle: 3,
|
|
},
|
|
ruleset: ['Obtainable', 'Nickname Clause', 'Team Preview', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Custom Game",
|
|
|
|
mod: 'gen7',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
teamLength: {
|
|
validate: [1, 24],
|
|
battle: 24,
|
|
},
|
|
// no restrictions, for serious (other than team preview)
|
|
ruleset: ['Team Preview', 'Cancel Mod'],
|
|
},
|
|
|
|
// US/UM Doubles
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "US/UM Doubles",
|
|
},
|
|
{
|
|
name: "[Gen 7] Random Doubles Battle",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3601525/">Sets and Suggestions</a>`],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
team: 'random',
|
|
ruleset: ['PotD', 'Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Doubles OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3648227/">Doubles OU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3623347/">Doubles OU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3645990/">Doubles OU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
ruleset: ['Obtainable', 'Standard Doubles', 'Swagger Clause', 'Team Preview'],
|
|
banlist: ['DUber', 'Power Construct', 'Eevium Z', 'Dark Void', 'Gravity ++ Grass Whistle', 'Gravity ++ Hypnosis', 'Gravity ++ Lovely Kiss', 'Gravity ++ Sing', 'Gravity ++ Sleep Powder'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Doubles Ubers",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3635755/">Doubles Ubers</a>`],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
ruleset: ['Obtainable', 'Standard Doubles', 'Team Preview'],
|
|
banlist: ['Dark Void'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Doubles UU",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3598014/">Doubles UU Metagame Discussion</a>`],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
ruleset: ['[Gen 7] Doubles OU'],
|
|
banlist: ['DOU', 'DBL'],
|
|
},
|
|
{
|
|
name: "[Gen 7] VGC 2019 Sun Series",
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
forcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
ruleset: ['Obtainable', 'Minimal GBU', 'VGC Timer'],
|
|
banlist: ['Unown', 'Dragon Ascent', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry'],
|
|
requirePlus: true,
|
|
onValidateTeam(team) {
|
|
const legends = ['Mewtwo', 'Lugia', 'Ho-Oh', 'Kyogre', 'Groudon', 'Rayquaza', 'Dialga', 'Palkia', 'Giratina', 'Reshiram', 'Zekrom', 'Kyurem', 'Xerneas', 'Yveltal', 'Zygarde', 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma'];
|
|
let n = 0;
|
|
let problems = [];
|
|
for (const set of team) {
|
|
const baseSpecies = this.dex.getTemplate(set.species).baseSpecies;
|
|
if (legends.includes(baseSpecies)) {
|
|
n++;
|
|
if (n === 3) problems.push(`You can only use up to two legendary Pok\u00E9mon.`);
|
|
}
|
|
const item = this.dex.getItem(set.item);
|
|
if (item.zMove || item.megaStone || ['redorb', 'blueorb'].includes(item.id)) problems.push(`${set.name || set.species}'s item ${item.name} is banned.`);
|
|
}
|
|
return problems;
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] VGC 2019 Moon Series",
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
forcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
ruleset: ['Obtainable', 'Minimal GBU', 'VGC Timer'],
|
|
banlist: ['Unown', 'Dragon Ascent'],
|
|
requirePlus: true,
|
|
onValidateTeam(team) {
|
|
const legends = ['Mewtwo', 'Lugia', 'Ho-Oh', 'Kyogre', 'Groudon', 'Rayquaza', 'Dialga', 'Palkia', 'Giratina', 'Reshiram', 'Zekrom', 'Kyurem', 'Xerneas', 'Yveltal', 'Zygarde', 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma'];
|
|
let n = 0;
|
|
let problems = [];
|
|
for (const set of team) {
|
|
const baseSpecies = this.dex.getTemplate(set.species).baseSpecies;
|
|
if (legends.includes(baseSpecies)) {
|
|
n++;
|
|
if (n === 3) problems.push(`You can only use up to two legendary Pok\u00E9mon.`);
|
|
}
|
|
const item = this.dex.getItem(set.item);
|
|
if (item.megaStone || ['redorb', 'blueorb', 'ultranecroziumz'].includes(item.id)) problems.push(`${set.name || set.species}'s item ${item.name} is banned.`);
|
|
}
|
|
return problems;
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] VGC 2019 Ultra Series",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3641100/">VGC 2019 Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3641123/">VGC 2019 Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
forcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
ruleset: ['Obtainable', 'Minimal GBU', 'VGC Timer'],
|
|
banlist: ['Unown'],
|
|
requirePlus: true,
|
|
onValidateTeam(team) {
|
|
const legends = ['Mewtwo', 'Lugia', 'Ho-Oh', 'Kyogre', 'Groudon', 'Rayquaza', 'Dialga', 'Palkia', 'Giratina', 'Reshiram', 'Zekrom', 'Kyurem', 'Xerneas', 'Yveltal', 'Zygarde', 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma'];
|
|
let n = 0;
|
|
for (const set of team) {
|
|
const baseSpecies = this.dex.getTemplate(set.species).baseSpecies;
|
|
if (legends.includes(baseSpecies)) n++;
|
|
if (n > 2) return [`You can only use up to two legendary Pok\u00E9mon.`];
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] VGC 2018",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3631800/">VGC 2018 Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3622041/">VGC 2018 Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3628885/">VGC 2018 Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
forcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
timer: {starting: 5 * 60, addPerTurn: 0, maxPerTurn: 55, maxFirstTurn: 90, grace: 90, timeoutAutoChoose: true, dcTimerBank: false},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
banlist: ['Unown', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry'],
|
|
requirePlus: true,
|
|
},
|
|
{
|
|
name: "[Gen 7] VGC 2017",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3583926/">VGC 2017 Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3591794/">VGC 2017 Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3590391/">VGC 2017 Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'vgc17',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
forcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
timer: {starting: 15 * 60, addPerTurn: 0, maxPerTurn: 55, maxFirstTurn: 90, grace: 90, timeoutAutoChoose: true, dcTimerBank: false},
|
|
ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'Item Clause', 'Team Preview', 'Cancel Mod', 'Alola Pokedex'],
|
|
banlist: [
|
|
'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zygarde', 'Mega',
|
|
'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry',
|
|
],
|
|
requirePlus: true,
|
|
},
|
|
{
|
|
name: "[Gen 7] Battle Spot Doubles",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3595001/">Battle Spot Doubles Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3593890/">Battle Spot Doubles Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3595859/">Battle Spot Doubles Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
maxForcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
requirePentagon: true,
|
|
},
|
|
{
|
|
name: "[Gen 7] 2v2 Doubles",
|
|
desc: `Double battle where you bring four Pokémon to Team Preview and choose only two.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3606989/">2v2 Doubles</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
teamLength: {
|
|
validate: [2, 4],
|
|
battle: 2,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard Doubles', 'Accuracy Moves Clause', 'Swagger Clause', 'Z-Move Clause', 'Sleep Clause Mod', 'Team Preview'],
|
|
banlist: [
|
|
'Arceus', 'Dialga', 'Giratina', 'Groudon', 'Ho-Oh', 'Jirachi', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White',
|
|
'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
|
|
'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Snorlax', 'Solgaleo', 'Tapu Lele', 'Xerneas', 'Yveltal', 'Zekrom',
|
|
'Power Construct', 'Eevium Z', 'Focus Sash', 'Dark Void', 'Final Gambit', 'Perish Song',
|
|
'Gravity ++ Grass Whistle', 'Gravity ++ Hypnosis', 'Gravity ++ Lovely Kiss', 'Gravity ++ Sing', 'Gravity ++ Sleep Powder',
|
|
],
|
|
},
|
|
{
|
|
name: '[Gen 7] Metronome Battle',
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3632075/">Metronome Battle</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
rated: false,
|
|
teamLength: {
|
|
validate: [2, 2],
|
|
battle: 2,
|
|
},
|
|
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
banlist: [
|
|
'Pokestar Spirit', 'Battle Bond', 'Cheek Pouch', 'Cursed Body', 'Desolate Land', 'Dry Skin', 'Fluffy', 'Fur Coat', 'Grassy Surge',
|
|
'Huge Power', 'Ice Body', 'Iron Barbs', 'Moody', 'Parental Bond', 'Poison Heal', 'Power Construct', 'Pressure', 'Primordial Sea', 'Protean',
|
|
'Pure Power', 'Rain Dish', 'Rough Skin', 'Sand Stream', 'Schooling', 'Snow Warning', 'Stamina', 'Volt Absorb', 'Water Absorb', 'Wonder Guard',
|
|
'Abomasite', 'Aguav Berry', 'Assault Vest', 'Berry', 'Berry Juice', 'Berserk Gene', 'Black Sludge', 'Enigma Berry', 'Figy Berry', 'Gold Berry',
|
|
'Iapapa Berry', 'Kangaskhanite', 'Leftovers', 'Mago Berry', 'Medichamite', 'Normalium Z', 'Oran Berry', 'Rocky Helmet', 'Shell Bell',
|
|
'Sitrus Berry', 'Wiki Berry', 'Harvest + Rowap Berry', 'Harvest + Jaboca Berry', 'Shedinja + Sturdy',
|
|
],
|
|
onValidateSet(set) {
|
|
let template = this.dex.getTemplate(set.species);
|
|
if (template.types.includes('Steel')) return [`${template.species} is a Steel-type, which is banned from Metronome Battle.`];
|
|
let bst = 0;
|
|
for (let stat in template.baseStats) {
|
|
// @ts-ignore
|
|
bst += template.baseStats[stat];
|
|
}
|
|
if (bst > 625) return [`${template.species} is banned.`, `(Pok\u00e9mon with a BST higher than 625 are banned)`];
|
|
let item = this.dex.getItem(set.item);
|
|
if (set.item && item.megaStone) {
|
|
let bstMega = 0;
|
|
let megaTemplate = this.dex.getTemplate(item.megaStone);
|
|
for (let stat in megaTemplate.baseStats) {
|
|
// @ts-ignore
|
|
bstMega += megaTemplate.baseStats[stat];
|
|
}
|
|
if (template.baseSpecies === item.megaEvolves && bstMega > 625) return [`${set.name || set.species}'s item ${item.name} is banned.`, `(Pok\u00e9mon with a BST higher than 625 are banned)`];
|
|
}
|
|
if (set.moves.length !== 1 || this.dex.getMove(set.moves[0]).id !== 'metronome') return [`${set.name || set.species} has illegal moves.`, `(Pok\u00e9mon can only have one Metronome in their moveset)`];
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] Doubles Custom Game",
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
debug: true,
|
|
teamLength: {
|
|
validate: [2, 24],
|
|
battle: 24,
|
|
},
|
|
// no restrictions, for serious (other than team preview)
|
|
ruleset: ['Team Preview', 'Cancel Mod'],
|
|
},
|
|
|
|
// Other Metagames
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "OM of the Month",
|
|
column: 2,
|
|
},
|
|
{
|
|
name: "[Gen 7] Inheritance",
|
|
desc: `Pokémon may use the ability and moves of another, as long as they forfeit their own learnset.`,
|
|
threads: [
|
|
`• <a href="http://www.smogon.com/forums/threads/3592844/">Inheritance</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] OU', '!Obtainable Formes', '!Obtainable Abilities', '!Obtainable Moves'],
|
|
banlist: [
|
|
'Blacephalon', 'Chansey', 'Cresselia', 'Hoopa-Unbound', 'Kartana', 'Kyurem-Black', 'Regigigas', 'Shedinja', 'Slaking', 'Gyaradosite',
|
|
'Huge Power', 'Imposter', 'Innards Out', 'Pure Power', 'Speed Boost', 'Water Bubble', 'Assist', 'Chatter', 'Shell Smash',
|
|
],
|
|
// @ts-ignore
|
|
getEvoFamily(species) {
|
|
let template = Dex.getTemplate(species);
|
|
while (template.prevo) {
|
|
template = Dex.getTemplate(template.prevo);
|
|
}
|
|
return template.speciesid;
|
|
},
|
|
validateSet(set, teamHas) {
|
|
// @ts-ignore
|
|
if (!this.format.abilityMap) {
|
|
let abilityMap = Object.create(null);
|
|
for (let speciesid in Dex.data.Pokedex) {
|
|
let pokemon = Dex.getTemplate(speciesid);
|
|
if (pokemon.num < 1 || pokemon.species === 'Murkrow' || pokemon.species === 'Smeargle') continue;
|
|
if (pokemon.requiredItem || pokemon.requiredMove) continue;
|
|
for (const key of Object.values(pokemon.abilities)) {
|
|
let abilityId = toID(key);
|
|
if (abilityMap[abilityId]) {
|
|
abilityMap[abilityId][pokemon.evos ? 'push' : 'unshift'](speciesid);
|
|
} else {
|
|
abilityMap[abilityId] = [speciesid];
|
|
}
|
|
}
|
|
}
|
|
// @ts-ignore
|
|
this.format.abilityMap = abilityMap;
|
|
}
|
|
|
|
/** @type {string[]} */
|
|
let problems = [];
|
|
|
|
let template = Dex.getTemplate(set.species);
|
|
let megaTemplate = Dex.getTemplate(Dex.getItem(set.item).megaStone);
|
|
if (template.tier === 'Uber' || megaTemplate.tier === 'Uber' || this.format.banlist.includes(template.species)) return [`${megaTemplate.tier === 'Uber' ? megaTemplate.species : template.species} is banned.`];
|
|
|
|
let ability = Dex.getAbility(set.ability);
|
|
// @ts-ignore
|
|
let pokemonWithAbility = this.format.abilityMap[ability.id];
|
|
if (!pokemonWithAbility) return [`"${set.ability}" is not available on a legal Pok\u00e9mon.`];
|
|
|
|
let canonicalSource = ''; // Specific for the basic implementation of Donor Clause (see onValidateTeam).
|
|
// @ts-ignore
|
|
let validSources = set.abilitySources = []; // Evolution families
|
|
for (const donor of pokemonWithAbility) {
|
|
let donorTemplate = Dex.getTemplate(donor);
|
|
// @ts-ignore
|
|
let evoFamily = this.format.getEvoFamily(donorTemplate);
|
|
|
|
if (validSources.includes(evoFamily)) continue;
|
|
|
|
if (set.name === set.species) delete set.name;
|
|
set.species = donorTemplate.species;
|
|
problems = this.validateSet(set, teamHas) || [];
|
|
|
|
if (!problems.length) {
|
|
canonicalSource = donorTemplate.species;
|
|
validSources.push(evoFamily);
|
|
}
|
|
if (validSources.length > 1) {
|
|
// Specific for the basic implementation of Donor Clause (see onValidateTeam).
|
|
break;
|
|
}
|
|
}
|
|
|
|
set.species = template.species;
|
|
if (!validSources.length) {
|
|
if (pokemonWithAbility.length > 1) return [`${template.species}'s set is illegal.`];
|
|
problems.unshift(`${template.species} has an illegal set with an ability from ${Dex.getTemplate(pokemonWithAbility[0]).name}.`);
|
|
return problems;
|
|
}
|
|
|
|
// Protocol: Include the data of the donor species in the `ability` data slot.
|
|
// Afterwards, we are going to reset the name to what the user intended. :]
|
|
set.ability = `${set.ability}0${canonicalSource}`;
|
|
},
|
|
onValidateTeam(team, format) {
|
|
// Donor Clause
|
|
let evoFamilyLists = [];
|
|
for (const set of team) {
|
|
// @ts-ignore
|
|
if (!set.abilitySources) continue;
|
|
// @ts-ignore
|
|
evoFamilyLists.push(set.abilitySources.map(format.getEvoFamily));
|
|
}
|
|
|
|
// Checking actual full incompatibility would require expensive algebra.
|
|
// Instead, we only check the trivial case of multiple Pokémon only legal for exactly one family. FIXME?
|
|
let requiredFamilies = Object.create(null);
|
|
for (const evoFamilies of evoFamilyLists) {
|
|
if (evoFamilies.length !== 1) continue;
|
|
let [familyId] = evoFamilies;
|
|
if (!(familyId in requiredFamilies)) requiredFamilies[familyId] = 1;
|
|
requiredFamilies[familyId]++;
|
|
if (requiredFamilies[familyId] > 2) return [`You are limited to up to two inheritances from each evolution family by the Donor Clause.`, `(You inherit more than twice from ${this.dex.getTemplate(familyId).species}).`];
|
|
}
|
|
},
|
|
onBegin() {
|
|
for (const pokemon of this.p1.pokemon.concat(this.p2.pokemon)) {
|
|
if (pokemon.baseAbility.includes('0')) {
|
|
let donor = pokemon.baseAbility.split('0')[1];
|
|
// @ts-ignore
|
|
pokemon.donor = toID(donor);
|
|
// @ts-ignore
|
|
pokemon.baseAbility = pokemon.baseAbility.split('0')[0];
|
|
pokemon.ability = pokemon.baseAbility;
|
|
}
|
|
}
|
|
},
|
|
onSwitchIn(pokemon) {
|
|
// @ts-ignore
|
|
if (!pokemon.donor) return;
|
|
// @ts-ignore
|
|
let donorTemplate = this.dex.getTemplate(pokemon.donor);
|
|
if (!donorTemplate.exists) return;
|
|
// Place volatiles on the Pokémon to show the donor details.
|
|
this.add('-start', pokemon, donorTemplate.species, '[silent]');
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] 350 Cup",
|
|
desc: `Pokémon with a BST of 350 or lower have their stats doubled.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3589641/">350 Cup</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] Ubers'],
|
|
banlist: ['Gengar-Mega', 'Rufflet', 'Arena Trap', 'Shadow Tag', 'Eevium Z', 'Eviolite', 'Deep Sea Tooth', 'Light Ball'],
|
|
onModifyTemplate(template, target, source) {
|
|
if (source) return;
|
|
if (Object.values(template.baseStats).reduce((x, y) => x + y) > 350) return;
|
|
template = Object.assign({}, template);
|
|
// @ts-ignore
|
|
template.baseStats = Object.assign({}, template.baseStats);
|
|
for (let i in template.baseStats) {
|
|
// @ts-ignore
|
|
template.baseStats[i] *= 2;
|
|
}
|
|
return template;
|
|
},
|
|
},
|
|
{
|
|
section: "Other Metagames",
|
|
column: 2,
|
|
},
|
|
{
|
|
name: "[Gen 7] Balanced Hackmons",
|
|
desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3587475/">Balanced Hackmons</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3588586/">BH Suspects and Bans Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3593766/">BH Resources</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['-Nonexistent', 'Ability Clause', 'OHKO Clause', 'Evasion Moves Clause', 'CFZ Clause', 'Sleep Clause Mod', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview'],
|
|
banlist: ['Groudon-Primal', 'Rayquaza-Mega', 'Arena Trap', 'Contrary', 'Huge Power', 'Illusion', 'Innards Out', 'Magnet Pull', 'Moody', 'Parental Bond', 'Protean', 'Psychic Surge', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble', 'Wonder Guard', 'Gengarite', 'Chatter', 'Comatose + Sleep Talk'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Mix and Mega",
|
|
desc: `Mega Stones and Primal Orbs can be used on almost any Pokémon with no Mega Evolution limit.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3587740/">Mix and Mega</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3591580/">Mix and Mega Resources</a>`,
|
|
],
|
|
|
|
mod: 'mixandmega',
|
|
ruleset: ['Obtainable', 'Standard', 'Mega Rayquaza Clause', 'Team Preview'],
|
|
banlist: ['Shadow Tag', 'Gengarite', 'Baton Pass', 'Electrify'],
|
|
restrictedStones: ['Beedrillite', 'Blazikenite', 'Kangaskhanite', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Ultranecrozium Z'],
|
|
cannotMega: [
|
|
'Arceus', 'Deoxys', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Dragonite', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black',
|
|
'Kyurem-White', 'Landorus-Therian', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
|
|
'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shuckle', 'Slaking', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zekrom',
|
|
],
|
|
onValidateTeam(team) {
|
|
/**@type {{[k: string]: true}} */
|
|
let itemTable = {};
|
|
for (const set of team) {
|
|
let item = this.dex.getItem(set.item);
|
|
if (!item) continue;
|
|
if (itemTable[item.id] && item.megaStone) return ["You are limited to one of each Mega Stone.", "(You have more than one " + this.dex.getItem(item).name + ")"];
|
|
if (itemTable[item.id] && ['blueorb', 'redorb'].includes(item.id)) return ["You are limited to one of each Primal Orb.", "(You have more than one " + this.dex.getItem(item).name + ")"];
|
|
itemTable[item.id] = true;
|
|
}
|
|
},
|
|
onValidateSet(set, format) {
|
|
let template = this.dex.getTemplate(set.species || set.name);
|
|
let item = this.dex.getItem(set.item);
|
|
if (!item.megaEvolves && !['blueorb', 'redorb', 'ultranecroziumz'].includes(item.id)) return;
|
|
if (template.baseSpecies === item.megaEvolves || (template.baseSpecies === 'Groudon' && item.id === 'redorb') || (template.baseSpecies === 'Kyogre' && item.id === 'blueorb') || (template.species.substr(0, 9) === 'Necrozma-' && item.id === 'ultranecroziumz')) return;
|
|
let uberStones = format.restrictedStones || [];
|
|
let uberPokemon = format.cannotMega || [];
|
|
if (uberPokemon.includes(template.name) || set.ability === 'Power Construct' || uberStones.includes(item.name)) return ["" + template.species + " is not allowed to hold " + item.name + "."];
|
|
},
|
|
onBegin() {
|
|
for (const pokemon of this.getAllPokemon()) {
|
|
pokemon.m.originalSpecies = pokemon.baseTemplate.species;
|
|
}
|
|
},
|
|
onSwitchIn(pokemon) {
|
|
// @ts-ignore
|
|
let oMegaTemplate = this.dex.getTemplate(pokemon.template.originalMega);
|
|
if (oMegaTemplate.exists && pokemon.m.originalSpecies !== oMegaTemplate.baseSpecies) {
|
|
// Place volatiles on the Pokémon to show its mega-evolved condition and details
|
|
this.add('-start', pokemon, oMegaTemplate.requiredItem || oMegaTemplate.requiredMove, '[silent]');
|
|
let oTemplate = this.dex.getTemplate(pokemon.m.originalSpecies);
|
|
if (oTemplate.types.length !== pokemon.template.types.length || oTemplate.types[1] !== pokemon.template.types[1]) {
|
|
this.add('-start', pokemon, 'typechange', pokemon.template.types.join('/'), '[silent]');
|
|
}
|
|
}
|
|
},
|
|
onSwitchOut(pokemon) {
|
|
// @ts-ignore
|
|
let oMegaTemplate = this.dex.getTemplate(pokemon.template.originalMega);
|
|
if (oMegaTemplate.exists && pokemon.m.originalSpecies !== oMegaTemplate.baseSpecies) {
|
|
this.add('-end', pokemon, oMegaTemplate.requiredItem || oMegaTemplate.requiredMove, '[silent]');
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] Almost Any Ability",
|
|
desc: `Pokémon can use any ability, barring the few that are restricted to their natural users.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3587901/">Almost Any Ability</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3595753/">AAA Resources</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
ruleset: ['[Gen 7] OU', 'Ability Clause', '!Obtainable Abilities'],
|
|
banlist: ['Archeops', 'Dragonite', 'Hoopa-Unbound', 'Kartana', 'Keldeo', 'Kyurem-Black', 'Regigigas', 'Shedinja', 'Slaking', 'Terrakion', 'Victini', 'Weavile'],
|
|
unbanlist: ['Aegislash', 'Genesect', 'Landorus', 'Metagross-Mega', 'Naganadel'],
|
|
restrictedAbilities: [
|
|
'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Huge Power', 'Illusion', 'Imposter', 'Innards Out',
|
|
'Parental Bond', 'Protean', 'Pure Power', 'Simple', 'Speed Boost', 'Stakeout', 'Water Bubble', 'Wonder Guard',
|
|
],
|
|
onValidateSet(set, format) {
|
|
let restrictedAbilities = format.restrictedAbilities || [];
|
|
if (restrictedAbilities.includes(set.ability)) {
|
|
let template = this.dex.getTemplate(set.species || set.name);
|
|
let legalAbility = false;
|
|
for (let i in template.abilities) {
|
|
// @ts-ignore
|
|
if (set.ability === template.abilities[i]) legalAbility = true;
|
|
}
|
|
if (!legalAbility) return ['The ability ' + set.ability + ' is banned on Pok\u00e9mon that do not naturally have it.'];
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] Camomons",
|
|
desc: `Pokémon change type to match their first two moves.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3598418/">Camomons</a>`,
|
|
],
|
|
mod: 'gen7',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 7] OU'],
|
|
banlist: ['Dragonite', 'Kartana', 'Kyurem-Black', 'Latias-Mega', 'Shedinja', 'Kommonium Z'],
|
|
onModifyTemplate(template, target, source, effect) {
|
|
if (!target) return; // Chat command
|
|
if (effect && ['imposter', 'transform'].includes(effect.id)) return;
|
|
let types = [...new Set(target.baseMoveSlots.slice(0, 2).map(move => this.dex.getMove(move.id).type))];
|
|
return Object.assign({}, template, {types: types});
|
|
},
|
|
onSwitchIn(pokemon) {
|
|
this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]');
|
|
},
|
|
onAfterMega(pokemon) {
|
|
this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]');
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] STABmons",
|
|
desc: `Pokémon can use any move of their typing, in addition to the moves they can normally learn.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3587949/">STABmons</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
// searchShow: false,
|
|
ruleset: ['[Gen 7] OU', 'STABmons Move Legality'],
|
|
banlist: ['Aerodactyl', 'Araquanid', 'Blacephalon', 'Kartana', 'Komala', 'Kyurem-Black', 'Porygon-Z', 'Silvally', 'Tapu Koko', 'Tapu Lele', 'Thundurus-Base', 'King\'s Rock', 'Razor Fang'],
|
|
restrictedMoves: ['Acupressure', 'Belly Drum', 'Chatter', 'Extreme Speed', 'Geomancy', 'Lovely Kiss', 'Shell Smash', 'Shift Gear', 'Spore', 'Thousand Arrows'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Tier Shift",
|
|
desc: "Pokémon below OU get all their stats boosted. UU/RUBL get +10, RU/NUBL get +20, NU/PUBL get +30, and PU or lower get +40.",
|
|
threads: [
|
|
"• <a href=\"https://www.smogon.com/forums/threads/3610073/\">Tier Shift</a>",
|
|
],
|
|
|
|
mod: 'gen7',
|
|
// searchShow: false,
|
|
ruleset: ['[Gen 7] OU'],
|
|
banlist: ['Damp Rock', 'Deep Sea Tooth', 'Eviolite'],
|
|
onModifyTemplate(template, target, source, effect) {
|
|
if (!template.abilities) return false;
|
|
/** @type {{[tier: string]: number}} */
|
|
let boosts = {
|
|
'UU': 10,
|
|
'RUBL': 10,
|
|
'RU': 20,
|
|
'NUBL': 20,
|
|
'NU': 30,
|
|
'PUBL': 30,
|
|
'PU': 40,
|
|
'NFE': 40,
|
|
'LC Uber': 40,
|
|
'LC': 40,
|
|
};
|
|
if (target && target.set.ability === 'Drizzle') return;
|
|
let tier = template.tier;
|
|
if (target && target.set.item) {
|
|
let item = this.dex.getItem(target.set.item);
|
|
if (item.name === 'Kommonium Z' || item.name === 'Mewnium Z') return;
|
|
if (item.megaEvolves === template.species) tier = this.dex.getTemplate(item.megaStone).tier;
|
|
}
|
|
if (target && target.set.moves.includes('auroraveil')) tier = 'UU';
|
|
if (target && target.set.ability === 'Drought') tier = 'RU';
|
|
|
|
if (tier[0] === '(') tier = tier.slice(1, -1);
|
|
if (!(tier in boosts)) return;
|
|
let pokemon = this.dex.deepClone(template);
|
|
let boost = boosts[tier];
|
|
for (let statName in pokemon.baseStats) {
|
|
if (statName === 'hp') continue;
|
|
pokemon.baseStats[statName] = this.dex.clampIntRange(pokemon.baseStats[statName] + boost, 1, 255);
|
|
}
|
|
return pokemon;
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] Partners in Crime",
|
|
desc: `Doubles-based metagame where both active ally Pokémon share abilities and moves.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3618488/">Partners in Crime</a>`,
|
|
],
|
|
|
|
mod: 'pic',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 7] Doubles OU', 'Sleep Clause Mod'],
|
|
banlist: [
|
|
'Kangaskhanite', 'Mawilite', 'Medichamite',
|
|
'Huge Power', 'Imposter', 'Normalize', 'Pure Power', 'Wonder Guard', 'Mimic', 'Sketch', 'Sweet Scent', 'Transform',
|
|
],
|
|
onSwitchInPriority: 2,
|
|
onSwitchIn(pokemon) {
|
|
if (this.sides[0].active.every(ally => ally && !ally.fainted)) {
|
|
let p1a = this.sides[0].active[0], p1b = this.sides[0].active[1];
|
|
if (p1a.ability !== p1b.ability) {
|
|
let p1aInnate = 'ability' + p1b.ability;
|
|
p1a.volatiles[p1aInnate] = {id: p1aInnate, target: p1a};
|
|
let p1bInnate = 'ability' + p1a.ability;
|
|
p1b.volatiles[p1bInnate] = {id: p1bInnate, target: p1b};
|
|
}
|
|
}
|
|
if (this.sides[1].active.every(ally => ally && !ally.fainted)) {
|
|
let p2a = this.sides[1].active[0], p2b = this.sides[1].active[1];
|
|
if (p2a.ability !== p2b.ability) {
|
|
let p2a_innate = 'ability' + p2b.ability;
|
|
p2a.volatiles[p2a_innate] = {id: p2a_innate, target: p2a};
|
|
let p2b_innate = 'ability' + p2a.ability;
|
|
p2b.volatiles[p2b_innate] = {id: p2b_innate, target: p2b};
|
|
}
|
|
}
|
|
let ally = pokemon.side.active.find(ally => ally && ally !== pokemon && !ally.fainted);
|
|
if (ally && ally.ability !== pokemon.ability) {
|
|
if (!pokemon.m.innate) {
|
|
pokemon.m.innate = 'ability' + ally.ability;
|
|
delete pokemon.volatiles[pokemon.m.innate];
|
|
pokemon.addVolatile(pokemon.m.innate);
|
|
}
|
|
if (!ally.m.innate) {
|
|
ally.m.innate = 'ability' + pokemon.ability;
|
|
delete ally.volatiles[ally.m.innate];
|
|
ally.addVolatile(ally.m.innate);
|
|
}
|
|
}
|
|
},
|
|
onSwitchOut(pokemon) {
|
|
if (pokemon.m.innate) {
|
|
pokemon.removeVolatile(pokemon.m.innate);
|
|
delete pokemon.m.innate;
|
|
}
|
|
let ally = pokemon.side.active.find(ally => ally && ally !== pokemon && !ally.fainted);
|
|
if (ally && ally.m.innate) {
|
|
ally.removeVolatile(ally.m.innate);
|
|
delete ally.m.innate;
|
|
}
|
|
},
|
|
onFaint(pokemon) {
|
|
if (pokemon.m.innate) {
|
|
pokemon.removeVolatile(pokemon.m.innate);
|
|
delete pokemon.m.innate;
|
|
}
|
|
let ally = pokemon.side.active.find(ally => ally && ally !== pokemon && !ally.fainted);
|
|
if (ally && ally.m.innate) {
|
|
ally.removeVolatile(ally.m.innate);
|
|
delete ally.m.innate;
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 6] Gen-NEXT OU",
|
|
|
|
mod: 'gennext',
|
|
searchShow: false,
|
|
challengeShow: false,
|
|
ruleset: ['Obtainable', 'Standard NEXT', 'Team Preview'],
|
|
banlist: ['Uber'],
|
|
},
|
|
|
|
// Let's Go!
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "Let's Go!",
|
|
column: 2,
|
|
},
|
|
{
|
|
name: "[Gen 7 Let's Go] Random Battle",
|
|
|
|
mod: 'letsgo',
|
|
team: 'random',
|
|
ruleset: ['Obtainable', 'Allow AVs', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7 Let's Go] OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3644015/">LGPE OverUsed</a>`,
|
|
],
|
|
|
|
mod: 'letsgo',
|
|
forcedLevel: 50,
|
|
ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'Evasion Moves Clause', 'OHKO Clause', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview'],
|
|
banlist: ['Uber'],
|
|
},
|
|
{
|
|
name: "[Gen 7 Let's Go] Singles No Restrictions",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3643931/">Let's Go! Discussion</a>`,
|
|
],
|
|
|
|
mod: 'letsgo',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Allow AVs', 'Endless Battle Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7 Let's Go] Custom Game",
|
|
|
|
mod: 'letsgo',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
// no restrictions, for serious (other than team preview)
|
|
ruleset: ['Allow AVs', 'Team Preview', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7 Let's Go] Doubles OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3645303/">LGPE DOU</a>`,
|
|
],
|
|
|
|
mod: 'letsgo',
|
|
gameType: 'doubles',
|
|
forcedLevel: 50,
|
|
ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'Evasion Moves Clause', 'OHKO Clause', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview'],
|
|
banlist: ['Mewtwo'],
|
|
},
|
|
{
|
|
name: "[Gen 7 Let's Go] Doubles No Restrictions",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3643931/">Let's Go! Discussion</a>`,
|
|
],
|
|
|
|
mod: 'letsgo',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Allow AVs', 'Endless Battle Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
|
|
// Randomized Metas
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "Randomized Metas",
|
|
column: 2,
|
|
},
|
|
{
|
|
name: "[Gen 7] Battle Factory",
|
|
desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`,
|
|
|
|
mod: 'gen7',
|
|
team: 'randomFactory',
|
|
ruleset: ['Obtainable', 'Sleep Clause Mod', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Mega Rayquaza Clause'],
|
|
},
|
|
{
|
|
name: "[Gen 7] BSS Factory",
|
|
desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Spot Singles.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3604845/">Information and Suggestions Thread</a>`,
|
|
],
|
|
|
|
mod: 'gen7',
|
|
team: 'randomBSSFactory',
|
|
teamLength: {
|
|
validate: [3, 6],
|
|
battle: 3,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Monotype Random Battle",
|
|
|
|
mod: 'gen7',
|
|
team: 'random',
|
|
ruleset: ['Obtainable', 'Same Type Clause', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Super Staff Bros Brawl",
|
|
desc: "Super Staff Bros returns for another round! Battle with a random team of pokemon created by the sim staff.",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/articles/super-staff-bros-brawl">Introduction & Roster</a>`,
|
|
],
|
|
|
|
mod: 'ssb',
|
|
team: 'randomStaffBros',
|
|
ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod'],
|
|
onBegin() {
|
|
this.add('raw|SUPER STAFF BROS <b>BRAWL</b>!!');
|
|
this.add('message', 'GET READY FOR THE NEXT BATTLE!');
|
|
if (this.teamGenerator.allXfix) this.add(`c|&HoeenHero|Oops I dropped my bag of xfix sets sorry!`);
|
|
this.add(`raw|<div class='broadcast-green'><b>Wondering what all these custom moves, abilities, and items do?<br />Check out the <a href="https://www.smogon.com/articles/super-staff-bros-brawl" target="_blank">Super Staff Bros Brawl Guide</a> and find out!</b></div>`);
|
|
},
|
|
onSwitchInPriority: 100,
|
|
onSwitchIn(pokemon) {
|
|
let name = toID(pokemon.illusion ? pokemon.illusion.name : pokemon.name);
|
|
if (this.dex.getTemplate(name).exists || name === 'rage') {
|
|
// Certain pokemon have volatiles named after their speciesid
|
|
// To prevent overwriting those, and to prevent accidentaly leaking
|
|
// that a pokemon is on a team through the onStart even triggering
|
|
// at the start of a match, users with pokemon names will need their
|
|
// statuse's to end in "user".
|
|
name = /** @type {ID} */(name + 'user');
|
|
}
|
|
// Add the mon's status effect to it as a volatile.
|
|
let status = this.dex.getEffect(name);
|
|
if (status && status.exists) {
|
|
pokemon.addVolatile(name, pokemon);
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 7] Challenge Cup 1v1",
|
|
|
|
mod: 'gen7',
|
|
team: 'randomCC',
|
|
teamLength: {
|
|
battle: 1,
|
|
},
|
|
ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Challenge Cup 2v2",
|
|
|
|
mod: 'gen7',
|
|
team: 'randomCC',
|
|
gameType: 'doubles',
|
|
teamLength: {
|
|
battle: 2,
|
|
},
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Hackmons Cup",
|
|
desc: `Randomized teams of level-balanced Pokémon with absolutely any ability, moves, and item.`,
|
|
|
|
mod: 'gen7',
|
|
team: 'randomHC',
|
|
ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 7] Doubles Hackmons Cup",
|
|
|
|
mod: 'gen7',
|
|
gameType: 'doubles',
|
|
team: 'randomHC',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 6] Random Battle",
|
|
|
|
mod: 'gen6',
|
|
team: 'random',
|
|
ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 6] Battle Factory",
|
|
desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`,
|
|
|
|
mod: 'gen6',
|
|
team: 'randomFactory',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Sleep Clause Mod', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Mega Rayquaza Clause'],
|
|
},
|
|
{
|
|
name: "[Gen 5] Random Battle",
|
|
|
|
mod: 'gen5',
|
|
team: 'random',
|
|
ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 4] Random Battle",
|
|
|
|
mod: 'gen4',
|
|
team: 'random',
|
|
ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 3] Random Battle",
|
|
|
|
mod: 'gen3',
|
|
team: 'random',
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
},
|
|
{
|
|
name: "[Gen 2] Random Battle",
|
|
|
|
mod: 'gen2',
|
|
team: 'random',
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
},
|
|
{
|
|
name: "[Gen 1] Random Battle",
|
|
|
|
mod: 'gen1',
|
|
team: 'random',
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
},
|
|
{
|
|
name: "[Gen 1] Challenge Cup",
|
|
|
|
mod: 'gen1',
|
|
team: 'randomCC',
|
|
searchShow: false,
|
|
challengeShow: false,
|
|
ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
|
|
// RoA Spotlight
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "RoA Spotlight",
|
|
column: 3,
|
|
},
|
|
{
|
|
name: "[Gen 5] Ubers",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3550881/">BW2 Ubers Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/6446463/">BW2 Ubers Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
// searchShow: false,
|
|
ruleset: ['Obtainable', 'Team Preview', 'Standard Ubers'],
|
|
},
|
|
{
|
|
name: "[Gen 6] Monotype",
|
|
desc: `All the Pokémon on a team must share a type.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/posts/7421332/">ORAS Monotype</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
// searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard', 'Swagger Clause', 'Same Type Clause', 'Team Preview'],
|
|
banlist: [
|
|
'Aegislash', 'Altaria-Mega', 'Arceus', 'Blaziken', 'Charizard-Mega-X', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Dialga',
|
|
'Genesect', 'Gengar-Mega', 'Giratina', 'Greninja', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kyogre',
|
|
'Kyurem-White', 'Lucario-Mega', 'Lugia', 'Mawile-Mega', 'Medicham-Mega', 'Metagross-Mega', 'Mewtwo', 'Palkia', 'Rayquaza',
|
|
'Reshiram', 'Sableye-Mega', 'Salamence-Mega', 'Shaymin-Sky', 'Slowbro-Mega', 'Talonflame', 'Xerneas', 'Yveltal', 'Zekrom',
|
|
'Shadow Tag', 'Damp Rock', 'Smooth Rock', 'Soul Dew', 'Baton Pass',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 4] LC",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/dp/articles/little_cup_guide">DPP LC Guide</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/7336500/">DPP LC Viability Ranking</a>`,
|
|
],
|
|
|
|
mod: 'gen4',
|
|
// searchShow: false,
|
|
maxLevel: 5,
|
|
ruleset: ['Obtainable', 'Standard', 'Little Cup'],
|
|
banlist: [
|
|
'LC Uber', 'Misdreavus', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela', 'Yanma',
|
|
'Berry Juice', 'Deep Sea Tooth', 'Dragon Rage', 'Hypnosis', 'Sonic Boom',
|
|
],
|
|
},
|
|
|
|
// Past Gens OU
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "Past Gens OU",
|
|
column: 3,
|
|
},
|
|
{
|
|
name: "[Gen 6] OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/dex/xy/tags/ou/">ORAS OU Banlist</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3623399/">ORAS OU Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3650478/#post-8133793">ORAS OU Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
ruleset: ['Obtainable', 'Standard', 'Team Preview', 'Swagger Clause'],
|
|
banlist: ['Uber', 'Arena Trap', 'Shadow Tag', 'Soul Dew', 'Baton Pass'],
|
|
},
|
|
{
|
|
name: "[Gen 5] OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3599678/">BW2 OU Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3650478/#post-8133791">BW2 Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
ruleset: ['Obtainable', 'Standard', 'Evasion Abilities Clause', 'Baton Pass Clause', 'Swagger Clause', 'Team Preview'],
|
|
banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'Soul Dew'],
|
|
},
|
|
{
|
|
name: "[Gen 4] OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3506147/">DPP OU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3551992/">DPP OU Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3650478/#post-8133790">DPP Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen4',
|
|
ruleset: ['Obtainable', 'Standard', 'Baton Pass Clause'],
|
|
banlist: ['Uber', 'Sand Veil', 'Soul Dew'],
|
|
},
|
|
{
|
|
name: "[Gen 3] OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3503019/">ADV OU Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3650478/#post-8133789">ADV Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen3',
|
|
ruleset: ['Obtainable', 'Standard', '3 Baton Pass Clause'],
|
|
banlist: ['Uber', 'Smeargle + Baton Pass'],
|
|
},
|
|
{
|
|
name: "[Gen 2] OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3556533/">GSC OU Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3650478/#post-8133788">GSC Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen2',
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
banlist: ['Uber'],
|
|
},
|
|
{
|
|
name: "[Gen 1] OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3572352/">RBY OU Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3650478/#post-8133786">RBY Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen1',
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
banlist: ['Uber'],
|
|
},
|
|
|
|
// OR/AS Singles
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "OR/AS Singles",
|
|
column: 3,
|
|
},
|
|
{
|
|
name: "[Gen 6] Ubers",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3522911/">ORAS Ubers</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3535106/">ORAS Ubers Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard', 'Swagger Clause', 'Team Preview', 'Mega Rayquaza Clause'],
|
|
},
|
|
{
|
|
name: "[Gen 6] UU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/dex/xy/tags/uu/">ORAS UU Banlist</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3598164/">ORAS UU Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 6] OU'],
|
|
banlist: ['OU', 'UUBL', 'Drizzle', 'Drought'],
|
|
},
|
|
{
|
|
name: "[Gen 6] RU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/dex/xy/tags/ru/">ORAS RU Banlist</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3574583/">ORAS RU Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 6] UU'],
|
|
banlist: ['UU', 'RUBL'],
|
|
},
|
|
{
|
|
name: "[Gen 6] NU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/dex/xy/tags/nu/">ORAS NU Banlist</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3555650/">ORAS NU Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 6] RU'],
|
|
banlist: ['RU', 'NUBL'],
|
|
},
|
|
{
|
|
name: "[Gen 6] PU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/dex/xy/tags/pu/">ORAS PU Banlist</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3528743/">ORAS PU Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 6] NU'],
|
|
banlist: ['NU', 'PUBL', 'Chatter'],
|
|
},
|
|
{
|
|
name: "[Gen 6] LC",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/dex/xy/formats/lc/">ORAS LC Banlist</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3547566/">ORAS LC Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
maxLevel: 5,
|
|
ruleset: ['Obtainable', 'Standard', 'Team Preview', 'Little Cup'],
|
|
banlist: ['LC Uber', 'Gligar', 'Misdreavus', 'Scyther', 'Sneasel', 'Tangela', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger'],
|
|
},
|
|
{
|
|
name: "[Gen 6] Anything Goes",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3523229/">ORAS Anything Goes</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3548945/">ORAS AG Resources</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Team Preview', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 6] 1v1",
|
|
desc: `Bring three Pokémon to Team Preview and choose one to battle.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/posts/8031456/">ORAS 1v1</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
teamLength: {
|
|
validate: [1, 3],
|
|
battle: 1,
|
|
},
|
|
ruleset: ['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'],
|
|
banlist: [
|
|
'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense',
|
|
'Dialga', 'Giratina', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
|
|
'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom',
|
|
'Focus Sash', 'Soul Dew', 'Perish Song',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 6] CAP",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3537407/">ORAS CAP Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3545628/">ORAS CAP Viability Rankings</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/5594694/">ORAS CAP Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 6] OU', '+CAP'],
|
|
},
|
|
{
|
|
name: "[Gen 6] Battle Spot Singles",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3527960/">ORAS Battle Spot Singles</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3554616/">ORAS BSS Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
maxForcedLevel: 50,
|
|
teamLength: {
|
|
validate: [3, 6],
|
|
battle: 3,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
requirePentagon: true,
|
|
},
|
|
{
|
|
name: "[Gen 6] Custom Game",
|
|
|
|
mod: 'gen6',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
// no restrictions, for serious (other than team preview)
|
|
ruleset: ['Team Preview', 'Cancel Mod'],
|
|
},
|
|
|
|
// OR/AS Doubles/Triples
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "OR/AS Doubles/Triples",
|
|
},
|
|
{
|
|
name: "[Gen 6] Doubles OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3498688/">ORAS Doubles OU Banlist</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3535930/">ORAS Doubles OU Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard Doubles', 'Swagger Clause', 'Team Preview'],
|
|
banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Gravity ++ Grass Whistle', 'Gravity ++ Hypnosis', 'Gravity ++ Lovely Kiss', 'Gravity ++ Sing', 'Gravity ++ Sleep Powder'],
|
|
},
|
|
{
|
|
name: "[Gen 6] VGC 2016",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3558332/">VGC 2016 Rules</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3580592/">VGC 2016 Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
maxForcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'Item Clause', 'Team Preview', 'Cancel Mod'],
|
|
banlist: [
|
|
'Mew', 'Celebi', 'Jirachi', 'Deoxys', 'Deoxys-Attack', 'Deoxys-Defense', 'Deoxys-Speed', 'Phione', 'Manaphy', 'Darkrai',
|
|
'Shaymin', 'Shaymin-Sky', 'Arceus', 'Victini', 'Keldeo', 'Meloetta', 'Genesect', 'Diancie', 'Hoopa', 'Hoopa-Unbound', 'Volcanion', 'Soul Dew',
|
|
],
|
|
requirePentagon: true,
|
|
onValidateTeam(team) {
|
|
const legends = ['Mewtwo', 'Lugia', 'Ho-Oh', 'Kyogre', 'Groudon', 'Rayquaza', 'Dialga', 'Palkia', 'Giratina', 'Reshiram', 'Zekrom', 'Kyurem', 'Xerneas', 'Yveltal', 'Zygarde'];
|
|
let n = 0;
|
|
for (const set of team) {
|
|
let baseSpecies = this.dex.getTemplate(set.species).baseSpecies;
|
|
if (legends.includes(baseSpecies)) n++;
|
|
if (n > 2) return ["You can only use up to two legendary Pok\u00E9mon."];
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "[Gen 6] Battle Spot Doubles",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3560820/">ORAS Battle Spot Doubles Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3560824/">ORAS BSD Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
maxForcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
requirePentagon: true,
|
|
},
|
|
{
|
|
name: "[Gen 6] Doubles Custom Game",
|
|
|
|
mod: 'gen6',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
debug: true,
|
|
// no restrictions, for serious (other than team preview)
|
|
ruleset: ['Team Preview', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 6] Battle Spot Triples",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3533914/">ORAS Battle Spot Triples Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3549201/">ORAS BST Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen6',
|
|
gameType: 'triples',
|
|
searchShow: false,
|
|
maxForcedLevel: 50,
|
|
teamLength: {
|
|
validate: [6, 6],
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
requirePentagon: true,
|
|
},
|
|
{
|
|
name: "[Gen 6] Triples Custom Game",
|
|
|
|
mod: 'gen6',
|
|
gameType: 'triples',
|
|
searchShow: false,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
debug: true,
|
|
// no restrictions, for serious (other than team preview)
|
|
ruleset: ['Team Preview', 'Cancel Mod'],
|
|
},
|
|
|
|
// B2/W2 Singles
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "B2/W2 Singles",
|
|
column: 4,
|
|
},
|
|
{
|
|
name: "[Gen 5] UU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3474024/">BW2 UU Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard', 'Evasion Abilities Clause', 'Baton Pass Clause', 'Swagger Clause', 'Team Preview'],
|
|
banlist: ['Uber', 'OU', 'UUBL', 'Arena Trap', 'Drought', 'Sand Stream', 'Snow Warning'],
|
|
},
|
|
{
|
|
name: "[Gen 5] RU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3473124/">BW2 RU Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 5] UU'],
|
|
banlist: ['UU', 'RUBL', 'Shell Smash + Baton Pass'],
|
|
},
|
|
{
|
|
name: "[Gen 5] NU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 5] RU'],
|
|
banlist: ['RU', 'NUBL', 'Prankster + Assist'],
|
|
},
|
|
{
|
|
name: "[Gen 5] LC",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3485860/">BW2 LC Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
searchShow: false,
|
|
maxLevel: 5,
|
|
ruleset: ['Obtainable', 'Standard', 'Team Preview', 'Little Cup'],
|
|
banlist: ['Berry Juice', 'Soul Dew', 'Dragon Rage', 'Sonic Boom', 'LC Uber', 'Sand Rush', 'Gligar', 'Murkrow', 'Scyther', 'Sneasel', 'Tangela'],
|
|
},
|
|
{
|
|
name: "[Gen 5] Monotype",
|
|
desc: `All the Pokémon on a team must share a type.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/posts/7421333/">BW Monotype</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 5] OU', 'Same Type Clause'],
|
|
},
|
|
{
|
|
name: "[Gen 5] 1v1",
|
|
desc: `Bring three Pokémon to Team Preview and choose one to battle.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/posts/8031457/">BW 1v1</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
searchShow: false,
|
|
teamLength: {
|
|
validate: [1, 3],
|
|
battle: 1,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard', 'Baton Pass Clause', 'Swagger Clause', 'Team Preview'],
|
|
banlist: ['Uber', 'Whimsicott', 'Focus Sash', 'Soul Dew', 'Perish Song'],
|
|
unbanlist: ['Genesect', 'Landorus', 'Manaphy', 'Thundurus', 'Tornadus-Therian'],
|
|
},
|
|
{
|
|
name: "[Gen 5] GBU Singles",
|
|
|
|
mod: 'gen5',
|
|
searchShow: false,
|
|
maxForcedLevel: 50,
|
|
teamLength: {
|
|
validate: [3, 6],
|
|
battle: 3,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
banlist: ['Dark Void', 'Sky Drop'],
|
|
},
|
|
{
|
|
name: "[Gen 5] Custom Game",
|
|
|
|
mod: 'gen5',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
// no restrictions, for serious (other than team preview)
|
|
ruleset: ['Team Preview', 'Cancel Mod'],
|
|
},
|
|
|
|
// B2/W2 Doubles
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: 'B2/W2 Doubles',
|
|
column: 4,
|
|
},
|
|
{
|
|
name: "[Gen 5] Doubles OU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3533424/">BW2 Doubles Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3533421/">BW2 Doubles Viability Ranking</a>`,
|
|
],
|
|
|
|
mod: 'gen5',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Team Preview'],
|
|
banlist: ['DUber', 'Soul Dew', 'Dark Void', 'Sky Drop'],
|
|
},
|
|
{
|
|
name: "[Gen 5] GBU Doubles",
|
|
|
|
mod: 'gen5',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
maxForcedLevel: 50,
|
|
teamLength: {
|
|
validate: [4, 6],
|
|
battle: 4,
|
|
},
|
|
ruleset: ['Obtainable', 'Standard GBU'],
|
|
banlist: ['Dark Void', 'Sky Drop'],
|
|
},
|
|
{
|
|
name: "[Gen 5] Doubles Custom Game",
|
|
|
|
mod: 'gen5',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
// no restrictions, for serious (other than team preview)
|
|
ruleset: ['Team Preview', 'Cancel Mod'],
|
|
},
|
|
|
|
// DPP Singles
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "DPP Singles",
|
|
column: 4,
|
|
},
|
|
{
|
|
name: "[Gen 4] Ubers",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/posts/7433831/">DPP Ubers Information & Resources</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3505128/">DPP Ubers Viability Ranking</a>`,
|
|
],
|
|
|
|
mod: 'gen4',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
banlist: ['Arceus'],
|
|
},
|
|
{
|
|
name: "[Gen 4] UU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3532624/">DPP UU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3503638/">DPP UU Viability Ranking</a>`,
|
|
],
|
|
|
|
mod: 'gen4',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 4] OU'],
|
|
banlist: ['OU', 'UUBL'],
|
|
unbanlist: ['Sand Veil'],
|
|
},
|
|
{
|
|
name: "[Gen 4] NU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3583742/">DPP NU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/3512254/">DPP NU Viability Ranking</a>`,
|
|
],
|
|
|
|
mod: 'gen4',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 4] UU'],
|
|
banlist: ['UU', 'NUBL'],
|
|
},
|
|
{
|
|
name: "[Gen 4] Anything Goes",
|
|
|
|
mod: 'gen4',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 4] Custom Game",
|
|
|
|
mod: 'gen4',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
// no restrictions
|
|
ruleset: ['Cancel Mod'],
|
|
},
|
|
|
|
// DPP Doubles
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "DPP Doubles",
|
|
column: 4,
|
|
},
|
|
{
|
|
name: "[Gen 4] Doubles OU",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3618411/">DPP Doubles</a>`],
|
|
|
|
mod: 'gen4',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 4] OU'],
|
|
banlist: ['Explosion', 'Soul Dew'],
|
|
unbanlist: ['Garchomp', 'Latias', 'Latios', 'Manaphy', 'Mew', 'Salamence', 'Wobbuffet', 'Wynaut'],
|
|
},
|
|
{
|
|
name: "[Gen 4] Doubles Custom Game",
|
|
|
|
mod: 'gen4',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
// no restrictions
|
|
ruleset: ['Cancel Mod'],
|
|
},
|
|
|
|
// Past Generations
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
{
|
|
section: "Past Generations",
|
|
column: 4,
|
|
},
|
|
{
|
|
name: "[Gen 3] Ubers",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/posts/7433832/">ADV Ubers Information & Resources</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3536426/">ADV Ubers Viability Ranking</a>`,
|
|
],
|
|
|
|
mod: 'gen3',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
banlist: ['Wobbuffet + Leftovers'],
|
|
},
|
|
{
|
|
name: "[Gen 3] UU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3585923/">ADV UU Metagame Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3548578/">ADV UU Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen3',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain'],
|
|
},
|
|
{
|
|
name: "[Gen 3] NU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3503540/">ADV NU Viability Rankings</a>`,
|
|
],
|
|
|
|
mod: 'gen3',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 3] UU'],
|
|
banlist: ['UU'],
|
|
},
|
|
{
|
|
name: "[Gen 3] Custom Game",
|
|
|
|
mod: 'gen3',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 3] Doubles Custom Game",
|
|
|
|
mod: 'gen3',
|
|
gameType: 'doubles',
|
|
searchShow: false,
|
|
debug: true,
|
|
ruleset: ['Obtainable', 'HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 2] Ubers",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/posts/7433879/">GSC Ubers Information & Resources</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/6431086/">GSC Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen2',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
},
|
|
{
|
|
name: "[Gen 2] UU",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3576710/">GSC UU</a>`],
|
|
|
|
mod: 'gen2',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 2] OU'],
|
|
banlist: ['OU', 'UUBL'],
|
|
},
|
|
{
|
|
name: "[Gen 2] NU",
|
|
threads: [`• <a href="https://www.smogon.com/forums/threads/3642565/">GSC NU</a>`],
|
|
|
|
mod: 'gen2',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 2] UU'],
|
|
banlist: ['UU'],
|
|
},
|
|
{
|
|
name: "[Gen 2] Custom Game",
|
|
|
|
mod: 'gen2',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
{
|
|
name: "[Gen 1] Ubers",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3541329/">RBY Ubers Viability Ranking</a>`,
|
|
`• <a href="https://www.smogon.com/forums/posts/6431045/">RBY Sample Teams</a>`,
|
|
],
|
|
|
|
mod: 'gen1',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard'],
|
|
},
|
|
{
|
|
name: "[Gen 1] UU",
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/forums/threads/3573896/">RBY UU General Discussion</a>`,
|
|
`• <a href="https://www.smogon.com/forums/threads/3647713/">RBY UU Viability Ranking</a>`,
|
|
],
|
|
|
|
mod: 'gen1',
|
|
searchShow: false,
|
|
ruleset: ['[Gen 1] OU'],
|
|
banlist: ['OU', 'UUBL'],
|
|
},
|
|
{
|
|
name: "[Gen 1] OU (Tradeback)",
|
|
desc: `RBY OU with movepool additions from the Time Capsule.`,
|
|
threads: [
|
|
`• <a href="https://www.smogon.com/articles/rby-tradebacks-ou">Information</a>`,
|
|
],
|
|
|
|
mod: 'gen1',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Allow Tradeback', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Species Clause', 'OHKO Clause', 'Evasion Moves Clause', 'HP Percentage Mod', 'Cancel Mod'],
|
|
banlist: ['Uber',
|
|
'Nidoking + Fury Attack + Thrash', 'Exeggutor + Poison Powder + Stomp', 'Exeggutor + Sleep Powder + Stomp',
|
|
'Exeggutor + Stun Spore + Stomp', 'Jolteon + Focus Energy + Thunder Shock', 'Flareon + Focus Energy + Ember',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 1] Stadium OU",
|
|
|
|
mod: 'stadium',
|
|
searchShow: false,
|
|
ruleset: ['Obtainable', 'Standard', 'Team Preview'],
|
|
banlist: ['Uber',
|
|
'Nidoking + Fury Attack + Thrash', 'Exeggutor + Poison Powder + Stomp', 'Exeggutor + Sleep Powder + Stomp',
|
|
'Exeggutor + Stun Spore + Stomp', 'Jolteon + Focus Energy + Thunder Shock', 'Flareon + Focus Energy + Ember',
|
|
],
|
|
},
|
|
{
|
|
name: "[Gen 1] Custom Game",
|
|
|
|
mod: 'gen1',
|
|
searchShow: false,
|
|
debug: true,
|
|
maxLevel: 9999,
|
|
trunc(n) { return Math.trunc(n); },
|
|
defaultLevel: 100,
|
|
ruleset: ['HP Percentage Mod', 'Cancel Mod'],
|
|
},
|
|
];
|
|
|
|
exports.Formats = Formats;
|