exports.BattleFormats = { // formats randombattle: { effectType: 'Format', name: "Random Battle", team: 'random', canUseRandomTeam: true, searchDefault: true, rated: true, challengeShow: true, searchShow: true, ruleset: ['PotD', 'Pokemon', 'Sleep Clause'] }, unratedrandombattle: { effectType: 'Format', name: "Unrated Random Battle", team: 'random', canUseRandomTeam: true, searchShow: true, ruleset: ['Random Battle'] }, /* seasonalseasoningsgreetings: { effectType: 'Format', name: "[Seasonal] Seasoning's Greetings", team: 'randomSeasonal', canUseRandomTeam: true, rated: true, challengeShow: true, searchShow: true, ruleset: ['PotD', 'Pokemon', 'Sleep Clause'] }, seasonalwinterwonderland: { effectType: 'Format', name: "[Seasonal] Winter Wonderland", team: 'randomSeasonalWW', canUseRandomTeam: true, rated: true, challengeShow: true, searchShow: true, onBegin: function() { this.setWeather('Hail'); delete this.weatherData.duration; }, onModifyMove: function(move) { if (move.id === 'present') { move.category = 'Status'; move.basePower = 0; delete move.heal; move.accuracy = 100; switch (this.random(20)) { case 0: case 1: case 2: case 3: case 4: move.onTryHit = function() { this.add('-message', "The present was a bomb!"); }; move.category = 'Physical'; move.basePower = 200; break; case 5: move.onTryHit = function() { this.add('-message', "The present was confusion!"); }; move.volatileStatus = 'confusion'; break; case 6: move.onTryHit = function() { this.add('-message', "The present was Disable!"); }; move.volatileStatus = 'disable'; break; case 7: move.onTryHit = function() { this.add('-message', "The present was a taunt!"); }; move.volatileStatus = 'taunt'; break; case 8: move.onTryHit = function() { this.add('-message', "The present was some seeds!"); }; move.volatileStatus = 'leechseed'; break; case 9: move.onTryHit = function() { this.add('-message', "The present was an embargo!"); }; move.volatileStatus = 'embargo'; break; case 10: move.onTryHit = function() { this.add('-message', "The present was a music box!"); }; move.volatileStatus = 'perishsong'; break; case 11: move.onTryHit = function() { this.add('-message', "The present was a curse!"); }; move.volatileStatus = 'curse'; break; case 12: move.onTryHit = function() { this.add('-message', "The present was Torment!"); }; move.volatileStatus = 'torment'; break; case 13: move.onTryHit = function() { this.add('-message', "The present was a trap!"); }; move.volatileStatus = 'partiallytrapped'; break; case 14: move.onTryHit = function() { this.add('-message', "The present was a root!"); }; move.volatileStatus = 'ingrain'; break; case 15: case 16: case 17: move.onTryHit = function() { this.add('-message', "The present was a makeover!"); }; var boosts = {}; var possibleBoosts = ['atk','def','spa','spd','spe','accuracy'].randomize(); boosts[possibleBoosts[0]] = 1; boosts[possibleBoosts[1]] = -1; boosts[possibleBoosts[2]] = -1; move.boosts = boosts; break; case 18: move.onTryHit = function() { this.add('-message', "The present was psychic powers!"); }; move.volatileStatus = 'telekinesis'; break; case 19: move.onTryHit = function() { this.add('-message', "The present was fatigue!"); }; move.volatileStatus = 'mustrecharge'; break; } } }, ruleset: ['PotD', 'Pokemon', 'Sleep Clause'] },*/ seasonalvalentineventure: { effectType: 'Format', name: "[Seasonal] Valentine Venture", team: 'randomSeasonalVV', gameType: 'doubles', canUseRandomTeam: true, rated: true, challengeShow: true, searchShow: true, ruleset: ['PotD', 'Pokemon', 'Sleep Clause'] }, challengecup: { effectType: 'Format', name: "Challenge Cup", team: 'randomCC', canUseRandomTeam: true, rated: true, challengeShow: true, searchShow: true, ruleset: ['Pokemon'] }, challengecup1vs1: { effectType: 'Format', name: "Challenge Cup 1-vs-1", team: 'randomCC', canUseRandomTeam: true, rated: true, challengeShow: true, searchShow: true, ruleset: ['Pokemon', 'Team Preview 1v1'], onBegin: function() { this.debug('Cutting down to 1'); this.p1.pokemon = this.p1.pokemon.slice(0, 1); this.p1.pokemonLeft = this.p1.pokemon.length; this.p2.pokemon = this.p2.pokemon.slice(0, 1); this.p2.pokemonLeft = this.p2.pokemon.length; } }, ou: { effectType: 'Format', name: "OU", challengeDefault: true, rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'Standard', 'Evasion Abilities Clause', 'Team Preview'], banlist: ['Uber', 'Drizzle ++ Swift Swim', 'Soul Dew'] }, //oucurrent: { // effectType: 'Format', // name: "OU (current)", // challengeDefault: true, // rated: true, // challengeShow: true, // searchShow: true, // isTeambuilderFormat: true, // ruleset: ['Pokemon', 'Standard', 'Evasion Abilities Clause', 'Team Preview'], // banlist: ['Uber', 'Drizzle ++ Swift Swim', 'Soul Dew'] //}, oususpecttest: { effectType: 'Format', name: "OU (suspect test)", rated: true, challengeShow: true, searchShow: true, teambuilderFormat: 'ou', ruleset: ['Pokemon', 'Standard', 'Evasion Abilities Clause', 'Team Preview'], // banlist: [ // 'Arceus-Bug', 'Arceus-Dark', 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fighting', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Grass', 'Arceus-Ground', 'Arceus-Ice', 'Arceus', 'Arceus-Poison', 'Arceus-Psychic', 'Arceus-Rock', 'Arceus-Steel', 'Arceus-Water', 'Blaziken', 'Darkrai', 'Deoxys', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Excadrill', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Lugia', 'Manaphy', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram', 'Shaymin-Sky', 'Thundurus', 'Zekrom', 'Kyurem-White', 'Drizzle ++ Swift Swim', 'Soul Dew' // ] banlist: ['Uber', 'Drizzle ++ Swift Swim', 'Soul Dew', 'Deoxys-Defense'] }, cap: { effectType: 'Format', name: "CAP", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['CAP Pokemon', 'Standard', 'Team Preview'], banlist: ['Uber', 'Drizzle ++ Swift Swim', 'Soul Dew'] }, // capaurumothplaytest: { // effectType: 'Format', // name: "CAP Aurumoth Playtest", // challengeShow: true, // searchShow: true, // rated: true, // ruleset: ['CAP Pokemon', 'Standard', 'Team Preview'], // banlist: ['G4CAP','Tomohawk','Necturna','Mollux','Kyurem-Black','Garchomp','ShadowStrike','Paleo Wave','Drizzle ++ Swift Swim', 'Soul Dew','Arceus-Bug', 'Arceus-Dark', 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fighting', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Grass', 'Arceus-Ground', 'Arceus-Ice', 'Arceus', 'Arceus-Poison', 'Arceus-Psychic', 'Arceus-Rock', 'Arceus-Steel', 'Arceus-Water', 'Blaziken', 'Darkrai', 'Deoxys', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Excadrill', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Lugia', 'Manaphy', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram', 'Shaymin-Sky', 'Thundurus', 'Zekrom', 'Kyurem-White'] // }, ubers: { effectType: 'Format', name: "Ubers", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'Team Preview', 'Standard Ubers'], banlist: [] }, // uberssuspecttest: { // effectType: 'Format', // name: "Ubers (suspect test)", // rated: true, // challengeShow: true, // searchShow: true, // isTeambuilderFormat: true, // ruleset: ['Pokemon', 'Team Preview', 'Standard Ubers'], // banlist: [] // }, uu: { effectType: 'Format', name: "UU", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['OU'], banlist: ['OU', 'BL', 'Drought', 'Sand Stream'] }, // uususpecttest: { // effectType: 'Format', // name: "UU (suspect test)", // rated: true, // challengeShow: true, // searchShow: true, // ruleset: ['OU'], // banlist: ['OU', 'BL', 'Drought', 'Sand Stream'] // }, ru: { effectType: 'Format', name: "RU", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['UU'], banlist: ['UU', 'BL2', 'Shell Smash + Baton Pass'] }, // rucurrent: { // effectType: 'Format', // name: "RU (current)", // rated: true, // challengeShow: true, // searchShow: true, // ruleset: ['UU'], // banlist: ['UU', 'BL2', 'Shell Smash + Baton Pass'] // }, // rususpecttest: { // effectType: 'Format', // name: "RU (Suspect Test)", // rated: true, // challengeShow: true, // searchShow: true, // isTeambuilderFormat: true, // ruleset: ['UU'], // banlist: ['UU', 'BL2', 'Shell Smash + Baton Pass'] // }, nu: { effectType: 'Format', name: "NU", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['RU'], banlist: ['RU','BL3'] }, lc: { effectType: 'Format', name: "LC", maxLevel: 5, rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'Standard', 'Team Preview', 'Little Cup'], banlist: ['Sonicboom', 'Dragon Rage', 'Berry Juice', 'Carvanha', 'Meditite', 'Gligar', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma', 'Soul Dew'] }, lcubers: { effectType: 'Format', name: "LC Ubers", maxLevel: 5, challengeShow: true, ruleset: ['Pokemon', 'Standard', 'Team Preview', 'Little Cup'], banlist: ['Sonicboom', 'Dragon Rage', 'Berry Juice', 'Soul Dew'] }, lcuu: { effectType: 'Format', name: "LC UU", maxLevel: 5, challengeShow: true, ruleset: ['LC'], banlist: ['Abra', 'Aipom', 'Archen', 'Aron', 'Axew', 'Bronzor', 'Chinchou', 'Clamperl', 'Cottonee', 'Cranidos', 'Croagunk', 'Diglett', 'Dratini', 'Drifloon', 'Drilbur', 'Dwebble', 'Elekid', 'Ferroseed', 'Foongus', 'Frillish', 'Gastly', 'Hippopotas', 'Houndour', 'Larvesta', 'Lileep', 'Magnemite', 'Meowth', 'Mienfoo', 'Misdreavus', 'Munchlax', 'Murkrow', 'Onix', 'Pawniard', 'Ponyta', 'Porygon', 'Riolu', 'Sandshrew', 'Scraggy', 'Shellder', 'Snover', 'Staryu', 'Taillow', 'Tentacool', 'Timburr', 'Tirtouga'] }, dwubers: { effectType: 'Format', name: "DW Ubers", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, isDWtier: true, ruleset: ['Pokemon', 'Standard DW', 'Team Preview'], banlist: [] }, dwou: { effectType: 'Format', name: "DW OU", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'Standard DW', 'Team Preview'], banlist: ['Drizzle ++ Swift Swim', 'Soul Dew', 'Arceus', 'Arceus-Bug', 'Arceus-Dark', 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fighting', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Grass', 'Arceus-Ground', 'Arceus-Ice', 'Arceus-Poison', 'Arceus-Psychic', 'Arceus-Rock', 'Arceus-Steel', 'Arceus-Water', 'Blaziken', 'Deoxys', 'Deoxys-Attack', 'Dialga', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram', 'Shaymin-Sky', 'Zekrom'] }, dwuu: { effectType: 'Format', name: "DW UU", challengeShow: true, ruleset: ['DW OU'], banlist: ['Chandelure', 'Genesect', 'Tyranitar', 'Dragonite', 'Breloom', 'Ferrothorn', 'Politoed', 'Gliscor', 'Ninetales', 'Scizor', 'Excadrill', 'Keldeo', 'Infernape', 'Venusaur', 'Heatran', 'Rotom-Wash', 'Garchomp', 'Serperior', 'Gengar', 'Volcarona', 'Forretress', 'Conkeldurr', 'Espeon', 'Cloyster', 'Skarmory', 'Starmie', 'Salamence', 'Gyarados', 'Zapdos', 'Jirachi', 'Latios', 'Tentacruel', 'Haxorus', 'Landorus', 'Mamoswine', 'Charizard', 'Lucario', 'Jellicent', 'Blissey', 'Terrakion', 'Heracross', 'Metagross', 'Ditto', 'Hydreigon', 'Thundurus', 'Alakazam', 'Deoxys-Speed', 'Latias', 'Gastrodon', 'Togekiss', 'Donphan', 'Bronzong', 'Manaphy'] }, hackmons: { effectType: 'Format', name: "Hackmons", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon'], banlist: [] }, balancedhackmons: { effectType: 'Format', name: "Balanced Hackmons", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'OHKO Clause'], banlist: ['Wonder Guard', 'Pure Power', 'Huge Power', 'Shadow Tag', 'Arena Trap'] }, pu: { effectType: 'Format', name: "PU", challengeShow: true, ruleset: ['NU'], banlist: ["Charizard", "Wartortle", "Kadabra", "Golem", "Haunter", "Exeggutor", "Weezing", "Kangaskhan", "Pinsir", "Lapras", "Ampharos", "Misdreavus", "Piloswine", "Miltank", "Ludicolo", "Swellow", "Gardevoir", "Ninjask", "Torkoal", "Cacturne", "Altaria", "Armaldo", "Gorebyss", "Regirock", "Regice", "Bastiodon", "Floatzel", "Drifblim", "Skuntank", "Lickilicky", "Probopass", "Rotom-Fan", "Samurott", "Musharna", "Gurdurr", "Sawk", "Carracosta", "Garbodor", "Sawsbuck", "Alomomola", "Golurk", "Braviary", "Articuno", "Glaceon", "Rotom-Frost", "Electabuzz", "Electrode", "Marowak", "Liepard", "Tangela", "Jumpluff", "Eelektross", "Ditto", "Seismitoad", "Zangoose", "Roselia", "Stoutland"] }, glitchmons: { effectType: 'Format', name: "Glitchmons", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'Team Preview'], banlist: ['Illegal', 'Unreleased'], mimicGlitch: true }, customgame: { effectType: 'Format', name: "Custom Game", challengeShow: true, canUseRandomTeam: true, debug: true, // no restrictions, for serious ruleset: ['Team Preview'] }, customgamenoteampreview: { effectType: 'Format', name: "Custom Game (no Team Preview)", challengeShow: true, canUseRandomTeam: true, debug: true, // no restrictions, for serious ruleset: [] }, gen4hackmons: { mod: 'gen4', effectType: 'Format', name: "[Gen 4] Hackmons", challengeShow: true, ruleset: ['Pokemon'], banlist: [] }, gen4customgame: { mod: 'gen4', effectType: 'Format', name: "[Gen 4] Custom Game", challengeShow: true, canUseRandomTeam: true, debug: true, ruleset: [] }, gen3hackmons: { mod: 'gen3', effectType: 'Format', name: "[Gen 3] Hackmons", challengeShow: true, ruleset: ['Pokemon'], banlist: [] }, gen3customgame: { mod: 'gen3', effectType: 'Format', name: "[Gen 3] Custom Game", challengeShow: true, ruleset: [] }, gennextnextou: { mod: 'gennext', effectType: 'Format', name: "[Gen NEXT] NEXT-OU", challengeShow: true, ruleset: ['Pokemon', 'Standard NEXT', 'Team Preview'], banlist: ['Uber'] }, standardnext: { effectType: 'Banlist', ruleset: ['Sleep Clause', 'Species Clause', 'OHKO Clause', 'Moody Clause', 'Evasion Moves Clause'], banlist: ['Unreleased', 'Illegal'], validateSet: function(set) { // limit one of each move in Standard var moves = []; if (set.moves) { var hasMove = {}; for (var i=0; i= 50) { set.forcedLevel = 50; } }, // no restrictions, for serious ruleset: ['Pokemon', 'Team Preview VGC', 'Species Clause', 'Item Clause'], banlist: ['Unreleased', 'Illegal', 'Sky Drop', 'Dark Void', 'Soul Dew', 'Mewtwo', 'Mew', 'Lugia', 'Ho-Oh', 'Celebi', 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', 'Deoxys-Attack', 'Deoxys-Speed', 'Deoxys-Defense', 'Chatot', 'Dialga', 'Palkia', 'Giratina', 'Giratina-Origin', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Shaymin-Sky', 'Arceus', 'Arceus-Bug', 'Arceus-Dark', 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fighting', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Grass', 'Arceus-Ground', 'Arceus-Ice', 'Arceus', 'Arceus-Poison', 'Arceus-Psychic', 'Arceus-Rock', 'Arceus-Steel', 'Arceus-Water', 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Keldeo', 'Keldeo-Resolute', 'Meloetta', 'Genesect' ] }, smogondoubles: { effectType: 'Format', section: 'doubles', gameType: 'doubles', name: "Smogon Doubles", challengeShow: true, searchShow: true, rated: true, debug: true, // no restrictions, for serious ruleset: ['Pokemon', 'Team Preview', 'Sleep Clause', 'Species Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Abilities Clause'], banlist: ['Unreleased', 'Illegal', 'Sky Drop', 'Dark Void', 'Soul Dew', 'Mewtwo', 'Lugia', 'Ho-Oh', 'Kyogre', 'Groudon', 'Rayquaza', 'Dialga', 'Palkia', 'Giratina', 'Giratina-Origin', 'Arceus', 'Arceus-Bug', 'Arceus-Dark', 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fighting', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Grass', 'Arceus-Ground', 'Arceus-Ice', 'Arceus', 'Arceus-Poison', 'Arceus-Psychic', 'Arceus-Rock', 'Arceus-Steel', 'Arceus-Water', 'Reshiram', 'Zekrom', 'Kyurem-White' ] }, doublesrandombattledev: { effectType: 'Format', section: 'doubles', gameType: 'doubles', name: "Doubles Random Battle (dev)", team: 'random', canUseRandomTeam: true, rated: true, challengeShow: true, debug: true, ruleset: ['PotD', 'Pokemon'] }, doubleschallengecup: { effectType: 'Format', section: 'doubles', gameType: 'doubles', name: "Doubles Challenge Cup", team: 'randomCC', canUseRandomTeam: true, rated: true, challengeShow: true, debug: true, ruleset: ['Pokemon'] }, doublescustomgame: { effectType: 'Format', section: 'doubles', gameType: 'doubles', name: "Doubles Custom Game", challengeShow: true, canUseRandomTeam: true, debug: true, // no restrictions, for serious ruleset: ['Team Preview'] }, // rules standard: { effectType: 'Banlist', ruleset: ['Sleep Clause', 'Species Clause', 'OHKO Clause', 'Moody Clause', 'Evasion Moves Clause'], banlist: ['Unreleased', 'Illegal'], validateSet: function(set) { // limit one of each move in Standard var moves = []; if (set.moves) { var hasMove = {}; for (var i=0; i 4) { problems.push((set.name||set.species) + ' has more than four moves.'); } return problems; } }, cappokemon: { effectType: 'Rule', validateSet: function(set, format) { // don't return this.getEffect('Pokemon').validateSet.call(this, set, format); } }, legal: { effectType: 'Banlist', banlist: ['Crobat+BraveBird+Hypnosis'] }, potd: { effectType: 'Rule', onPotD: '', onStart: function() { if (this.effect.onPotD) { this.add('rule', 'Pokemon of the Day: '+this.effect.onPotD); } } }, teampreviewvgc: { onStartPriority: -10, onStart: function() { this.add('clearpoke'); for (var i=0; i