exports.BattleFormats = { // formats randombattle: { effectType: 'Format', name: "Random Battle", team: 'random', searchDefault: true, rated: true, challengeShow: true, searchShow: true, ruleset: ['PotD', 'Pokemon', 'Sleep Clause'] }, unratedrandombattle: { effectType: 'Format', name: "Unrated Random Battle", team: 'random', searchShow: true, ruleset: ['Random Battle'] }, challengecup: { effectType: 'Format', name: "Challenge Cup", team: 'cc', searchDefault: true, rated: true, challengeShow: true, searchShow: true, ruleset: ['Pokemon'] }, unratedchallengecup: { effectType: 'Format', name: "Unrated Challenge Cup", team: 'cc', searchShow: true, ruleset: ['Challenge Cup'] }, ou: { effectType: 'Format', name: "OU", challengeDefault: true, rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'Standard', 'Team Preview'], banlist: ['Uber', 'Drizzle ++ Swift Swim', 'Soul Dew'] }, oususpecttest: { effectType: 'Format', name: "OU Suspect Test", challengeDefault: true, rated: true, challengeShow: true, searchShow: true, teambuilderFormat: 'ou', ruleset: ['Pokemon', 'Standard', '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-Normal', 'Arceus-Poison', 'Arceus-Psychic', 'Arceus-Rock', 'Arceus-Steel', 'Arceus-Water', 'Blaziken', 'Darkrai', 'Deoxys', 'Deoxys-A', 'Deoxys-S', 'Dialga', 'Excadrill', 'Giratina', 'Giratina-O', 'Groudon', 'Ho-Oh', 'Kyogre', 'Lugia', 'Manaphy', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram', 'Shaymin-S', 'Thundurus', 'Zekrom', 'Drizzle ++ Swift Swim', 'Soul Dew', 'Sand Veil' ] }, 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'] }, capnecturnaplaytest: { effectType: 'Format', name: "CAP Necturna Playtest", rated: true, ruleset: ['CAP Pokemon', 'Sleep Clause', 'Species Clause', 'OHKO Clause', 'Evasion Clause', 'Standard', 'Team Preview'], banlist: ['Uber','G4CAP','Tomohawk','ShadowStrike','Paleo Wave','Soul Dew'] }, capmolluxplaytest: { mod: 'gen5bw', effectType: 'Format', name: "CAP Mollux Playtest", rated: true, ruleset: ['CAP'], banlist: ['G4CAP','Tomohawk','Necturna','ShadowStrike','Paleo Wave'] }, ubers: { effectType: 'Format', name: "Ubers", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'Standard', 'Team Preview'], banlist: [] }, uu: { effectType: 'Format', name: "UU", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['OU'], banlist: ['OU', 'BL', 'Snow Warning', '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'] }, nu: { effectType: 'Format', name: "NU", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['RU'], banlist: ['RU','BL3'] }, lc: { effectType: 'Format', name: "LC", 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'] }, 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', 'Freeze Shock', 'Ice Burn'] }, pu: { effectType: 'Format', name: "PU", challengeShow: true, ruleset: ['NU'], banlist: ["Charizard", "Wartortle", "Vileplume", "Kadabra", "Golem", "Haunter", "Exeggutor", "Marowak", "Weezing", "Tangela", "Kangaskhan", "Electabuzz", "Pinsir", "Tauros", "Lapras", "Flareon", "Ampharos", "Jumpluff", "Misdreavus", "Ursaring", "Piloswine", "Miltank", "Linoone", "Ludicolo", "Swellow", "Gardevoir", "Ninjask", "Camerupt", "Torkoal", "Cacturne", "Altaria", "Armaldo", "Absol", "Gorebyss", "Regirock", "Regice", "Torterra", "Rampardos", "Bastiodon", "Floatzel", "Drifblim", "Skuntank", "Lickilicky", "Probopass", "Rotom-Fan", "Serperior", "Emboar", "Samurott", "Musharna", "Zebstrika", "Gigalith", "Gurdurr", "Sawk", "Carracosta", "Garbodor", "Cinccino", "Sawsbuck", "Amoonguss", "Alomomola", "Golurk", "Braviary"] }, haxmons: { effectType: 'Format', name: "Haxmons", challengeShow: true, canUseRandomTeam: true, ruleset: ['Hax Clause', 'Team Preview'] }, glitchmons: { effectType: 'Format', name: "Glitchmons", rated: true, challengeShow: true, searchShow: true, isTeambuilderFormat: true, ruleset: ['Pokemon', 'Team Preview'], banlist: ['Illegal', 'Unreleased'], mimicGlitch: true }, debugmode: { effectType: 'Format', name: "Debug Mode", 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: [] }, gen4debugmode: { mod: 'gen4', effectType: 'Format', name: "[Gen 4] Debug Mode", challengeShow: true, canUseRandomTeam: true, debug: true, // no restrictions, for serious ruleset: [] }, gennextnextou: { mod: 'gennext', effectType: 'Format', name: "[Gen NEXT] NEXT-OU", challengeShow: true, ruleset: ['Pokemon', 'Standard', 'Team Preview'], banlist: ['Uber', 'Soul Dew', 'Kyurem'] }, // rules standard: { effectType: 'Banlist', ruleset: ['Sleep Clause', 'Species Clause', 'OHKO Clause', 'Evasion Clause'], banlist: ['Unreleased', 'Illegal', 'Moody'], 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); } } }, teampreview: { onStartPriority: -10, onStart: function() { this.add('clearpoke'); for (var i=0; i 5) { set.level = 5; } } }, haxclause: { effectType: 'Rule', onStart: function() { this.add('rule', 'Hax Clause'); }, onModifyMovePriority: -100, onModifyMove: function(move) { if (move.secondaries) { for (var s = 0; s < move.secondaries.length; ++s) { move.secondaries[s].chance = 100; } } if (move.accuracy !== true && move.accuracy <= 99) { move.accuracy = 0; } move.willCrit = true; } }, speciesclause: { effectType: 'Rule', onStart: function() { this.add('rule', 'Species Clause'); }, validateTeam: function(team, format) { var speciesTable = {}; for (var i=0; i