From c3e0bbd61d6cb4249c663855d763338e140a401b Mon Sep 17 00:00:00 2001 From: ACakeWearingAHat <45981036+ACakeWearingAHat@users.noreply.github.com> Date: Mon, 1 Sep 2025 00:58:46 -0500 Subject: [PATCH] Revamp Gen 9 Free-For-All Random Battle (#11406) * WIP free-for-all revamp * bonus touches * Create ffa-sets.json * Most stuff besides items * Fix plate distribution logic * The Palafin thing * Update teams.ts * Update index.ts * Update server/chat-plugins/randombattles/index.ts Co-authored-by: pyuk-bot <21160928+pyuk-bot@users.noreply.github.com> --------- Co-authored-by: MacChaeger <21160928+pyuk-bot@users.noreply.github.com> Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 2 +- data/random-battles/gen9/teams.ts | 16 +- data/random-battles/gen9ffa/sets.json | 7793 ++++++++++++++++++++ data/random-battles/gen9ffa/teams.ts | 1091 +++ server/chat-plugins/randombattles/index.ts | 12 +- sim/global-types.ts | 3 +- sim/teams.ts | 2 + 7 files changed, 8902 insertions(+), 17 deletions(-) create mode 100644 data/random-battles/gen9ffa/sets.json create mode 100644 data/random-battles/gen9ffa/teams.ts diff --git a/config/formats.ts b/config/formats.ts index 9ac42a75bf..a02f301fad 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -44,7 +44,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ { name: "[Gen 9] Free-For-All Random Battle", mod: 'gen9', - team: 'random', + team: 'randomFFA', gameType: 'freeforall', tournamentShow: false, rated: false, diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts index b76b17fbeb..730b88e920 100644 --- a/data/random-battles/gen9/teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -53,10 +53,12 @@ interface BSSFactorySet { } export class MoveCounter extends Utils.Multiset { damagingMoves: Set; + basePowerMoves: Set; constructor() { super(); this.damagingMoves = new Set(); + this.basePowerMoves = new Set(); } } @@ -413,6 +415,7 @@ export class RandomTeams { if (move.drain) counter.add('drain'); // Moves which have a base power: if (move.basePower || move.basePowerCallback) { + counter.basePowerMoves.add(move); if (!this.noStab.includes(moveid) || PRIORITY_POKEMON.includes(species.id) && move.priority > 0) { counter.add(moveType); if (types.includes(moveType)) counter.add('stab'); @@ -1096,19 +1099,6 @@ export class RandomTeams { teraType: string, role: RandomTeamsTypes.Role, ): string { - // ffa abilities that differ from doubles - if (this.format.gameType === 'freeforall') { - if (species.id === 'bellossom') return 'Chlorophyll'; - if (species.id === 'sinistcha') return 'Heatproof'; - if (abilities.length === 1 && abilities[0] === 'Telepathy') { - return species.id === 'oranguru' ? 'Inner Focus' : 'Pressure'; - } - if (species.id === 'duraludon') return 'Light Metal'; - if (species.id === 'clefairy') return 'Magic Guard'; - if (species.id === 'blissey') return 'Natural Cure'; - if (species.id === 'barraskewda') return 'Swift Swim'; - } - if (abilities.length <= 1) return abilities[0]; // Hard-code abilities here diff --git a/data/random-battles/gen9ffa/sets.json b/data/random-battles/gen9ffa/sets.json new file mode 100644 index 0000000000..b7fa249de4 --- /dev/null +++ b/data/random-battles/gen9ffa/sets.json @@ -0,0 +1,7793 @@ +{ + "venusaur": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Earth Power", "Giga Drain", "Knock Off", "Petal Blizzard", "Protect", "Sludge Bomb", "Synthesis"], + "abilities": ["Chlorophyll", "Overgrow"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Giga Drain", "Leech Seed", "Protect", "Sludge Bomb", "Substitute"], + "abilities": ["Chlorophyll", "Overgrow"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "charizard": { + "level": 85, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Earthquake", "Flare Blitz", "Protect", "Swords Dance", "Thunder Punch"], + "abilities": ["Blaze"], + "teraTypes": ["Electric", "Ground"] + }, + { + "role": "Fast Attacker", + "movepool": ["Flamethrower", "Focus Blast", "Heat Wave", "Hurricane", "Protect", "Scorching Sands"], + "abilities": ["Blaze", "Solar Power"], + "teraTypes": ["Dragon", "Steel"] + } + ] + }, + "blastoise": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Flip Turn", "Ice Beam", "Icy Wind", "Life Dew", "Muddy Water", "Protect", "Rapid Spin", "Roar", "Surf"], + "abilities": ["Torrent"], + "teraTypes": ["Dragon", "Steel"] + } + ] + }, + "arbok": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Coil", "Gunk Shot", "Knock Off", "Pain Split", "Protect", "Stomping Tantrum"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark", "Ground"] + }, + { + "role": "Fast Attacker", + "movepool": ["Glare", "Gunk Shot", "Knock Off", "Pain Split", "Protect"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark"] + }, + { + "role": "Bulky Support", + "movepool": ["Coil", "Gunk Shot", "Pain Split", "Protect", "Snarl"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark"] + } + ] + }, + "pikachu": { + "level": 94, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Encore", "Grass Knot", "Knock Off", "Protect", "Surf", "Volt Switch", "Volt Tackle"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Dark", "Grass"] + } + ] + }, + "raichu": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Alluring Voice", "Discharge", "Encore", "Grass Knot", "Knock Off", "Protect", "Surf", "Thunderbolt", "Volt Switch"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Dark", "Fairy", "Grass"] + }, + { + "role": "Tera Blast user", + "movepool": ["Nasty Plot", "Protect", "Tera Blast", "Thunderbolt"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Ice"] + }, + { + "role": "AV Pivot", + "movepool": ["Discharge", "Knock Off", "Nuzzle", "Thunderbolt", "Volt Switch"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Flying"] + } + ] + }, + "raichualola": { + "level": 87, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Alluring Voice", "Discharge", "Focus Blast", "Grass Knot", "Psychic", "Psyshock", "Thunderbolt", "Volt Switch"], + "abilities": ["Surge Surfer"], + "teraTypes": ["Electric", "Fairy", "Fighting", "Grass"] + }, + { + "role": "Wallbreaker", + "movepool": ["Discharge", "Nasty Plot", "Protect", "Psychic"], + "abilities": ["Surge Surfer"], + "teraTypes": ["Electric"] + }, + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Encore", "Knock Off", "Protect", "Psychic Noise"], + "abilities": ["Surge Surfer"], + "teraTypes": ["Fairy"] + } + ] + }, + "sandslash": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Bulldoze", "Gunk Shot", "High Horsepower", "Knock Off", "Protect", "Rapid Spin", "Spikes", "Stealth Rock", "Stone Edge"], + "abilities": ["Sand Rush"], + "teraTypes": ["Dragon", "Poison", "Steel", "Water"] + } + ] + }, + "sandslashalola": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Drill Run", "Ice Shard", "Iron Head", "Knock Off", "Protect", "Rapid Spin", "Spikes", "Stealth Rock", "Triple Axel"], + "abilities": ["Slush Rush"], + "teraTypes": ["Flying", "Water"] + } + ] + }, + "clefable": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Encore", "Fire Blast", "Knock Off", "Moonblast", "Moonlight", "Protect", "Stealth Rock", "Thunder Wave"], + "abilities": ["Magic Guard", "Unaware"], + "teraTypes": ["Fire", "Poison", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Cosmic Power", "Moonblast", "Moonlight", "Stored Power"], + "abilities": ["Magic Guard", "Unaware"], + "teraTypes": ["Poison", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Moonblast", "Moonlight"], + "abilities": ["Magic Guard", "Unaware"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "ninetales": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Flamethrower", "Heat Wave", "Protect", "Scorching Sands", "Solar Beam", "Will-O-Wisp"], + "abilities": ["Drought"], + "teraTypes": ["Fire", "Grass", "Ground"] + }, + { + "role": "Imprisoner", + "movepool": ["Heat Wave", "Imprison", "Protect", "Scorching Sands"], + "abilities": ["Drought"], + "teraTypes": ["Fire", "Ground"] + } + ] + }, + "ninetalesalola": { + "level": 76, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aurora Veil", "Blizzard", "Moonblast", "Protect"], + "abilities": ["Snow Warning"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "wigglytuff": { + "level": 93, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Alluring Voice", "Fire Blast", "Knock Off", "Protect", "Stealth Rock", "Thunder Wave", "Wish"], + "abilities": ["Competitive"], + "teraTypes": ["Fire", "Poison", "Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Alluring Voice", "Hyper Voice", "Protect", "Wish"], + "abilities": ["Competitive"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "vileplume": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Giga Drain", "Protect", "Sludge Wave", "Strength Sap"], + "abilities": ["Effect Spore"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Leech Seed", "Protect", "Sludge Bomb", "Strength Sap"], + "abilities": ["Effect Spore"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "venomoth": { + "level": 87, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Bug Buzz", "Protect", "Quiver Dance", "Sludge Wave"], + "abilities": ["Tinted Lens"], + "teraTypes": ["Bug", "Poison", "Water"] + } + ] + }, + "dugtrio": { + "level": 91, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Earthquake", "Protect", "Stone Edge", "Stomping Tantrum"], + "abilities": ["Arena Trap"], + "teraTypes": ["Ground", "Rock"] + }, + { + "role": "Choice Item user", + "movepool": ["Earthquake", "Rock Slide", "Stone Edge", "Stomping Tantrum", "Throat Chop"], + "abilities": ["Arena Trap"], + "teraTypes": ["Dark", "Ground", "Rock"] + } + ] + }, + "dugtrioalola": { + "level": 89, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Earthquake", "Iron Head", "Protect", "Stomping Tantrum", "Stone Edge"], + "abilities": ["Sand Force", "Tangling Hair"], + "teraTypes": ["Ground", "Rock", "Steel"] + } + ] + }, + "persian": { + "level": 93, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Double Edge", "Feint", "Knock Off", "Protect", "Thunder Wave", "U-turn"], + "abilities": ["Technician"], + "teraTypes": ["Ghost", "Normal"] + } + ] + }, + "persianalola": { + "level": 87, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Dark Pulse", "Nasty Plot", "Protect", "Snarl", "Thunderbolt"], + "abilities": ["Fur Coat"], + "teraTypes": ["Dark", "Electric"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Foul Play", "Icy Wind", "Knock Off", "Parting Shot", "Protect", "Snarl", "Taunt", "Thunder Wave"], + "abilities": ["Fur Coat"], + "teraTypes": ["Fairy", "Ghost", "Poison"] + } + ] + }, + "golduck": { + "level": 90, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Grass Knot", "Hydro Pump", "Ice Beam", "Protect"], + "abilities": ["Cloud Nine", "Swift Swim"], + "teraTypes": ["Dragon", "Grass", "Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Hydro Pump", "Muddy Water", "Protect", "Surf"], + "abilities": ["Cloud Nine", "Swift Swim"], + "teraTypes": ["Dragon", "Water"] + } + ] + }, + "annihilape": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Bulk Up", "Drain Punch", "Protect", "Rage Fist", "Taunt", "U-turn"], + "abilities": ["Defiant"], + "teraTypes": ["Fairy", "Steel", "Water"] + } + ] + }, + "arcanine": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Extreme Speed", "Flare Blitz", "Protect", "Morning Sun"], + "abilities": ["Intimidate"], + "teraTypes": ["Normal"] + }, + { + "role": "Bulky Support", + "movepool": ["Extreme Speed", "Heat Wave", "Morning Sun", "Protect", "Snarl", "Will-O-Wisp"], + "abilities": ["Intimidate"], + "teraTypes": ["Dragon", "Grass", "Steel", "Water"] + } + ] + }, + "arcaninehisui": { + "level": 79, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Extreme Speed", "Flare Blitz", "Head Smash", "Rock Slide"], + "abilities": ["Rock Head"], + "teraTypes": ["Normal", "Rock"] + }, + { + "role": "Bulky Support", + "movepool": ["Extreme Speed", "Flare Blitz", "Morning Sun", "Protect", "Rock Slide", "Will-O-Wisp"], + "abilities": ["Intimidate"], + "teraTypes": ["Dragon", "Fairy", "Grass", "Water"] + } + ] + }, + "poliwrath": { + "level": 90, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Close Combat", "Drain Punch", "Encore", "Ice Punch", "Knock Off", "Liquidation", "Protect"], + "abilities": ["Water Absorb"], + "teraTypes": ["Dark", "Dragon", "Fire", "Ground", "Steel"] + }, + { + "role": "AV Pivot", + "movepool": ["Drain Punch", "Icy Wind", "Knock Off", "Liquidation"], + "abilities": ["Water Absorb"], + "teraTypes": ["Dark", "Dragon", "Ground", "Steel"] + } + ] + }, + "victreebel": { + "level": 90, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Knock Off", "Power Whip", "Protect", "Sludge Wave", "Strength Sap"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Dark", "Grass", "Poison"] + } + ] + }, + "tentacruel": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Haze", "Hydro Pump", "Ice Beam", "Protect", "Rapid Spin", "Sludge Bomb", "Sludge Wave", "Surf"], + "abilities": ["Clear Body", "Liquid Ooze"], + "teraTypes": ["Grass"] + } + ] + }, + "golem": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Earthquake", "High Horsepower", "Protect", "Rock Slide", "Stealth Rock", "Stone Edge"], + "abilities": ["Sturdy"], + "teraTypes": ["Dragon", "Grass", "Poison"] + } + ] + }, + "golemalola": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Double-Edge", "High Horsepower", "Protect", "Rock Slide", "Stone Edge"], + "abilities": ["Galvanize"], + "teraTypes": ["Grass", "Flying", "Ground"] + }, + { + "role": "Choice Item user", + "movepool": ["Double-Edge", "Explosion", "High Horsepower", "Stone Edge"], + "abilities": ["Galvanize"], + "teraTypes": ["Electric", "Grass"] + } + ] + }, + "slowbro": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Flamethrower", "Future Sight", "Protect", "Psychic", "Psyshock", "Scald", "Slack Off", "Surf", "Thunder Wave", "Trick Room"], + "abilities": ["Regenerator"], + "teraTypes": ["Dragon", "Fairy", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Scald", "Slack Off"], + "abilities": ["Regenerator"], + "teraTypes": ["Dragon", "Fairy", "Steel"] + } + ] + }, + "slowbrogalar": { + "level": 86, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Protect", "Psychic", "Shell Side Arm", "Slack Off", "Sludge Wave"], + "abilities": ["Regenerator"], + "teraTypes": ["Dark", "Poison"] + }, + { + "role": "Wallbreaker", + "movepool": ["Fire Blast", "Psychic", "Shell Side Arm", "Sludge Wave", "Trick Room"], + "abilities": ["Regenerator"], + "teraTypes": ["Fire", "Poison", "Psychic"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Psychic", "Sludge Wave"], + "abilities": ["Regenerator"], + "teraTypes": ["Dark"] + } + ] + }, + "dodrio": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Acrobatics", "Double-Edge", "Drill Run", "Knock Off", "Protect", "Quick Attack", "Swords Dance"], + "abilities": ["Tangled Feet"], + "teraTypes": ["Flying", "Ground", "Normal", "Steel"] + } + ] + }, + "dewgong": { + "level": 92, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Flip Turn", "Ice Beam", "Icy Wind", "Knock Off", "Muddy Water", "Protect", "Surf"], + "abilities": ["Thick Fat"], + "teraTypes": ["Dragon", "Grass", "Ground", "Poison", "Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Ice Beam", "Perish Song", "Protect", "Whirlpool"], + "abilities": ["Thick Fat"], + "teraTypes": ["Dragon", "Grass", "Ground", "Poison", "Steel"] + } + ] + }, + "muk": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Drain Punch", "Knock Off", "Poison Gas", "Poison Jab", "Protect"], + "abilities": ["Poison Touch"], + "teraTypes": ["Dark", "Fighting"] + }, + { + "role": "Bulky Setup", + "movepool": ["Curse", "Drain Punch", "Knock Off", "Poison Jab", "Protect"], + "abilities": ["Poison Touch"], + "teraTypes": ["Dark", "Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Drain Punch", "Imprison", "Knock Off", "Poison Jab", "Protect"], + "abilities": ["Poison Touch"], + "teraTypes": ["Dark", "Fighting"] + } + ] + }, + "mukalola": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Curse", "Knock Off", "Poison Gas", "Poison Jab", "Protect"], + "abilities": ["Poison Touch"], + "teraTypes": ["Flying"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Imprison", "Knock Off", "Poison Jab", "Protect"], + "abilities": ["Poison Touch"], + "teraTypes": ["Flying"] + } + ] + }, + "cloyster": { + "level": 85, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Hydro Pump", "Icicle Spear", "Protect", "Shell Smash"], + "abilities": ["Skill Link"], + "teraTypes": ["Dragon", "Grass", "Poison"] + }, + { + "role": "Bulky Setup", + "movepool": ["Icicle Spear", "Protect", "Shell Smash", "Surf"], + "abilities": ["Skill Link"], + "teraTypes": ["Dragon", "Grass", "Poison"] + }, + { + "role": "Fast Attacker", + "movepool": ["Hydro Pump", "Icicle Spear", "Shell Smash", "Spikes"], + "abilities": ["Skill Link"], + "teraTypes": ["Dragon", "Grass", "Poison"] + } + ] + }, + "gengar": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Focus Blast", "Pain Split", "Perish Song", "Protect", "Shadow Ball", "Sludge Wave", "Will-O-Wisp"], + "abilities": ["Cursed Body"], + "teraTypes": ["Dark", "Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Shadow Ball", "Sludge Wave"], + "abilities": ["Cursed Body"], + "teraTypes": ["Dark"] + }, + { + "role": "Wallbreaker", + "movepool": ["Focus Blast", "Protect", "Shadow Ball", "Sludge Bomb", "Sludge Wave"], + "abilities": ["Cursed Body"], + "teraTypes": ["Fighting"] + } + ] + }, + "hypno": { + "level": 95, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Focus Blast", "Knock Off", "Protect", "Poison Gas", "Psychic"], + "abilities": ["Inner Focus"], + "teraTypes": ["Dark", "Fairy", "Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Poison Gas", "Protect", "Psychic"], + "abilities": ["Inner Focus"], + "teraTypes": ["Dark", "Fairy"] + } + ] + }, + "electrode": { + "level": 90, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Foul Play", "Protect", "Taunt", "Thunderbolt", "Thunder Wave", "Volt Switch"], + "abilities": ["Aftermath", "Soundproof", "Static"], + "teraTypes": ["Dark", "Flying"] + }, + { + "role": "Tera Blast user", + "movepool": ["Discharge", "Protect", "Taunt", "Tera Blast", "Thunderbolt", "Volt Switch"], + "abilities": ["Aftermath", "Soundproof", "Static"], + "teraTypes": ["Ice"] + } + ] + }, + "electrodehisui": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Energy Ball", "Giga Drain", "Protect", "Taunt", "Thunderbolt", "Thunder Wave", "Volt Switch"], + "abilities": ["Aftermath", "Soundproof", "Static"], + "teraTypes": ["Electric", "Grass", "Poison"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Discharge", "Giga Drain", "Leech Seed", "Protect"], + "abilities": ["Aftermath", "Soundproof", "Static"], + "teraTypes": ["Poison"] + } + ] + }, + "exeggutor": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Giga Drain", "Leech Seed", "Protect", "Psychic"], + "abilities": ["Harvest"], + "teraTypes": ["Fairy", "Steel", "Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Future Sight", "Giga Drain", "Leech Seed", "Protect"], + "abilities": ["Harvest"], + "teraTypes": ["Fairy", "Steel", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Leech Seed", "Protect", "Psychic", "Substitute"], + "abilities": ["Harvest"], + "teraTypes": ["Fairy", "Steel", "Water"] + } + ] + }, + "exeggutoralola": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Draco Meteor", "Dragon Pulse", "Flamethrower", "Trick Room", "Wood Hammer"], + "abilities": ["Harvest"], + "teraTypes": ["Fire", "Steel"] + }, + { + "role": "Fast Attacker", + "movepool": ["Draco Meteor", "Dragon Pulse", "Leech Seed", "Protect", "Wood Hammer"], + "abilities": ["Harvest"], + "teraTypes": ["Fire", "Steel"] + } + ] + }, + "hitmonlee": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Feint", "Knock Off", "Poison Jab", "Protect"], + "abilities": ["Unburden"], + "teraTypes": ["Dark", "Fighting", "Poison"] + }, + { + "role": "Choice Item user", + "movepool": ["Bullet Punch", "Close Combat", "Knock Off", "Poison Jab", "Stone Edge"], + "abilities": ["Limber"], + "teraTypes": ["Dark", "Fighting", "Poison", "Rock"] + } + ] + }, + "hitmonchan": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Drain Punch", "Knock Off", "Ice Punch", "Poison Jab", "Protect", "Rapid Spin", "Stone Edge", "Thunder Punch"], + "abilities": ["Iron Fist"], + "teraTypes": ["Dark", "Poison", "Rock"] + }, + { + "role": "Bulky Support", + "movepool": ["Drain Punch", "Knock Off", "Mach Punch", "Poison Jab", "Rapid Spin"], + "abilities": ["Iron Fist"], + "teraTypes": ["Dark", "Poison"] + } + ] + }, + "weezing": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Fire Blast", "Pain Split", "Poison Gas", "Protect", "Sludge Bomb", "Sludge Wave", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Steel"] + } + ] + }, + "weezinggalar": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Defog", "Fire Blast", "Pain Split", "Poison Gas", "Protect", "Sludge Wave", "Strange Steam", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Steel"] + } + ] + }, + "rhydon": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Earthquake", "High Horsepower", "Megahorn", "Protect", "Rock Slide", "Stealth Rock", "Stone Edge"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Dragon", "Flying", "Grass", "Water"] + } + ] + }, + "scyther": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bug Bite", "Close Combat", "Dual Wingbeat", "Protect"], + "abilities": ["Technician"], + "teraTypes": ["Fighting"] + }, + { + "role": "Fast Attacker", + "movepool": ["Bug Bite", "Close Combat", "Defog", "Dual Wingbeat", "Feint", "Swords Dance", "U-turn"], + "abilities": ["Technician"], + "teraTypes": ["Fighting"] + } + ] + }, + "tauros": { + "level": 82, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Close Combat", "Double-Edge", "Earthquake", "High Horsepower", "Lash Out", "Stone Edge", "Throat Chop"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Normal"] + }, + { + "role": "Wallbreaker", + "movepool": ["Body Slam", "Close Combat", "Protect", "Throat Chop"], + "abilities": ["Sheer Force"], + "teraTypes": ["Fighting", "Normal"] + } + ] + }, + "taurospaldeacombat": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Earthquake", "High Horsepower", "Iron Head", "Lash Out", "Protect", "Stone Edge", "Throat Chop"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark", "Fighting", "Rock", "Steel"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Bulk Up", "Iron Head", "Protect", "Raging Bull", "Stone Edge", "Throat Chop"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark", "Fighting", "Rock", "Steel"] + } + ] + }, + "taurospaldeablaze": { + "level": 79, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Flare Blitz", "Stone Edge", "Wild Charge"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Fire", "Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Flare Blitz", "Protect", "Stone Edge", "Wild Charge"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Fire", "Water"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Bulk Up", "Close Combat", "Protect", "Raging Bull"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Fire", "Water"] + } + ] + }, + "taurospaldeaaqua": { + "level": 80, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Aqua Jet", "Close Combat", "Wave Crash", "Wild Charge"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Steel", "Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Aqua Jet", "Close Combat", "Protect", "Wave Crash", "Wild Charge"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Steel", "Water"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Bulk Up", "Close Combat", "Liquidation", "Protect"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Steel", "Water"] + } + ] + }, + "gyarados": { + "level": 80, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Dragon Dance", "Earthquake", "Protect", "Stone Edge", "Temper Flare", "Waterfall"], + "abilities": ["Intimidate"], + "teraTypes": ["Ground"] + }, + { + "role": "Tera Blast user", + "movepool": ["Dragon Dance", "Protect", "Tera Blast", "Waterfall"], + "abilities": ["Intimidate"], + "teraTypes": ["Flying"] + } + ] + }, + "lapras": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Blizzard", "Freeze-Dry", "Protect", "Sparkling Aria"], + "abilities": ["Water Absorb"], + "teraTypes": ["Dragon", "Ghost", "Ground", "Poison", "Steel"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Freeze-Dry", "Muddy Water", "Protect", "Sparkling Aria"], + "abilities": ["Water Absorb"], + "teraTypes": ["Dragon", "Ghost", "Ground", "Poison", "Steel"] + } + ] + }, + "ditto": { + "level": 97, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Transform"], + "abilities": ["Imposter"], + "teraTypes": ["Bug", "Dark", "Dragon", "Electric", "Fairy", "Fighting", "Fire", "Flying", "Ghost", "Grass", "Ground", "Ice", "Normal", "Poison", "Psychic", "Rock", "Steel", "Water"] + } + ] + }, + "vaporeon": { + "level": 85, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Haze", "Ice Beam", "Muddy Water", "Protect", "Roar", "Scald", "Wish"], + "abilities": ["Water Absorb"], + "teraTypes": ["Dragon", "Ghost", "Ground", "Poison", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Protect", "Scald", "Wish"], + "abilities": ["Water Absorb"], + "teraTypes": ["Dragon", "Ghost", "Ground", "Poison", "Steel"] + } + ] + }, + "jolteon": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Alluring Voice", "Calm Mind", "Discharge", "Protect", "Shadow Ball", "Thunderbolt", "Volt Switch"], + "abilities": ["Volt Absorb"], + "teraTypes": ["Fairy"] + }, + { + "role": "Tera Blast user", + "movepool": ["Calm Mind", "Protect", "Tera Blast", "Thunderbolt"], + "abilities": ["Volt Absorb"], + "teraTypes": ["Ice"] + } + ] + }, + "flareon": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Lava Plume", "Protect", "Temper Flare", "Wish"], + "abilities": ["Flash Fire", "Guts"], + "teraTypes": ["Dragon", "Grass"] + }, + { + "role": "Wallbreaker", + "movepool": ["Facade", "Flare Blitz", "Protect", "Quick Attack", "Trailblaze"], + "abilities": ["Guts"], + "teraTypes": ["Normal"] + } + ] + }, + "snorlax": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Slam", "Crunch", "Double-Edge", "High Horsepower", "Protect"], + "abilities": ["Thick Fat"], + "teraTypes": ["Fairy", "Ghost", "Ground", "Poison"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Slam", "Curse", "Rest", "Sleep Talk"], + "abilities": ["Thick Fat"], + "teraTypes": ["Fairy", "Poison"] + } + ] + }, + "articuno": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Brave Bird", "Freeze-Dry", "Protect", "Roost", "U-turn"], + "abilities": ["Pressure"], + "teraTypes": ["Dragon", "Ground", "Steel"] + } + ] + }, + "articunogalar": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Calm Mind", "Freezing Glare", "Future Sight", "Hurricane", "Protect", "Recover"], + "abilities": ["Competitive"], + "teraTypes": ["Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Freezing Glare", "Hurricane", "Imprison", "Protect"], + "abilities": ["Competitive"], + "teraTypes": ["Steel"] + } + ] + }, + "zapdos": { + "level": 78, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Discharge", "Hurricane", "Protect", "Roost", "Thunderbolt", "U-turn"], + "abilities": ["Static"], + "teraTypes": ["Electric", "Steel"] + }, + { + "role": "Fast Attacker", + "movepool": ["Heat Wave", "Hurricane", "Protect", "Tailwind", "Thunderbolt"], + "abilities": ["Static"], + "teraTypes": ["Electric", "Fire"] + } + ] + }, + "zapdosgalar": { + "level": 77, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Bulk Up", "Close Combat", "Knock Off", "Protect", "Thunderous Kick"], + "abilities": ["Defiant"], + "teraTypes": ["Dark", "Fighting", "Flying"] + } + ] + }, + "moltres": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Protect", "Roost", "Scorching Sands", "U-turn"], + "abilities": ["Flame Body"], + "teraTypes": ["Dragon", "Ground", "Steel"] + } + ] + }, + "moltresgalar": { + "level": 77, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Fiery Wrath", "Hurricane", "Nasty Plot", "Protect", "Rest"], + "abilities": ["Berserk"], + "teraTypes": ["Dark", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Fiery Wrath", "Hurricane", "Imprison", "Protect"], + "abilities": ["Berserk"], + "teraTypes": ["Dark", "Steel"] + } + ] + }, + "dragonite": { + "level": 78, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Breaking Swipe", "Dragon Claw", "Fire Punch", "Extreme Speed", "Hurricane", "Protect", "Roost", "Thunder Wave"], + "abilities": ["Inner Focus"], + "teraTypes": ["Steel"] + }, + { + "role": "Tera Blast user", + "movepool": ["Dragon Claw", "Dragon Dance", "Protect", "Tera Blast"], + "abilities": ["Inner Focus"], + "teraTypes": ["Flying"] + } + ] + }, + "mewtwo": { + "level": 73, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aura Sphere", "Dark Pulse", "Fire Blast", "Protect", "Psystrike"], + "abilities": ["Unnerve"], + "teraTypes": ["Dark", "Fighting", "Fire", "Psychic"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Aura Sphere", "Nasty Plot", "Psystrike", "Recover"], + "abilities": ["Unnerve"], + "teraTypes": ["Fighting"] + } + ] + }, + "mew": { + "level": 83, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Dragon Dance", "Knock Off", "Leech Life", "Protect", "Psychic Fangs", "Swords Dance"], + "abilities": ["Synchronize"], + "teraTypes": ["Dark", "Fighting"] + }, + { + "role": "Bulky Setup", + "movepool": ["Alluring Voice", "Aura Sphere", "Bug Buzz", "Calm Mind", "Fire Blast", "Protect", "Psychic"], + "abilities": ["Synchronize"], + "teraTypes": ["Fairy", "Fighting", "Fire"] + }, + { + "role": "Fast Attacker", + "movepool": ["Knock Off", "Protect", "Psychic", "Spikes", "Stealth Rock", "Thunder Wave", "U-turn", "Will-O-Wisp"], + "abilities": ["Synchronize"], + "teraTypes": ["Dark", "Fairy"] + } + ] + }, + "meganium": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Dragon Tail", "Encore", "Giga Drain", "Knock Off", "Leech Seed", "Synthesis"], + "abilities": ["Overgrow"], + "teraTypes": ["Dragon", "Poison", "Steel"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Giga Drain", "Knock Off", "Leech Seed", "Protect"], + "abilities": ["Overgrow"], + "teraTypes": ["Dragon", "Poison", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Earthquake", "Knock Off", "Petal Blizzard", "Protect", "Stomping Tantrum", "Swords Dance"], + "abilities": ["Overgrow"], + "teraTypes": ["Dark", "Ground", "Steel"] + } + ] + }, + "typhlosion": { + "level": 80, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Eruption", "Fire Blast", "Heat Wave", "Scorching Sands"], + "abilities": ["Flash Fire"], + "teraTypes": ["Fire"] + } + ] + }, + "typhlosionhisui": { + "level": 80, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Eruption", "Focus Blast", "Heat Wave", "Shadow Ball"], + "abilities": ["Blaze"], + "teraTypes": ["Fire"] + } + ] + }, + "feraligatr": { + "level": 82, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Dragon Dance", "Ice Punch", "Liquidation", "Protect"], + "abilities": ["Sheer Force"], + "teraTypes": ["Dragon", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Crunch", "Dragon Dance", "Ice Punch", "Liquidation"], + "abilities": ["Sheer Force"], + "teraTypes": ["Dark"] + } + ] + }, + "furret": { + "level": 96, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Double-Edge", "Knock Off", "Protect", "Tidy Up"], + "abilities": ["Frisk"], + "teraTypes": ["Ghost"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Slam", "Coil", "Knock Off", "Protect"], + "abilities": ["Frisk"], + "teraTypes": ["Ghost"] + }, + { + "role": "Fast Attacker", + "movepool": ["Body Slam", "Knock Off", "Protect", "Super Fang", "U-turn"], + "abilities": ["Frisk"], + "teraTypes": ["Ghost"] + } + ] + }, + "noctowl": { + "level": 93, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Defog", "Hurricane", "Hyper Voice", "Protect", "Roost"], + "abilities": ["Tinted Lens"], + "teraTypes": ["Normal"] + } + ] + }, + "ariados": { + "level": 95, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Knock Off", "Megahorn", "Poison Jab", "Protect", "Sticky Web", "Sucker Punch"], + "abilities": ["Swarm"], + "teraTypes": ["Dark", "Water"] + } + ] + }, + "lanturn": { + "level": 90, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Ice Beam", "Protect", "Scald", "Volt Switch"], + "abilities": ["Volt Absorb"], + "teraTypes": ["Flying"] + } + ] + }, + "ampharos": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Dragon Pulse", "Dragon Tail", "Focus Blast", "Protect", "Thunderbolt", "Volt Switch"], + "abilities": ["Static"], + "teraTypes": ["Dragon", "Flying"] + }, + { + "role": "Bulky Setup", + "movepool": ["Cotton Guard", "Discharge", "Dragon Pulse", "Protect", "Thunderbolt"], + "abilities": ["Static"], + "teraTypes": ["Dragon"] + } + ] + }, + "bellossom": { + "level": 86, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Giga Drain", "Protect", "Quiver Dance", "Sludge Bomb", "Strength Sap"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Poison", "Water"] + }, + { + "role": "Tera Blast user", + "movepool": ["Giga Drain", "Quiver Dance", "Strength Sap", "Tera Blast"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Fire", "Rock"] + } + ] + }, + "azumarill": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Aqua Jet", "Liquidation", "Play Rough", "Protect"], + "abilities": ["Huge Power"], + "teraTypes": ["Poison", "Water"] + }, + { + "role": "Wallbreaker", + "movepool": ["Aqua Jet", "Ice Spinner", "Knock Off", "Liquidation", "Play Rough", "Superpower"], + "abilities": ["Huge Power"], + "teraTypes": ["Water"] + } + ] + }, + "sudowoodo": { + "level": 94, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Head Smash", "Protect", "Spikes", "Stealth Rock", "Sucker Punch", "Wood Hammer"], + "abilities": ["Rock Head"], + "teraTypes": ["Grass"] + }, + { + "role": "Wallbreaker", + "movepool": ["Head Smash", "High Horsepower", "Rock Slide", "Wood Hammer"], + "abilities": ["Rock Head"], + "teraTypes": ["Grass"] + } + ] + }, + "politoed": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Encore", "Haze", "Ice Beam", "Muddy Water", "Protect", "Surf"], + "abilities": ["Drizzle"], + "teraTypes": ["Dragon", "Steel"] + }, + { + "role": "Wallbreaker", + "movepool": ["Hydro Pump", "Ice Beam", "Muddy Water", "Surf", "Weather Ball"], + "abilities": ["Drizzle"], + "teraTypes": ["Water"] + } + ] + }, + "jumpluff": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Acrobatics", "Leech Seed", "Protect", "Substitute"], + "abilities": ["Infiltrator"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Acrobatics", "Encore", "Protect", "Strength Sap", "Stun Spore", "U-turn"], + "abilities": ["Infiltrator"], + "teraTypes": ["Steel"] + } + ] + }, + "sunflora": { + "level": 100, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Earth Power", "Solar Beam", "Sunny Day", "Weather Ball"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Fire"] + }, + { + "role": "Choice Item user", + "movepool": ["Dazzling Gleam", "Earth Power", "Energy Ball", "Leaf Storm", "Sludge Bomb"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Fairy", "Grass", "Ground", "Poison"] + }, + { + "role": "Bulky Support", + "movepool": ["Giga Drain", "Leech Seed", "Protect", "Sludge Bomb"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Poison"] + } + ] + }, + "quagsire": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earthquake", "High Horsepower", "Ice Beam", "Muddy Water", "Protect", "Recover", "Spikes", "Stealth Rock"], + "abilities": ["Unaware", "Water Absorb"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "clodsire": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Curse", "Earthquake", "Gunk Shot", "Recover", "Protect", "Poison Jab", "Spikes", "Stealth Rock"], + "abilities": ["Unaware", "Water Absorb"], + "teraTypes": ["Flying", "Steel"] + } + ] + }, + "espeon": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Alluring Voice", "Calm Mind", "Future Sight", "Morning Sun", "Protect", "Psychic", "Shadow Ball"], + "abilities": ["Magic Bounce"], + "teraTypes": ["Fairy"] + } + ] + }, + "umbreon": { + "level": 85, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Foul Play", "Mean Look", "Protect", "Tail Whip", "Thunder Wave", "Wish"], + "abilities": ["Synchronize"], + "teraTypes": ["Poison"] + } + ] + }, + "slowking": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Chilling Reception", "Flamethrower", "Future Sight", "Nasty Plot", "Protect", "Psychic", "Psyshock", "Scald", "Slack Off", "Surf", "Thunder Wave", "Trick Room"], + "abilities": ["Regenerator"], + "teraTypes": ["Dragon", "Fairy", "Poison", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Psychic", "Scald"], + "abilities": ["Regenerator"], + "teraTypes": ["Dragon", "Fairy", "Poison", "Steel"] + } + ] + }, + "slowkinggalar": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Fire Blast", "Future Sight", "Nasty Plot", "Protect", "Psychic", "Slack Off", "Sludge Bomb", "Sludge Wave", "Trick Room"], + "abilities": ["Regenerator"], + "teraTypes": ["Dark", "Grass"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Psychic", "Sludge Wave"], + "abilities": ["Regenerator"], + "teraTypes": ["Dark", "Grass"] + } + ] + }, + "forretress": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Protect", "Rapid Spin", "Spikes", "Stealth Rock"], + "abilities": ["Sturdy"], + "teraTypes": ["Fighting", "Water"] + }, + { + "role": "AV Pivot", + "movepool": ["Body Press", "Iron Head", "Lunge", "Rapid Spin"], + "abilities": ["Sturdy"], + "teraTypes": ["Fighting", "Water"] + } + ] + }, + "dunsparce": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Bite", "Body Slam", "Protect", "Roost"], + "abilities": ["Serene Grace"], + "teraTypes": ["Ghost", "Poison"] + }, + { + "role": "Bulky Setup", + "movepool": ["Blizzard", "Body Slam", "Coil", "Roost"], + "abilities": ["Serene Grace"], + "teraTypes": ["Ghost", "Poison"] + } + ] + }, + "granbull": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Earthquake", "Encore", "Play Rough", "Protect", "Stomping Tantrum", "Thunder Wave"], + "abilities": ["Intimidate"], + "teraTypes": ["Ground", "Steel"] + } + ] + }, + "qwilfish": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Flip Turn", "Gunk Shot", "Pain Split", "Protect", "Spikes", "Thunder Wave"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark", "Grass"] + } + ] + }, + "qwilfishhisui": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Crunch", "Gunk Shot", "Pain Split", "Protect", "Spikes", "Throat Chop"], + "abilities": ["Intimidate"], + "teraTypes": ["Flying"] + } + ] + }, + "overqwil": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Crunch", "Gunk Shot", "Protect", "Spikes", "Swords Dance", "Throat Chop"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark", "Flying", "Poison"] + } + ] + }, + "scizor": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bullet Punch", "Close Combat", "Defog", "Protect", "U-turn"], + "abilities": ["Technician"], + "teraTypes": ["Dragon", "Steel"] + }, + { + "role": "Wallbreaker", + "movepool": ["Bug Bite", "Bullet Punch", "Close Combat", "Protect", "Swords Dance"], + "abilities": ["Technician"], + "teraTypes": ["Steel"] + } + ] + }, + "heracross": { + "level": 81, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Facade", "Knock Off", "Protect"], + "abilities": ["Guts"], + "teraTypes": ["Normal"] + }, + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "High Horsepower", "Knock Off", "Megahorn", "Protect", "Spikes", "Stone Edge"], + "abilities": ["Guts"], + "teraTypes": ["Fighting", "Rock"] + } + ] + }, + "magcargo": { + "level": 93, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Lava Plume", "Power Gem", "Protect", "Shell Smash"], + "abilities": ["Weak Armor"], + "teraTypes": ["Dragon", "Grass"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Lava Plume", "Power Gem", "Protect", "Recover", "Stealth Rock"], + "abilities": ["Flame Body"], + "teraTypes": ["Dragon", "Grass"] + } + ] + }, + "delibird": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Brave Bird", "Icy Wind", "Rapid Spin", "Spikes"], + "abilities": ["Insomnia", "Vital Spirit"], + "teraTypes": ["Ghost"] + }, + { + "role": "Wallbreaker", + "movepool": ["Brave Bird", "Drill Run", "Ice Shard", "Ice Spinner", "Protect", "Spikes"], + "abilities": ["Hustle"], + "teraTypes": ["Flying", "Ground", "Ice"] + } + ] + }, + "skarmory": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Press", "Brave Bird", "Roost", "Spikes", "Stealth Rock"], + "abilities": ["Sturdy"], + "teraTypes": ["Dragon", "Fighting"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Brave Bird", "Protect", "Spikes", "Stealth Rock", "Whirlwind"], + "abilities": ["Sturdy"], + "teraTypes": ["Dragon"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Brave Bird", "Iron Defense", "Roost"], + "abilities": ["Sturdy"], + "teraTypes": ["Fighting"] + } + ] + }, + "houndoom": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dark Pulse", "Fire Blast", "Heat Wave", "Nasty Plot", "Protect"], + "abilities": ["Flash Fire"], + "teraTypes": ["Dark", "Fire", "Grass"] + } + ] + }, + "kingdra": { + "level": 85, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Draco Meteor", "Protect", "Rain Dance", "Wave Crash"], + "abilities": ["Swift Swim"], + "teraTypes": ["Water"] + }, + { + "role": "Wallbreaker", + "movepool": ["Draco Meteor", "Muddy Water", "Protect", "Rain Dance", "Surf"], + "abilities": ["Swift Swim"], + "teraTypes": ["Water"] + } + ] + }, + "donphan": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earthquake", "Knock Off", "Protect", "Rapid Spin", "Stealth Rock", "Stone Edge"], + "abilities": ["Sturdy"], + "teraTypes": ["Dragon", "Water"] + } + ] + }, + "porygon2": { + "level": 82, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Discharge", "Ice Beam", "Protect", "Recover", "Tri Attack"], + "abilities": ["Download"], + "teraTypes": ["Electric", "Ghost", "Poison"] + }, + { + "role": "Tera Blast user", + "movepool": ["Protect", "Recover", "Shadow Ball", "Tera Blast"], + "abilities": ["Download"], + "teraTypes": ["Fairy", "Fighting"] + } + ] + }, + "smeargle": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Baneful Bunker", "Mortal Spin", "Population Bomb", "Spikes", "Spiky Shield", "Stealth Rock", "Sticky Web"], + "abilities": ["Technician"], + "teraTypes": ["Ghost"] + } + ] + }, + "hitmontop": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Bulldoze", "Close Combat", "Feint", "Protect", "Rapid Spin"], + "abilities": ["Intimidate"], + "teraTypes": ["Steel"] + } + ] + }, + "blissey": { + "level": 96, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Heal Bell", "Protect", "Seismic Toss", "Soft-Boiled", "Stealth Rock", "Thunder Wave"], + "abilities": ["Natural Cure"], + "teraTypes": ["Fairy", "Ghost", "Poison"] + }, + { + "role": "Bulky Setup", + "movepool": ["Defense Curl", "Heal Bell", "Protect", "Seismic Toss", "Soft-Boiled", "Stealth Rock", "Thunder Wave"], + "abilities": ["Natural Cure"], + "teraTypes": ["Fairy", "Ghost", "Poison"] + } + ] + }, + "raikou": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Aura Sphere", "Calm Mind", "Discharge", "Protect", "Scald", "Shadow Ball", "Thunderbolt"], + "abilities": ["Pressure"], + "teraTypes": ["Water"] + }, + { + "role": "Choice Item user", + "movepool": ["Aura Sphere", "Discharge", "Scald", "Thunderbolt"], + "abilities": ["Inner Focus"], + "teraTypes": ["Electric", "Water"] + } + ] + }, + "entei": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Extreme Speed", "Protect", "Sacred Fire", "Stomping Tantrum"], + "abilities": ["Inner Focus"], + "teraTypes": ["Dragon", "Fire", "Normal"] + }, + { + "role": "Choice Item user", + "movepool": ["Extreme Speed", "Flare Blitz", "Sacred Fire", "Stomping Tantrum"], + "abilities": ["Inner Focus"], + "teraTypes": ["Fire", "Normal"] + }, + { + "role": "AV Pivot", + "movepool": ["Extreme Speed", "Lava Plume", "Sacred Fire", "Stomping Tantrum"], + "abilities": ["Inner Focus"], + "teraTypes": ["Dragon", "Fire", "Normal"] + } + ] + }, + "suicune": { + "level": 80, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Ice Beam", "Protect", "Scald"], + "abilities": ["Inner Focus"], + "teraTypes": ["Steel"] + } + ] + }, + "tyranitar": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["High Horsepower", "Knock Off", "Protect", "Rock Slide", "Stone Edge", "Thunder Wave"], + "abilities": ["Sand Stream"], + "teraTypes": ["Ghost", "Rock"] + }, + { + "role": "Bulky Setup", + "movepool": ["Dragon Dance", "Knock Off", "Protect", "Rock Slide"], + "abilities": ["Sand Stream"], + "teraTypes": ["Ghost", "Rock"] + } + ] + }, + "lugia": { + "level": 73, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Aeroblast", "Calm Mind", "Earth Power", "Recover"], + "abilities": ["Multiscale"], + "teraTypes": ["Ground", "Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Air Slash", "Protect", "Recover", "Whirlwind"], + "abilities": ["Multiscale"], + "teraTypes": ["Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Air Slash", "Imprison", "Protect", "Recover"], + "abilities": ["Multiscale"], + "teraTypes": ["Steel"] + } + ] + }, + "hooh": { + "level": 74, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Brave Bird", "Earth Power", "Protect", "Recover", "Sacred Fire", "Whirlwind"], + "abilities": ["Regenerator"], + "teraTypes": ["Ground", "Steel"] + } + ] + }, + "sceptile": { + "level": 87, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Energy Ball", "Focus Blast", "Leech Seed", "Protect"], + "abilities": ["Overgrow"], + "teraTypes": ["Steel"] + }, + { + "role": "Choice Item user", + "movepool": ["Energy Ball", "Focus Blast", "Leaf Storm", "Dragon Pulse"], + "abilities": ["Overgrow"], + "teraTypes": ["Dragon", "Fighting", "Grass"] + } + ] + }, + "blaziken": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Heat Wave", "Knock Off", "Protect", "Stone Edge", "U-turn", "Will-O-Wisp"], + "abilities": ["Speed Boost"], + "teraTypes": ["Dark", "Fire", "Grass"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Flare Blitz", "Protect", "Swords Dance"], + "abilities": ["Speed Boost"], + "teraTypes": ["Fighting", "Grass"] + } + ] + }, + "swampert": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Flip Turn", "High Horsepower", "Ice Beam", "Icy Wind", "Knock Off", "Muddy Water", "Protect", "Roar", "Stealth Rock", "Surf"], + "abilities": ["Torrent"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "mightyena": { + "level": 94, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Crunch", "Play Rough", "Protect", "Sucker Punch", "Super Fang", "Taunt", "Throat Chop"], + "abilities": ["Intimidate"], + "teraTypes": ["Fairy"] + }, + { + "role": "AV Pivot", + "movepool": ["Crunch", "Play Rough", "Sucker Punch", "Super Fang", "Throat Chop"], + "abilities": ["Intimidate"], + "teraTypes": ["Fairy"] + } + ] + }, + "ludicolo": { + "level": 89, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Energy Ball", "Ice Beam", "Icy Wind", "Muddy Water", "Protect", "Rain Dance", "Surf"], + "abilities": ["Swift Swim"], + "teraTypes": ["Poison", "Steel", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Ice Beam", "Leech Seed", "Muddy Water", "Protect", "Surf"], + "abilities": ["Swift Swim"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "shiftry": { + "level": 87, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Knock Off", "Leaf Blade", "Low Kick", "Petal Blizzard", "Tailwind"], + "abilities": ["Wind Rider"], + "teraTypes": ["Dark", "Grass", "Poison"] + }, + { + "role": "Fast Attacker", + "movepool": ["Defog", "Knock Off", "Leaf Storm", "Protect", "Will-O-Wisp"], + "abilities": ["Wind Rider"], + "teraTypes": ["Poison"] + } + ] + }, + "pelipper": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Hurricane", "Muddy Water", "Protect", "Roost", "Surf"], + "abilities": ["Drizzle"], + "teraTypes": ["Ground"] + }, + { + "role": "Wallbreaker", + "movepool": ["Hurricane", "Surf", "U-turn", "Weather Ball"], + "abilities": ["Drizzle"], + "teraTypes": ["Water"] + } + ] + }, + "gardevoir": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dazzling Gleam", "Moonblast", "Future Sight", "Mystical Fire", "Protect", "Psychic", "Thunder Wave", "Will-O-Wisp"], + "abilities": ["Trace"], + "teraTypes": ["Fairy", "Fire", "Steel"] + }, + { + "role": "Choice Item user", + "movepool": ["Dazzling Gleam", "Healing Wish", "Moonblast", "Focus Blast", "Mystical Fire", "Psychic", "Trick"], + "abilities": ["Trace"], + "teraTypes": ["Fairy", "Fire", "Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Dazzling Gleam", "Imprison", "Protect", "Psychic"], + "abilities": ["Trace"], + "teraTypes": ["Steel"] + } + ] + }, + "masquerain": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bug Buzz", "Hurricane", "Hydro Pump", "Protect", "Sticky Web", "Stun Spore", "U-turn"], + "abilities": ["Intimidate"], + "teraTypes": ["Ground", "Steel", "Water"] + } + ] + }, + "breloom": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bullet Seed", "Close Combat", "Mach Punch", "Protect", "Rock Tomb"], + "abilities": ["Technician"], + "teraTypes": ["Fighting", "Rock"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Close Combat", "Facade", "Protect", "Seed Bomb"], + "abilities": ["Poison Heal"], + "teraTypes": ["Normal"] + } + ] + }, + "vigoroth": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Slam", "Knock Off", "Protect", "Slack Off"], + "abilities": ["Vital Spirit"], + "teraTypes": ["Ghost"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Slam", "Bulk Up", "Knock Off", "Slack Off"], + "abilities": ["Vital Spirit"], + "teraTypes": ["Ghost"] + } + ] + }, + "slaking": { + "level": 89, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Giga Impact", "Knock Off", "Roar", "Slack Off", "Stomping Tantrum"], + "abilities": ["Truant"], + "teraTypes": ["Normal", "Ground"] + } + ] + }, + "hariyama": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Facade", "Feint", "Knock Off", "Protect"], + "abilities": ["Guts"], + "teraTypes": ["Normal"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Bullet Punch", "Close Combat", "Headlong Rush", "Heavy Slam", "Knock Off", "Protect"], + "abilities": ["Thick Fat"], + "teraTypes": ["Steel"] + } + ] + }, + "sableye": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Encore", "Foul Play", "Knock Off", "Light Screen", "Recover", "Reflect", "Will-O-Wisp", "Thunder Wave"], + "abilities": ["Prankster"], + "teraTypes": ["Poison", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Encore", "Foul Play", "Imprison", "Knock Off", "Protect"], + "abilities": ["Prankster"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "medicham": { + "level": 86, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Close Combat", "Ice Punch", "Poison Jab", "Trick", "Zen Headbutt"], + "abilities": ["Pure Power"], + "teraTypes": ["Fighting"] + }, + { + "role": "Fast Attacker", + "movepool": ["Bullet Punch", "Close Combat", "Ice Punch", "Poison Jab", "Protect", "Zen Headbutt"], + "abilities": ["Pure Power"], + "teraTypes": ["Fighting", "Steel"] + } + ] + }, + "plusle": { + "level": 92, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Alluring Voice", "Grass Knot", "Nasty Plot", "Protect", "Thunderbolt"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Fairy", "Flying", "Grass"] + }, + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Encore", "Protect", "Super Fang"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Flying"] + } + ] + }, + "minun": { + "level": 92, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Alluring Voice", "Grass Knot", "Nasty Plot", "Protect", "Thunderbolt"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Fairy", "Flying", "Grass"] + }, + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Encore", "Protect", "Super Fang"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Flying"] + } + ] + }, + "volbeat": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Lunge", "Roost", "Thunder Wave"], + "abilities": ["Prankster"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Encore", "Roost", "Thunder Wave", "U-turn"], + "abilities": ["Prankster"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "illumise": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bug Buzz", "Encore", "Roost", "Thunder Wave"], + "abilities": ["Prankster"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Encore", "Roost", "Struggle Bug", "Thunder Wave"], + "abilities": ["Prankster"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "swalot": { + "level": 90, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Knock Off", "Poison Gas", "Protect", "Sludge Bomb"], + "abilities": ["Gluttony"], + "teraTypes": ["Dark", "Grass"] + }, + { + "role": "Bulky Setup", + "movepool": ["Acid Armor", "Body Press", "Poison Gas", "Sludge Bomb"], + "abilities": ["Liquid Ooze", "Sticky Hold"], + "teraTypes": ["Fighting", "Grass"] + } + ] + }, + "camerupt": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["High Horsepower", "Lava Plume", "Protect", "Roar", "Stealth Rock"], + "abilities": ["Solid Rock"], + "teraTypes": ["Water"] + } + ] + }, + "torkoal": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Lava Plume", "Protect", "Rapid Spin", "Solar Beam", "Stealth Rock"], + "abilities": ["Drought"], + "teraTypes": ["Dragon", "Grass"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Flamethrower", "Protect", "Rapid Spin", "Solar Beam", "Stealth Rock"], + "abilities": ["Drought"], + "teraTypes": ["Dragon", "Grass"] + }, + { + "role": "Fast Attacker", + "movepool": ["Lava Plume", "Overheat", "Protect", "Rapid Spin"], + "abilities": ["Drought"], + "teraTypes": ["Dragon"] + } + ] + }, + "grumpig": { + "level": 91, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Encore", "Focus Blast", "Future Sight", "Icy Wind", "Nasty Plot", "Protect", "Psychic", "Thunder Wave", "Whirlwind"], + "abilities": ["Thick Fat"], + "teraTypes": ["Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Focus Blast", "Imprison", "Protect", "Psychic Noise", "Shadow Ball"], + "abilities": ["Thick Fat"], + "teraTypes": ["Fairy", "Steel"] + } + ] + }, + "flygon": { + "level": 84, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Dragon Claw", "Dragon Dance", "Earthquake", "Protect"], + "abilities": ["Levitate"], + "teraTypes": ["Ground", "Steel"] + }, + { + "role": "Fast Attacker", + "movepool": ["Breaking Swipe", "Draco Meteor", "Earthquake", "Protect", "Stealth Rock", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Steel"] + }, + { + "role": "Wallbreaker", + "movepool": ["Boomburst", "Draco Meteor", "Earth Power", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Normal"] + } + ] + }, + "cacturne": { + "level": 91, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Knock Off", "Leaf Storm", "Spiky Shield", "Sucker Punch"], + "abilities": ["Water Absorb"], + "teraTypes": ["Dark", "Poison"] + } + ] + }, + "altaria": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Breaking Swipe", "Brave Bird", "Defog", "Fire Blast", "Haze", "Protect", "Roost", "Will-O-Wisp"], + "abilities": ["Natural Cure"], + "teraTypes": ["Steel"] + } + ] + }, + "zangoose": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Facade", "Feint", "Knock Off", "Protect"], + "abilities": ["Toxic Boost"], + "teraTypes": ["Normal"] + } + ] + }, + "seviper": { + "level": 95, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Flamethrower", "Giga Drain", "Glare", "Knock Off", "Protect", "Psychic Fangs", "Sludge Wave"], + "abilities": ["Shed Skin"], + "teraTypes": ["Fire", "Dark", "Grass"] + }, + { + "role": "Choice item user", + "movepool": ["Flamethrower", "Giga Drain", "Gunk Shot", "Knock Off", "Switcheroo"], + "abilities": ["Shed Skin"], + "teraTypes": ["Fire", "Dark", "Grass"] + } + ] + }, + "whiscash": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["High Horsepower", "Ice Beam", "Muddy Water", "Protect", "Spikes", "Stealth Rock", "Surf"], + "abilities": ["Oblivious"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Dragon Dance", "Earthquake", "High Horsepower", "Liquidation", "Protect"], + "abilities": ["Oblivious"], + "teraTypes": ["Steel"] + } + ] + }, + "crawdaunt": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Aqua Jet", "Crabhammer", "Knock Off", "Protect"], + "abilities": ["Adaptability"], + "teraTypes": ["Water"] + } + ] + }, + "milotic": { + "level": 82, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Coil", "Ice Beam", "Muddy Water", "Recover"], + "abilities": ["Competitive"], + "teraTypes": ["Dragon", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Recover", "Scald"], + "abilities": ["Competitive"], + "teraTypes": ["Dragon", "Steel"] + } + ] + }, + "banette": { + "level": 94, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Gunk Shot", "Phantom Force", "Poltergeist", "Protect", "Shadow Sneak"], + "abilities": ["Cursed Body"], + "teraTypes": ["Ghost", "Poison"] + } + ] + }, + "tropius": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Air Slash", "Leech Seed", "Protect", "Substitute"], + "abilities": ["Harvest"], + "teraTypes": ["Steel"] + } + ] + }, + "chimecho": { + "level": 94, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Draining Kiss", "Encore", "Heal Bell", "Knock Off", "Protect", "Psychic Noise", "Recover", "Thunder Wave"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Cosmic Power", "Draining Kiss", "Recover", "Stored Power"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Steel"] + } + ] + }, + "glalie": { + "level": 94, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Disable", "Fake Tears", "Freeze-Dry", "Icy Wind", "Protect", "Spikes"], + "abilities": ["Inner Focus"], + "teraTypes": ["Ghost", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Blizzard", "Fake Tears", "Freeze-Dry", "Protect", "Spikes"], + "abilities": ["Inner Focus"], + "teraTypes": ["Ghost", "Water"] + } + ] + }, + "luvdisc": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Endeavor", "Hydro Pump", "Substitute", "Whirlpool"], + "abilities": ["Hydration"], + "teraTypes": ["Dragon", "Ghost", "Steel"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Icy Wind", "Protect", "Substitute", "Whirlpool", "Wish"], + "abilities": ["Hydration"], + "teraTypes": ["Dragon", "Ghost", "Steel"] + } + ] + }, + "salamence": { + "level": 79, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Dragon Claw", "Dragon Dance", "Dual Wingbeat", "Protect"], + "abilities": ["Intimidate"], + "teraTypes": ["Dragon", "Flying", "Steel"] + }, + { + "role": "Fast Attacker", + "movepool": ["Draco Meteor", "Dual Wingbeat", "Fire Blast", "Protect", "Roost"], + "abilities": ["Intimidate"], + "teraTypes": ["Fire", "Steel"] + } + ] + }, + "metagross": { + "level": 80, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Agility", "Earthquake", "Heavy Slam", "Knock Off", "Protect", "Psychic Fangs", "Stomping Tantrum"], + "abilities": ["Clear Body"], + "teraTypes": ["Dark", "Ground", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Bullet Punch", "Earthquake", "Heavy Slam", "Knock Off", "Protect", "Psychic Fangs", "Stealth Rock"], + "abilities": ["Clear Body"], + "teraTypes": ["Dark", "Fighting", "Steel"] + } + ] + }, + "regirock": { + "level": 83, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Iron Defense", "Rest", "Rock Slide", "Stone Edge", "Thunder Wave"], + "abilities": ["Clear Body", "Sturdy"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Iron Defense", "Protect", "Stealth Rock", "Stone Edge"], + "abilities": ["Clear Body", "Sturdy"], + "teraTypes": ["Fighting"] + } + ] + }, + "regice": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Blizzard", "Ice Beam", "Protect", "Thunderbolt"], + "abilities": ["Clear Body"], + "teraTypes": ["Electric"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Ice Beam", "Icy Wind", "Protect", "Thunderbolt", "Thunder Wave"], + "abilities": ["Clear Body"], + "teraTypes": ["Electric", "Fighting"] + }, + { + "role": "Bulky Setup", + "movepool": ["Blizzard", "Protect", "Snowscape", "Thunderbolt"], + "abilities": ["Ice Body"], + "teraTypes": ["Electric", "Ice"] + } + ] + }, + "registeel": { + "level": 86, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Iron Defense", "Iron Head", "Protect", "Thunder Wave"], + "abilities": ["Clear Body"], + "teraTypes": ["Fighting"] + } + ] + }, + "latias": { + "level": 80, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Calm Mind", "Draco Meteor", "Protect", "Psyshock"], + "abilities": ["Levitate"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Draco Meteor", "Psyshock", "Recover"], + "abilities": ["Levitate"], + "teraTypes": ["Steel"] + } + ] + }, + "latios": { + "level": 79, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Calm Mind", "Draco Meteor", "Luster Purge", "Psyshock", "Protect"], + "abilities": ["Levitate"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Draco Meteor", "Luster Purge", "Psyshock", "Recover"], + "abilities": ["Levitate"], + "teraTypes": ["Steel"] + } + ] + }, + "kyogre": { + "level": 69, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Hydro Pump", "Ice Beam", "Thunder", "Water Spout"], + "abilities": ["Drizzle"], + "teraTypes": ["Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Ice Beam", "Origin Pulse", "Thunder"], + "abilities": ["Drizzle"], + "teraTypes": ["Dragon", "Electric", "Steel", "Water"] + } + ] + }, + "groudon": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Heat Crash", "Precipice Blades", "Protect", "Stone Edge", "Swords Dance"], + "abilities": ["Drought"], + "teraTypes": ["Fire"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Earthquake", "Heat Crash", "High Horsepower", "Lava Plume", "Protect", "Stealth Rock", "Stone Edge", "Thunder Wave"], + "abilities": ["Drought"], + "teraTypes": ["Fire"] + } + ] + }, + "rayquaza": { + "level": 73, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Dragon Ascent", "Dragon Dance", "Earthquake", "Extreme Speed"], + "abilities": ["Air Lock"], + "teraTypes": ["Normal"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Dragon Ascent", "Protect", "Scale Shot", "Swords Dance"], + "abilities": ["Air Lock"], + "teraTypes": ["Flying", "Steel"] + }, + { + "role": "Fast Attacker", + "movepool": ["Draco Meteor", "Dragon Ascent", "Earth Power", "Fire Blast", "Protect"], + "abilities": ["Air Lock"], + "teraTypes": ["Fire", "Flying", "Ground"] + } + ] + }, + "jirachi": { + "level": 80, + "sets": [ + { + "role": "Imprisoner", + "movepool": ["Imprison", "Iron Head", "Protect", "Wish"], + "abilities": ["Serene Grace"], + "teraTypes": ["Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Body Slam", "Drain Punch", "Future Sight", "Iron Head", "Protect", "U-turn", "Wish"], + "abilities": ["Serene Grace"], + "teraTypes": ["Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Baton Pass", "Cosmic Power", "Iron Head", "Life Dew", "Wish"], + "abilities": ["Serene Grace"], + "teraTypes": ["Water"] + } + ] + }, + "deoxys": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Extreme Speed", "Knock Off", "Protect", "Psycho Boost", "Superpower"], + "abilities": ["Pressure"], + "teraTypes": ["Dark", "Fighting", "Stellar"] + } + ] + }, + "deoxysattack": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Extreme Speed", "Knock Off", "Protect", "Psycho Boost", "Superpower"], + "abilities": ["Pressure"], + "teraTypes": ["Dark", "Fighting", "Stellar"] + } + ] + }, + "deoxysdefense": { + "level": 84, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Cosmic Power", "Night Shade", "Recover", "Stored Power"], + "abilities": ["Pressure"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Cosmic Power", "Night Shade", "Recover", "Spikes"], + "abilities": ["Pressure"], + "teraTypes": ["Steel"] + } + ] + }, + "deoxysspeed": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Knock Off", "Protect", "Psycho Boost", "Superpower", "Spikes", "Stealth Rock"], + "abilities": ["Pressure"], + "teraTypes": ["Dark", "Fighting"] + }, + { + "role": "Bulky Setup", + "movepool": ["Cosmic Power", "Drain Punch", "Recover", "Stored Power"], + "abilities": ["Pressure"], + "teraTypes": ["Fighting"] + } + ] + }, + "torterra": { + "level": 80, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Headlong Rush", "Protect", "Shell Smash", "Wood Hammer"], + "abilities": ["Overgrow"], + "teraTypes": ["Fire", "Steel"] + } + ] + }, + "infernape": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Grass Knot", "Heat Wave", "Knock Off", "Protect", "Stone Edge", "U-turn"], + "abilities": ["Blaze"], + "teraTypes": ["Dark", "Fighting", "Fire", "Grass"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Aura Sphere", "Focus Blast", "Heat Wave", "Nasty Plot", "Protect"], + "abilities": ["Blaze"], + "teraTypes": ["Fighting", "Fire", "Grass"] + } + ] + }, + "empoleon": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Flash Cannon", "Grass Knot", "Hydro Pump", "Ice Beam", "Protect", "Roost"], + "abilities": ["Competitive"], + "teraTypes": ["Grass"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Agility", "Flash Cannon", "Grass Knot", "Ice Beam", "Surf"], + "abilities": ["Competitive"], + "teraTypes": ["Grass"] + } + ] + }, + "staraptor": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Close Combat", "Double-Edge", "Protect"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Flying"] + }, + { + "role": "Choice Item user", + "movepool": ["Brave Bird", "Close Combat", "Double-Edge", "U-turn"], + "abilities": ["Intimidate"], + "teraTypes": ["Fighting", "Flying"] + } + ] + }, + "kricketune": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bug Bite", "Knock Off", "Perish Song", "Protect", "Pounce", "Sticky Web", "Struggle Bug", "Taunt"], + "abilities": ["Technician"], + "teraTypes": ["Dragon", "Steel"] + } + ] + }, + "luxray": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Crunch", "Ice Fang", "Play Rough", "Protect", "Snarl", "Throat Chop", "Volt Switch", "Wild Charge"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark", "Fairy", "Flying"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Crunch", "Facade", "Protect", "Throat Chop", "Trailblaze", "Wild Charge"], + "abilities": ["Guts"], + "teraTypes": ["Normal"] + } + ] + }, + "rampardos": { + "level": 87, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Fire Punch", "Head Smash", "Rock Slide", "Zen Headbutt"], + "abilities": ["Sheer Force"], + "teraTypes": ["Rock"] + }, + { + "role": "Wallbreaker", + "movepool": ["Fire Punch", "Head Smash", "Protect", "Rock Slide", "Zen Headbutt"], + "abilities": ["Sheer Force"], + "teraTypes": ["Rock"] + } + ] + }, + "bastiodon": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Foul Play", "Iron Defense", "Protect", "Rest"], + "abilities": ["Soundproof"], + "teraTypes": ["Fighting"] + } + ] + }, + "vespiquen": { + "level": 100, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Air Slash", "Defend Order", "Protect", "Roost"], + "abilities": ["Pressure", "Unnerve"], + "teraTypes": ["Poison", "Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Air Slash", "Hurricane", "Protect", "Roost", "Spikes", "U-turn"], + "abilities": ["Pressure", "Unnerve"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "pachirisu": { + "level": 95, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Encore", "Protect", "Super Fang", "U-turn"], + "abilities": ["Volt Absorb"], + "teraTypes": ["Flying"] + } + ] + }, + "floatzel": { + "level": 86, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Aqua Jet", "Flip Turn", "Ice Spinner", "Wave Crash"], + "abilities": ["Water Veil"], + "teraTypes": ["Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Aqua Jet", "Ice Spinner", "Protect", "Taunt", "Wave Crash"], + "abilities": ["Water Veil"], + "teraTypes": ["Water"] + } + ] + }, + "gastrodon": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Clear Smog", "Earth Power", "Ice Beam", "Muddy Water", "Protect", "Recover", "Sludge Bomb", "Spikes", "Surf"], + "abilities": ["Storm Drain"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "ambipom": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Double Hit", "Knock Off", "Protect", "Triple Axel"], + "abilities": ["Technician"], + "teraTypes": ["Ice"] + } + ] + }, + "drifblim": { + "level": 86, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Air Slash", "Calm Mind", "Shadow Ball", "Strength Sap"], + "abilities": ["Unburden"], + "teraTypes": ["Fairy", "Ghost"] + }, + { + "role": "Bulky Support", + "movepool": ["Air Slash", "Defog", "Shadow Ball", "Strength Sap", "Will-O-Wisp"], + "abilities": ["Aftermath"], + "teraTypes": ["Fairy"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Phantom Force", "Protect", "Shadow Ball", "Strength Sap"], + "abilities": ["Aftermath", "Unburden"], + "teraTypes": ["Fairy"] + } + ] + }, + "mismagius": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Draining Kiss", "Pain Split", "Perish Song", "Protect", "Shadow Ball", "Taunt", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Fairy"] + }, + { + "role": "Wallbreaker", + "movepool": ["Draining Kiss", "Mystical Fire", "Nasty Plot", "Protect", "Shadow Ball", "Thunderbolt", "Trick"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Fairy", "Fire"] + }, + { + "role": "Imprisoner", + "movepool": ["Draining Kiss", "Imprison", "Protect", "Shadow Ball", "Thunderbolt"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Fairy"] + } + ] + }, + "honchkrow": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Lash Out", "Protect", "Sucker Punch", "Thunder Wave"], + "abilities": ["Moxie"], + "teraTypes": ["Dark", "Flying"] + } + ] + }, + "skuntank": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Fire Blast", "Gunk Shot", "Knock Off", "Poison Gas", "Protect", "Sucker Punch", "Taunt"], + "abilities": ["Aftermath"], + "teraTypes": ["Dark", "Flying"] + } + ] + }, + "bronzong": { + "level": 87, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Iron Defense", "Iron Head", "Protect", "Psychic Noise", "Trick Room"], + "abilities": ["Levitate"], + "teraTypes": ["Fighting"] + } + ] + }, + "spiritomb": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Foul Play", "Pain Split", "Phantom Force", "Poltergeist", "Protect", "Shadow Sneak", "Trick Room", "Will-O-Wisp"], + "abilities": ["Infiltrator"], + "teraTypes": ["Ghost", "Poison", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Pain Split", "Phantom Force", "Protect"], + "abilities": ["Infiltrator"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "garchomp": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Earthquake", "Protect", "Scale Shot", "Swords Dance"], + "abilities": ["Rough Skin"], + "teraTypes": ["Ground", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Protect", "Scale Shot", "Stomping Tantrum", "Swords Dance"], + "abilities": ["Rough Skin"], + "teraTypes": ["Ground", "Steel"] + } + ] + }, + "lucario": { + "level": 85, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Bulk Up", "Close Combat", "Extreme Speed", "Meteor Mash", "Swords Dance"], + "abilities": ["Inner Focus"], + "teraTypes": ["Normal"] + }, + { + "role": "Bulky Setup", + "movepool": ["Aura Sphere", "Calm Mind", "Flash Cannon", "Protect"], + "abilities": ["Inner Focus"], + "teraTypes": ["Flying"] + }, + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Extreme Speed", "Flash Cannon", "Protect"], + "abilities": ["Inner Focus"], + "teraTypes": ["Normal"] + } + ] + }, + "hippowdon": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earthquake", "High Horsepower", "Slack Off", "Stealth Rock", "Stone Edge", "Whirlwind"], + "abilities": ["Sand Stream"], + "teraTypes": ["Dragon", "Rock", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Curse", "High Horsepower", "Slack Off", "Stone Edge"], + "abilities": ["Sand Stream"], + "teraTypes": ["Dragon", "Rock", "Steel"] + } + ] + }, + "toxicroak": { + "level": 85, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Gunk Shot", "Knock Off", "Protect"], + "abilities": ["Dry Skin"], + "teraTypes": ["Dark"] + } + ] + }, + "lumineon": { + "level": 93, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Alluring Voice", "Encore", "Hydro Pump", "Ice Beam", "Icy Wind", "Protect", "U-turn"], + "abilities": ["Storm Drain"], + "teraTypes": ["Fairy"] + } + ] + }, + "abomasnow": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Aurora Veil", "Blizzard", "Earth Power", "Ice Shard", "Wood Hammer"], + "abilities": ["Snow Warning"], + "teraTypes": ["Ice", "Water"] + } + ] + }, + "weavile": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Ice Shard", "Knock Off", "Low Kick", "Protect", "Swords Dance", "Triple Axel"], + "abilities": ["Pickpocket"], + "teraTypes": ["Dark", "Fighting", "Ice"] + } + ] + }, + "sneasler": { + "level": 76, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Dire Claw", "Throat Chop", "Protect", "U-turn"], + "abilities": ["Poison Touch"], + "teraTypes": ["Dark", "Fighting"] + } + ] + }, + "magnezone": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Discharge", "Flash Cannon", "Protect", "Thunderbolt", "Volt Switch"], + "abilities": ["Analytic", "Magnet Pull"], + "teraTypes": ["Electric", "Fighting", "Flying", "Water"] + }, + { + "role": "AV Pivot", + "movepool": ["Body Press", "Discharge", "Flash Cannon", "Thunderbolt", "Volt Switch"], + "abilities": ["Analytic", "Magnet Pull"], + "teraTypes": ["Flying", "Water"] + } + ] + }, + "rhyperior": { + "level": 82, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["High Horsepower", "Protect", "Rock Polish", "Rock Slide"], + "abilities": ["Solid Rock"], + "teraTypes": ["Dragon", "Flying", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Dragon Tail", "Earthquake", "Heat Crash", "High Horsepower", "Ice Punch", "Megahorn", "Protect", "Stone Edge"], + "abilities": ["Solid Rock"], + "teraTypes": ["Dragon", "Flying", "Ground"] + } + ] + }, + "electivire": { + "level": 84, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Cross Chop", "Discharge", "Flamethrower", "Ice Punch", "Knock Off", "Protect", "Volt Switch", "Wild Charge"], + "abilities": ["Motor Drive"], + "teraTypes": ["Dark", "Fighting", "Flying"] + } + ] + }, + "magmortar": { + "level": 86, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Fire Blast", "Focus Blast", "Lava Plume", "Scorching Sands", "Thunderbolt"], + "abilities": ["Flame Body"], + "teraTypes": ["Electric", "Fire", "Fighting", "Grass"] + }, + { + "role": "Fast Attacker", + "movepool": ["Fire Blast", "Focus Blast", "Knock Off", "Lava Plume", "Protect", "Scorching Sands", "Thunderbolt"], + "abilities": ["Flame Body"], + "teraTypes": ["Electric", "Fire", "Fighting", "Grass"] + } + ] + }, + "yanmega": { + "level": 84, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Air Slash", "Bug Buzz", "Giga Drain", "U-turn"], + "abilities": ["Tinted Lens"], + "teraTypes": ["Bug"] + }, + { + "role": "Tera Blast user", + "movepool": ["Air Slash", "Bug Buzz", "Protect", "Tera Blast"], + "abilities": ["Speed Boost"], + "teraTypes": ["Ground"] + } + ] + }, + "leafeon": { + "level": 89, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Double-Edge", "Knock Off", "Leaf Blade", "Protect", "Swords Dance"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Dark", "Normal"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Knock Off", "Leaf Blade", "Leech Seed", "Protect"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Poison", "Steel", "Water"] + } + ] + }, + "glaceon": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Blizzard", "Freeze-Dry", "Mud Shot", "Protect"], + "abilities": ["Ice Body"], + "teraTypes": ["Ground"] + }, + { + "role": "Bulky Setup", + "movepool": ["Blizzard", "Calm Mind", "Freeze-Dry", "Mud Shot"], + "abilities": ["Ice Body"], + "teraTypes": ["Ground"] + }, + { + "role": "Fast Attacker", + "movepool": ["Calm Mind", "Freeze-Dry", "Protect", "Roar", "Wish"], + "abilities": ["Ice Body"], + "teraTypes": ["Water"] + } + ] + }, + "gliscor": { + "level": 81, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Dual Wingbeat", "High Horsepower", "Protect", "Swords Dance"], + "abilities": ["Poison Heal"], + "teraTypes": ["Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Facade", "High Horsepower", "Protect", "Swords Dance"], + "abilities": ["Poison Heal"], + "teraTypes": ["Normal"] + }, + { + "role": "Bulky Attacker", + "movepool": ["High Horsepower", "Knock Off", "Protect", "Spikes", "Stealth Rock"], + "abilities": ["Poison Heal"], + "teraTypes": ["Water"] + } + ] + }, + "mamoswine": { + "level": 82, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Earthquake", "High Horsepower", "Ice Shard", "Icicle Crash"], + "abilities": ["Thick Fat"], + "teraTypes": ["Ground", "Ice"] + }, + { + "role": "Wallbreaker", + "movepool": ["High Horsepower", "Ice Shard", "Icicle Crash", "Protect"], + "abilities": ["Thick Fat"], + "teraTypes": ["Ground", "Ice", "Water"] + } + ] + }, + "porygonz": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Ice Beam", "Protect", "Recover", "Shadow Ball", "Thunderbolt", "Tri Attack"], + "abilities": ["Adaptability", "Download"], + "teraTypes": ["Electric", "Ghost"] + }, + { + "role": "Tera Blast user", + "movepool": ["Nasty Plot", "Protect", "Shadow Ball", "Tera Blast"], + "abilities": ["Adaptability"], + "teraTypes": ["Fairy", "Fighting"] + }, + { + "role": "Wallbreaker", + "movepool": ["Shadow Ball", "Swift", "Tri Attack", "Trick"], + "abilities": ["Adaptability"], + "teraTypes": ["Ghost"] + } + ] + }, + "gallade": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Night Slash", "Protect", "Psycho Cut", "Sacred Sword", "Swords Dance"], + "abilities": ["Sharpness"], + "teraTypes": ["Dark", "Fighting", "Psychic"] + }, + { + "role": "Choice Item user", + "movepool": ["Night Slash", "Psycho Cut", "Sacred Sword", "Trick"], + "abilities": ["Sharpness"], + "teraTypes": ["Dark", "Fighting", "Psychic"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Psycho Cut", "Sacred Sword"], + "abilities": ["Sharpness"], + "teraTypes": ["Steel"] + } + ] + }, + "probopass": { + "level": 90, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Flash Cannon", "Iron Defense", "Protect", "Rest", "Thunder Wave"], + "abilities": ["Magnet Pull"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Iron Defense", "Power Gem", "Protect", "Rest", "Thunder Wave"], + "abilities": ["Magnet Pull"], + "teraTypes": ["Fighting"] + } + ] + }, + "dusknoir": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Leech Life", "Pain Split", "Phantom Force", "Poltergeist", "Protect", "Shadow Sneak", "Trick Room", "Will-O-Wisp"], + "abilities": ["Pressure", "Frisk"], + "teraTypes": ["Dark"] + }, + { + "role": "Imprisoner", + "movepool": ["Leech Life", "Imprison", "Phantom Force", "Protect"], + "abilities": ["Pressure", "Frisk"], + "teraTypes": ["Dark"] + } + ] + }, + "froslass": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Icy Wind", "Poltergeist", "Protect", "Spikes", "Taunt", "Thunder Wave", "Triple Axel", "Will-O-Wisp"], + "abilities": ["Cursed Body"], + "teraTypes": ["Dark", "Water"] + } + ] + }, + "rotom": { + "level": 89, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Nasty Plot", "Protect", "Shadow Ball", "Thunderbolt", "Volt Switch", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Electric"] + } + ] + }, + "rotomwash": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Discharge", "Hydro Pump", "Nasty Plot", "Pain Split", "Protect", "Thunderbolt", "Volt Switch", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Electric"] + } + ] + }, + "rotomheat": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Nasty Plot", "Overheat", "Pain Split", "Protect", "Thunderbolt", "Volt Switch", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Steel"] + } + ] + }, + "rotomfrost": { + "level": 84, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Blizzard", "Nasty Plot", "Protect", "Thunderbolt"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Ice"] + } + ] + }, + "rotomfan": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Air Slash", "Discharge", "Nasty Plot", "Pain Split", "Protect", "Thunderbolt", "Volt Switch", "WIll-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Steel"] + } + ] + }, + "rotommow": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Discharge", "Leaf Storm", "Nasty Plot", "Pain Split", "Protect", "Thunderbolt", "Volt Switch", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Poison", "Steel"] + } + ] + }, + "uxie": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Encore", "Knock Off", "Mystical Power", "Protect", "Stealth Rock", "Thunder Wave", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Poison", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Draining Kiss", "Imprison", "Knock Off", "Mystical Power", "Protect"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Fairy"] + } + ] + }, + "mesprit": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Drain Punch", "Encore", "Future Sight", "Ice Beam", "Knock Off", "Protect", "Psychic", "Psychic Noise", "Stealth Rock", "Thunderbolt", "Thunder Wave", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Draining Kiss", "Imprison", "Knock Off", "Mystical Power", "Protect"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Fairy"] + } + ] + }, + "azelf": { + "level": 83, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Fire Blast", "Nasty Plot", "Protect", "Psychic", "Psyshock"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Fire"] + }, + { + "role": "Wallbreaker", + "movepool": ["Fire Blast", "Knock Off", "Play Rough", "Protect", "Psychic", "Psyshock", "Thunderbolt", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Electric", "Fairy", "Fire"] + } + ] + }, + "dialga": { + "level": 74, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Draco Meteor", "Fire Blast", "Heavy Slam", "Protect", "Stealth Rock", "Thunder Wave"], + "abilities": ["Pressure"], + "teraTypes": ["Dragon", "Fire", "Flying", "Steel"] + } + ] + }, + "dialgaorigin": { + "level": 74, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Draco Meteor", "Fire Blast", "Flash Cannon", "Protect", "Stealth Rock", "Thunder Wave"], + "abilities": ["Pressure"], + "teraTypes": ["Dragon", "Fire", "Flying", "Steel"] + } + ] + }, + "palkia": { + "level": 74, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Draco Meteor", "Fire Blast", "Hydro Pump", "Protect", "Spacial Rend", "Surf", "Thunder Wave"], + "abilities": ["Pressure"], + "teraTypes": ["Dragon", "Fire", "Water"] + } + ] + }, + "palkiaorigin": { + "level": 72, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Draco Meteor", "Hydro Pump", "Protect", "Spacial Rend", "Surf", "Thunder Wave"], + "abilities": ["Pressure"], + "teraTypes": ["Dragon", "Steel", "Water"] + } + ] + }, + "heatran": { + "level": 79, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Earth Power", "Flash Cannon", "Lava Plume", "Magma Storm", "Protect", "Stealth Rock"], + "abilities": ["Flash Fire"], + "teraTypes": ["Flying", "Grass"] + }, + { + "role": "Bulky Support", + "movepool": ["Earth Power", "Flash Cannon", "Lava Plume", "Protect"], + "abilities": ["Flash Fire"], + "teraTypes": ["Flying", "Grass"] + } + ] + }, + "regigigas": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Slam", "Knock Off", "Protect", "Substitute"], + "abilities": ["Slow Start"], + "teraTypes": ["Ghost"] + } + ] + }, + "giratina": { + "level": 76, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Aura Sphere", "Calm Mind", "Protect", "Shadow Ball"], + "abilities": ["Pressure"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Support", + "movepool": ["Breaking Swipe", "Defog", "Rest", "Shadow Ball", "Thunder Wave", "Will-O-Wisp"], + "abilities": ["Pressure"], + "teraTypes": ["Fairy"] + } + ] + }, + "giratinaorigin": { + "level": 74, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Defog", "Draco Meteor", "Protect", "Shadow Force", "Shadow Sneak", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Dragon", "Fairy", "Ghost", "Poison", "Steel"] + } + ] + }, + "cresselia": { + "level": 80, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Moonblast", "Moonlight", "Psychic", "Thunderbolt"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Fairy", "Steel"] + } + ] + }, + "phione": { + "level": 90, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Ice Beam", "Protect", "Scald", "Take Heart"], + "abilities": ["Hydration"], + "teraTypes": ["Dragon", "Grass", "Steel"] + } + ] + }, + "manaphy": { + "level": 78, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Ice Beam", "Protect", "Scald", "Tail Glow"], + "abilities": ["Hydration"], + "teraTypes": ["Grass", "Steel", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Ice Beam", "Protect", "Scald", "Take Heart"], + "abilities": ["Hydration"], + "teraTypes": ["Grass", "Steel", "Water"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Energy Ball", "Ice Beam", "Scald", "Tail Glow"], + "abilities": ["Hydration"], + "teraTypes": ["Grass", "Steel", "Water"] + } + ] + }, + "darkrai": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dark Pulse", "Focus Blast", "Nasty Plot", "Protect", "Sludge Bomb"], + "abilities": ["Bad Dreams"], + "teraTypes": ["Poison"] + } + ] + }, + "shaymin": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Air Slash", "Earth Power", "Protect", "Seed Flare", "Synthesis"], + "abilities": ["Natural Cure"], + "teraTypes": ["Grass", "Ground", "Steel"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Air Slash", "Leech Seed", "Protect", "Seed Flare"], + "abilities": ["Natural Cure"], + "teraTypes": ["Steel"] + } + ] + }, + "shayminsky": { + "level": 76, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Air Slash", "Leech Seed", "Protect", "Seed Flare"], + "abilities": ["Serene Grace"], + "teraTypes": ["Steel"] + } + ] + }, + "arceus": { + "level": 71, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Extreme Speed", "Flare Blitz", "Phantom Force", "Swords Dance"], + "abilities": ["Multitype"], + "teraTypes": ["Ghost", "Normal"] + }, + { + "role": "Bulky Setup", + "movepool": ["Extreme Speed", "Phantom Force", "Recover", "Swords Dance"], + "abilities": ["Multitype"], + "teraTypes": ["Ghost", "Normal"] + } + ] + }, + "arceusbug": { + "level": 73, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Fire Blast", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Ground"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Flare Blitz", "Stone Edge", "Swords Dance", "X-Scissor"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Rock"] + } + ] + }, + "arceusdark": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Judgment", "Recover", "Sludge Bomb"], + "abilities": ["Multitype"], + "teraTypes": ["Poison"] + } + ] + }, + "arceusdragon": { + "level": 73, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover", "Sludge Bomb"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Poison"] + } + ] + }, + "arceuselectric": { + "level": 70, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Ice Beam", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Electric", "Ice"] + } + ] + }, + "arceusfairy": { + "level": 70, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Ground", "Poison", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Judgment", "Protect", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "arceusfighting": { + "level": 70, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Iron Defense", "Recover", "Snarl"], + "abilities": ["Multitype"], + "teraTypes": ["Steel"] + } + ] + }, + "arceusfire": { + "level": 72, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Extreme Speed", "Flare Blitz", "Liquidation", "Protect", "Recover", "Swords Dance"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Normal", "Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Energy Ball", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Grass", "Ground"] + } + ] + }, + "arceusflying": { + "level": 70, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Fire Blast", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Ground", "Steel"] + } + ] + }, + "arceusghost": { + "level": 69, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Brick Break", "Extreme Speed", "Phantom Force", "Swords Dance"], + "abilities": ["Multitype"], + "teraTypes": ["Fighting", "Normal"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Fighting"] + } + ] + }, + "arceusgrass": { + "level": 72, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Ice Beam", "Earth Power", "Fire Blast", "Judgment", "Recover", "Will-O-Wisp"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Ground", "Steel"] + } + ] + }, + "arceusground": { + "level": 70, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Fire Blast", "Ice Beam", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Dragon"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Earthquake", "Recover", "Stone Edge", "Swords Dance"], + "abilities": ["Multitype"], + "teraTypes": ["Ground", "Rock"] + } + ] + }, + "arceusice": { + "level": 72, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Judgment", "Recover", "Thunderbolt"], + "abilities": ["Multitype"], + "teraTypes": ["Electric"] + } + ] + }, + "arceuspoison": { + "level": 71, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Extreme Speed", "Flare Blitz", "Gunk Shot", "Liquidation", "Recover", "Swords Dance"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Normal", "Poison", "Water"] + } + ] + }, + "arceuspsychic": { + "level": 69, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Cosmic Power", "Recover", "Stored Power"], + "abilities": ["Multitype"], + "teraTypes": ["Fighting", "Steel"] + } + ] + }, + "arceusrock": { + "level": 73, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Fire Blast", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Ground", "Dragon"] + } + ] + }, + "arceussteel": { + "level": 70, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Dragon", "Ghost"] + } + ] + }, + "arceuswater": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Ice Beam", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Dragon", "Steel"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Extreme Speed", "Flare Blitz", "Liquidation", "Swords Dance"], + "abilities": ["Multitype"], + "teraTypes": ["Fire", "Normal"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Judgment", "Protect", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "serperior": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dragon Pulse", "Glare", "Leaf Storm", "Leech Seed", "Protect", "Synthesis"], + "abilities": ["Contrary"], + "teraTypes": ["Dragon", "Grass"] + }, + { + "role": "Tera Blast user", + "movepool": ["Leaf Storm", "Protect", "Synthesis", "Tera Blast"], + "abilities": ["Contrary"], + "teraTypes": ["Fire", "Rock"] + } + ] + }, + "emboar": { + "level": 85, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Close Combat", "Flare Blitz", "Head Smash", "Knock Off", "Wild Charge"], + "abilities": ["Reckless"], + "teraTypes": ["Dark", "Electric", "Fighting", "Fire", "Rock"] + }, + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Drain Punch", "Flare Blitz", "Protect"], + "abilities": ["Reckless"], + "teraTypes": ["Water"] + } + ] + }, + "samurott": { + "level": 89, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aqua Jet", "Encore", "Grass Knot", "Hydro Pump", "Ice Beam", "Knock Off", "Megahorn", "Protect", "Sacred Sword"], + "abilities": ["Torrent"], + "teraTypes": ["Dark", "Grass", "Steel"] + }, + { + "role": "AV Pivot", + "movepool": ["Flip Turn", "Grass Knot", "Hydro Pump", "Ice Beam", "Knock Off", "Megahorn", "Sacred Sword"], + "abilities": ["Torrent"], + "teraTypes": ["Dark", "Grass", "Steel"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Knock Off", "Liquidation", "Megahorn", "Protect", "Sacred Sword", "Swords Dance"], + "abilities": ["Torrent"], + "teraTypes": ["Dark", "Fighting", "Steel"] + } + ] + }, + "samurotthisui": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aqua Jet", "Ceaseless Edge", "Protect", "Razor Shell", "Sacred Sword", "Sucker Punch"], + "abilities": ["Sharpness"], + "teraTypes": ["Dark", "Fighting", "Poison", "Water"] + } + ] + }, + "zebstrika": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["High Horsepower", "Overheat", "Protect", "Wild Charge"], + "abilities": ["Sap Sipper"], + "teraTypes": ["Ground"] + }, + { + "role": "Fast Attacker", + "movepool": ["High Horsepower", "Overheat", "Protect", "Thunderbolt"], + "abilities": ["Lightning Rod"], + "teraTypes": ["Flying"] + } + ] + }, + "excadrill": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earthquake", "High Horsepower", "Iron Head", "Protect", "Rapid Spin"], + "abilities": ["Mold Breaker", "Sand Rush"], + "teraTypes": ["Flying", "Ground", "Water"] + }, + { + "role": "Setup Sweeper", + "movepool": ["High Horsepower", "Iron Head", "Protect", "Swords Dance"], + "abilities": ["Mold Breaker", "Sand Rush"], + "teraTypes": ["Flying", "Ground", "Water"] + } + ] + }, + "conkeldurr": { + "level": 81, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Knock Off", "Mach Punch", "Protect"], + "abilities": ["Guts"], + "teraTypes": ["Dark", "Fighting"] + }, + { + "role": "AV Pivot", + "movepool": ["Drain Punch", "Ice Punch", "Knock Off", "Mach Punch"], + "abilities": ["Iron Fist"], + "teraTypes": ["Dark", "Fighting", "Steel"] + } + ] + }, + "leavanny": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Knock Off", "Leaf Blade", "Lunge", "Protect", "Sticky Web"], + "abilities": ["Chlorophyll", "Swarm"], + "teraTypes": ["Rock", "Water"] + } + ] + }, + "whimsicott": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Giga Drain", "Moonblast", "Protect", "Stun Spore"], + "abilities": ["Prankster"], + "teraTypes": ["Poison", "Steel"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Encore", "Leech Seed", "Moonblast", "Protect", "Substitute"], + "abilities": ["Prankster"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "lilligant": { + "level": 88, + "sets": [ + { + "role": "Tera Blast user", + "movepool": ["Energy Ball", "Protect", "Quiver Dance", "Tera Blast"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Fire", "Rock"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Alluring Voice", "Energy Ball", "Protect", "Quiver Dance"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Fairy", "Water"] + } + ] + }, + "lilliganthisui": { + "level": 84, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Close Combat", "Ice Spinner", "Leaf Blade", "Petal Blizzard", "Protect", "Victory Dance"], + "abilities": ["Hustle"], + "teraTypes": ["Fighting", "Steel"] + } + ] + }, + "basculinbluestriped": { + "level": 87, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Aqua Jet", "Flip Turn", "Protect", "Surf", "Taunt", "Wave Crash"], + "abilities": ["Adaptability"], + "teraTypes": ["Water"] + }, + { + "role": "Wallbreaker", + "movepool": ["Aqua Jet", "Flip Turn", "Head Smash", "Protect", "Taunt", "Wave Crash"], + "abilities": ["Rock Head"], + "teraTypes": ["Rock"] + } + ] + }, + "basculinwhitestriped": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Aqua Jet", "Flip Turn", "Protect", "Tail Whip", "Wave Crash"], + "abilities": ["Adaptability"], + "teraTypes": ["Water"] + } + ] + }, + "basculegion": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Aqua Jet", "Flip Turn", "Phantom Force", "Protect", "Wave Crash"], + "abilities": ["Adaptability"], + "teraTypes": ["Water"] + } + ] + }, + "basculegionf": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Flip Turn", "Phantom Force", "Protect", "Shadow Ball", "Surf", "Wave Crash"], + "abilities": ["Adaptability"], + "teraTypes": ["Water"] + } + ] + }, + "krookodile": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Earthquake", "Gunk Shot", "High Horsepower", "Knock Off", "Protect", "Stealth Rock", "Stone Edge"], + "abilities": ["Intimidate"], + "teraTypes": ["Dark", "Ground", "Poison"] + } + ] + }, + "scrafty": { + "level": 84, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Drain Punch", "Knock Off", "Protect"], + "abilities": ["Intimidate"], + "teraTypes": ["Poison"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Drain Punch", "Dragon Dance", "Knock Off", "Protect"], + "abilities": ["Intimidate"], + "teraTypes": ["Poison"] + } + ] + }, + "zoroark": { + "level": 84, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Dark Pulse", "Flamethrower", "Focus Blast", "Protect", "Sludge Bomb"], + "abilities": ["Illusion"], + "teraTypes": ["Poison"] + }, + { + "role": "Fast Attacker", + "movepool": ["Encore", "Flamethrower", "Focus Blast", "Knock Off", "Protect", "Sludge Bomb", "U-turn"], + "abilities": ["Illusion"], + "teraTypes": ["Poison"] + }, + { + "role": "Imprisoner", + "movepool": ["Encore", "Imprison", "Knock Off", "Protect"], + "abilities": ["Prankster"], + "teraTypes": ["Poison"] + } + ] + }, + "zoroarkhisui": { + "level": 80, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Bitter Malice", "Flamethrower", "Focus Blast", "Hyper Voice", "Nasty Plot", "Protect"], + "abilities": ["Illusion"], + "teraTypes": ["Normal"] + }, + { + "role": "Imprisoner", + "movepool": ["Bitter Malice", "Imprison", "Protect", "Tera Blast"], + "abilities": ["Illusion"], + "teraTypes": ["Fairy", "Fighting"] + } + ] + }, + "cinccino": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bullet Seed", "Protect", "Tail Slap", "Tidy Up", "Triple Axel"], + "abilities": ["Technician"], + "teraTypes": ["Grass", "Ice", "Normal"] + } + ] + }, + "gothitelle": { + "level": 90, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Calm Mind", "Dark Pulse", "Focus Blast", "Future Sight", "Protect", "Psychic Noise", "Taunt", "Thunder Wave"], + "abilities": ["Competitive"], + "teraTypes": ["Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Focus Blast", "Imprison", "Protect", "Psychic Noise"], + "abilities": ["Shadow Tag"], + "teraTypes": ["Fighting", "Steel"] + } + ] + }, + "reuniclus": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Calm Mind", "Focus Blast", "Future Sight", "Protect", "Psychic", "Recover", "Shadow Ball", "Trick Room"], + "abilities": ["Magic Guard"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Support", + "movepool": ["Calm Mind", "Focus Blast", "Future Sight", "Protect", "Psychic", "Recover", "Shadow Ball", "Trick Room"], + "abilities": ["Magic Guard"], + "teraTypes": ["Fighting"] + } + ] + }, + "swanna": { + "level": 89, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Defog", "Hydro Pump", "Protect", "Roost"], + "abilities": ["Hydration"], + "teraTypes": ["Ground"] + } + ] + }, + "sawsbuck": { + "level": 89, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Body Slam", "Double-Edge", "High Horsepower", "Horn Leech", "Protect", "Swords Dance"], + "abilities": ["Sap Sipper", "Serene Grace"], + "teraTypes": ["Ground", "Grass", "Normal"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Double-Edge", "Petal Blizzard", "Protect", "Swords Dance"], + "abilities": ["Sap Sipper"], + "teraTypes": ["Ground", "Normal"] + } + ] + }, + "amoonguss": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Clear Smog", "Giga Drain", "Protect", "Sludge Bomb", "Stomping Tantrum", "Stun Spore", "Synthesis"], + "abilities": ["Regenerator"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "AV Pivot", + "movepool": ["Clear Smog", "Giga Drain", "Sludge Bomb", "Stomping Tantrum"], + "abilities": ["Regenerator"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "alomomola": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Flip Turn", "Protect", "Scald", "Wish"], + "abilities": ["Regenerator"], + "teraTypes": ["Dragon", "Steel"] + } + ] + }, + "galvantula": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bug Buzz", "Giga Drain", "Protect", "Sticky Web", "Thunder"], + "abilities": ["Compound Eyes"], + "teraTypes": ["Electric"] + } + ] + }, + "eelektross": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Close Combat", "Dragon Tail", "Flamethrower", "Giga Drain", "Knock Off", "Protect", "Thunderbolt", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Fire", "Poison", "Steel"] + }, + { + "role": "AV Pivot", + "movepool": ["Close Combat", "Discharge", "Dragon Tail", "Flamethrower", "Giga Drain", "Knock Off", "Thunderbolt", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Fire", "Poison", "Steel"] + } + ] + }, + "chandelure": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Calm Mind", "Energy Ball", "Fire Blast", "Heat Wave", "Pain Split", "Protect", "Shadow Ball", "Will-O-Wisp"], + "abilities": ["Flash Fire"], + "teraTypes": ["Fire", "Ghost", "Grass"] + } + ] + }, + "haxorus": { + "level": 80, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Iron Head", "Protect", "Scale Shot", "Swords Dance"], + "abilities": ["Unnerve"], + "teraTypes": ["Dragon", "Fighting", "Steel"] + } + ] + }, + "beartic": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aqua Jet", "Close Combat", "Icicle Crash", "Protect"], + "abilities": ["Slush Rush", "Swift Swim"], + "teraTypes": ["Fighting", "Water"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Icicle Crash", "Protect", "Snowscape"], + "abilities": ["Slush Rush"], + "teraTypes": ["Fighting", "Ice"] + } + ] + }, + "cryogonal": { + "level": 89, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Acid Armor", "Flash Cannon", "Freeze-Dry", "Haze", "Protect", "Rapid Spin", "Recover"], + "abilities": ["Levitate"], + "teraTypes": ["Poison", "Steel", "Water"] + } + ] + }, + "mienshao": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Feint", "Knock Off", "Poison Jab", "Protect", "Stone Edge", "Swords Dance", "U-turn"], + "abilities": ["Regenerator"], + "teraTypes": ["Dark", "Fighting", "Poison", "Rock"] + }, + { + "role": "AV Pivot", + "movepool": ["Close Combat", "Knock Off", "Poison Jab", "Stone Edge", "U-turn"], + "abilities": ["Regenerator"], + "teraTypes": ["Dark", "Poison", "Rock", "Steel"] + }, + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Knock Off", "Stone Edge", "U-turn"], + "abilities": ["Regenerator"], + "teraTypes": ["Dark", "Fighting", "Rock"] + } + ] + }, + "golurk": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Dynamic Punch", "Earthquake", "High Horsepower", "Poltergeist", "Protect"], + "abilities": ["No Guard"], + "teraTypes": ["Fighting"] + }, + { + "role": "AV Pivot", + "movepool": ["Dynamic Punch", "Earthquake", "High Horsepower", "Poltergeist", "Stone Edge"], + "abilities": ["No Guard"], + "teraTypes": ["Fighting"] + } + ] + }, + "braviary": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Brave Bird", "Close Combat", "Defog", "Protect", "Roost"], + "abilities": ["Defiant"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Setup", + "movepool": ["Acrobatics", "Bulk Up", "Close Combat", "Roost"], + "abilities": ["Defiant"], + "teraTypes": ["Fighting"] + } + ] + }, + "braviaryhisui": { + "level": 84, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Heat Wave", "Hurricane", "Protect", "Psychic", "Roost"], + "abilities": ["Sheer Force"], + "teraTypes": ["Fire", "Flying", "Psychic"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Calm Mind", "Defog", "Esper Wing", "Hurricane", "Protect", "Roost"], + "abilities": ["Tinted Lens"], + "teraTypes": ["Psychic", "Steel"] + } + ] + }, + "mandibuzz": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Brave Bird", "Foul Play", "Knock Off", "Protect", "Roost"], + "abilities": ["Overcoat"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Defog", "Foul Play", "Protect", "Roost", "Taunt", "U-turn", "Whirlwind"], + "abilities": ["Overcoat"], + "teraTypes": ["Steel"] + } + ] + }, + "hydreigon": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dark Pulse", "Draco Meteor", "Fire Blast", "Flash Cannon", "Nasty Plot", "Protect"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Dragon", "Fire", "Poison", "Steel"] + }, + { + "role": "Choice Item user", + "movepool": ["Dark Pulse", "Draco Meteor", "Fire Blast", "Flash Cannon", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Dark", "Dragon", "Fire", "Steel"] + } + ] + }, + "volcarona": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Bug Buzz", "Fiery Dance", "Fire Blast", "Protect", "Quiver Dance"], + "abilities": ["Flame Body", "Swarm"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Bug Buzz", "Heat Wave", "Protect", "Quiver Dance"], + "abilities": ["Flame Body"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "cobalion": { + "level": 79, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Iron Defense", "Iron Head", "Protect", "Stealth Rock", "Thunder Wave"], + "abilities": ["Justified"], + "teraTypes": ["Ghost", "Water"] + } + ] + }, + "terrakion": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Protect", "Stone Edge", "Swords Dance"], + "abilities": ["Justified"], + "teraTypes": ["Fighting", "Grass"] + }, + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "High Horsepower", "Protect", "Rock Slide", "Sacred Sword", "Stone Edge"], + "abilities": ["Justified"], + "teraTypes": ["Fighting", "Rock"] + } + ] + }, + "virizion": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Giga Drain", "Leaf Storm", "Protect", "Sacred Sword", "Stone Edge"], + "abilities": ["Justified"], + "teraTypes": ["Rock"] + } + ] + }, + "tornadus": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Acrobatics", "Bleakwind Storm", "Focus Blast", "Grass Knot", "Knock Off", "Protect"], + "abilities": ["Defiant"], + "teraTypes": ["Fighting"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Bleakwind Storm", "Focus Blast", "Grass Knot", "Nasty Plot", "Protect"], + "abilities": ["Prankster"], + "teraTypes": ["Fighting", "Flying", "Grass"] + } + ] + }, + "tornadustherian": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bleakwind Storm", "Focus Blast", "Grass Knot", "Knock Off", "Protect"], + "abilities": ["Regenerator"], + "teraTypes": ["Fighting"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Bleakwind Storm", "Focus Blast", "Grass Knot", "Nasty Plot", "Protect"], + "abilities": ["Prankster"], + "teraTypes": ["Fighting", "Flying", "Grass"] + } + ] + }, + "thundurus": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Acrobatics", "Grass Knot", "Knock Off", "Protect", "Taunt", "Thunderbolt", "Thunder Wave", "Wildbolt Storm"], + "abilities": ["Defiant", "Prankster"], + "teraTypes": ["Electric"] + }, + { + "role": "Tera Blast user", + "movepool": ["Nasty Plot", "Protect", "Tera Blast", "Wildbolt Storm"], + "abilities": ["Defiant"], + "teraTypes": ["Flying"] + } + ] + }, + "thundurustherian": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Grass Knot", "Protect", "Sludge Bomb", "Volt Switch", "Wildbolt Storm"], + "abilities": ["Volt Absorb"], + "teraTypes": ["Electric", "Grass", "Poison"] + }, + { + "role": "Tera Blast user", + "movepool": ["Nasty Plot", "Protect", "Tera Blast", "Wildbolt Storm"], + "abilities": ["Volt Absorb"], + "teraTypes": ["Flying"] + } + ] + }, + "reshiram": { + "level": 74, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Blue Flare", "Draco Meteor", "Earth Power", "Heat Wave", "Protect"], + "abilities": ["Turboblaze"], + "teraTypes": ["Fairy", "Fire", "Ground"] + } + ] + }, + "zekrom": { + "level": 72, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Bolt Strike", "Dragon Claw", "Dragon Dance", "Protect"], + "abilities": ["Teravolt"], + "teraTypes": ["Electric", "Fairy", "Grass"] + } + ] + }, + "landorus": { + "level": 75, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Nasty Plot", "Protect", "Sandsear Storm", "Sludge Bomb"], + "abilities": ["Sheer Force"], + "teraTypes": ["Poison", "Water"] + }, + { + "role": "Imprisoner", + "movepool": ["Earth Power", "Imprison", "Protect", "Rock Slide", "Sludge Bomb"], + "abilities": ["Sheer Force"], + "teraTypes": ["Poison", "Water"] + } + ] + }, + "landorustherian": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Earthquake", "Protect", "Stealth Rock", "Stone Edge", "Swords Dance", "U-turn"], + "abilities": ["Intimidate"], + "teraTypes": ["Water"] + }, + { + "role": "Imprisoner", + "movepool": ["Earthquake", "Imprison", "Protect", "Stealth Rock", "Stone Edge"], + "abilities": ["Intimidate"], + "teraTypes": ["Water"] + } + ] + }, + "kyurem": { + "level": 77, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Draco Meteor", "Earth Power", "Freeze-Dry", "Glaciate", "Protect"], + "abilities": ["Pressure"], + "teraTypes": ["Fairy", "Ground"] + }, + { + "role": "Fast Attacker", + "movepool": ["Earth Power", "Icicle Spear", "Scale Shot", "Protect"], + "abilities": ["Pressure"], + "teraTypes": ["Fairy", "Ground"] + }, + { + "role": "Imprisoner", + "movepool": ["Dragon Tail", "Freeze-Dry", "Imprison", "Protect"], + "abilities": ["Pressure"], + "teraTypes": ["Fairy"] + } + ] + }, + "kyuremwhite": { + "level": 72, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Draco Meteor", "Earth Power", "Fusion Flare", "Ice Beam", "Protect"], + "abilities": ["Turboblaze"], + "teraTypes": ["Dragon", "Fire", "Ground", "Ice"] + }, + { + "role": "Fast Attacker", + "movepool": ["Blizzard", "Earth Power", "Freeze-Dry", "Fusion Flare", "Protect"], + "abilities": ["Turboblaze"], + "teraTypes": ["Fire", "Ground", "Ice"] + } + ] + }, + "kyuremblack": { + "level": 75, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dragon Dance", "Icicle Spear", "Protect", "Scale Shot"], + "abilities": ["Teravolt"], + "teraTypes": ["Fairy", "Steel"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Dragon Dance", "Fusion Bolt", "Icicle Spear", "Protect"], + "abilities": ["Teravolt"], + "teraTypes": ["Electric"] + } + ] + }, + "keldeoresolute": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Calm Mind", "Flip Turn", "Hydro Pump", "Muddy Water", "Protect", "Secret Sword", "Surf", "Vacuum Wave"], + "abilities": ["Justified"], + "teraTypes": ["Fighting", "Steel", "Water"] + }, + { + "role": "Wallbreaker", + "movepool": ["Hydro Pump", "Muddy Water", "Protect", "Secret Sword", "Surf", "Vacuum Wave"], + "abilities": ["Justified"], + "teraTypes": ["Fighting", "Water"] + } + ] + }, + "meloetta": { + "level": 80, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Calm Mind", "Focus Blast", "Hyper Voice", "Protect", "Psychic", "U-turn"], + "abilities": ["Serene Grace"], + "teraTypes": ["Fairy", "Fighting", "Normal"] + } + ] + }, + "chesnaught": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Press", "Knock Off", "Spikes", "Spiky Shield", "Synthesis", "Wood Hammer"], + "abilities": ["Bulletproof"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Iron Defense", "Leech Seed", "Spiky Shield"], + "abilities": ["Bulletproof"], + "teraTypes": ["Steel"] + } + ] + }, + "delphox": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Fire Blast", "Focus Blast", "Future Sight", "Grass Knot", "Heat Wave", "Nasty Plot", "Protect", "Psychic"], + "abilities": ["Blaze"], + "teraTypes": ["Fairy", "Fighting", "Fire", "Grass"] + }, + { + "role": "Imprisoner", + "movepool": ["Heat Wave", "Imprison", "Protect", "Psychic"], + "abilities": ["Blaze"], + "teraTypes": ["Grass"] + } + ] + }, + "greninjabond": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dark Pulse", "Gunk Shot", "Hydro Pump", "Ice Beam", "Protect", "Spikes"], + "abilities": ["Battle Bond"], + "teraTypes": ["Dark", "Poison", "Water"] + } + ] + }, + "talonflame": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Defog", "Heat Wave", "Protect", "Roost"], + "abilities": ["Flame Body"], + "teraTypes": ["Dragon", "Ground"] + } + ] + }, + "vivillon": { + "level": 91, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Bug Buzz", "Hurricane", "Protect", "Quiver Dance"], + "abilities": ["Compound Eyes"], + "teraTypes": ["Flying", "Steel"] + }, + { + "role": "Tera Blast user", + "movepool": ["Hurricane", "Protect", "Quiver Dance", "Tera Blast"], + "abilities": ["Compound Eyes"], + "teraTypes": ["Ground"] + } + ] + }, + "pyroar": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Fire Blast", "Heat Wave", "Hyper Voice", "Protect", "Taunt", "Will-O-Wisp"], + "abilities": ["Unnerve"], + "teraTypes": ["Fire", "Normal", "Water"] + }, + { + "role": "Tera Blast user", + "movepool": ["Fire Blast", "Hyper Voice", "Protect", "Tera Blast"], + "abilities": ["Unnerve"], + "teraTypes": ["Grass"] + } + ] + }, + "florges": { + "level": 84, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Dazzling Gleam", "Moonblast", "Protect", "Synthesis", "Wish"], + "abilities": ["Flower Veil"], + "teraTypes": ["Steel"] + } + ] + }, + "gogoat": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Bulk Up", "High Horsepower", "Horn Leech", "Milk Drink", "Protect", "Roar"], + "abilities": ["Sap Sipper"], + "teraTypes": ["Ground", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["High Horsepower", "Horn Leech", "Leech Seed", "Protect"], + "abilities": ["Sap Sipper"], + "teraTypes": ["Ground", "Water"] + } + ] + }, + "meowstic": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Alluring Voice", "Light Screen", "Protect", "Psychic Noise", "Reflect", "Thunder Wave"], + "abilities": ["Prankster"], + "teraTypes": ["Steel"] + } + ] + }, + "meowsticf": { + "level": 89, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Alluring Voice", "Dark Pulse", "Future Sight", "Nasty Plot", "Protect", "Psychic", "Thunderbolt", "Thunder Wave"], + "abilities": ["Competitive"], + "teraTypes": ["Fairy"] + }, + { + "role": "Fast Attacker", + "movepool": ["Alluring Voice", "Dark Pulse", "Protect", "Psychic", "Thunderbolt"], + "abilities": ["Competitive"], + "teraTypes": ["Dark", "Electric", "Fairy"] + }, + { + "role": "Imprisoner", + "movepool": ["Alluring Voice", "Imprison", "Protect", "Psychic"], + "abilities": ["Competitive"], + "teraTypes": ["Fairy"] + } + ] + }, + "malamar": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Knock Off", "Protect", "Psycho Cut", "Superpower", "Trick Room"], + "abilities": ["Contrary"], + "teraTypes": ["Fighting"] + } + ] + }, + "dragalge": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Draco Meteor", "Dragon Tail", "Focus Blast", "Protect", "Sludge Bomb", "Sludge Wave"], + "abilities": ["Adaptability"], + "teraTypes": ["Dragon", "Poison"] + }, + { + "role": "Choice Item user", + "movepool": ["Draco Meteor", "Focus Blast", "Sludge Bomb", "Sludge Wave"], + "abilities": ["Adaptability"], + "teraTypes": ["Fighting"] + } + ] + }, + "clawitzer": { + "level": 85, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Aura Sphere", "Dark Pulse", "Dragon Pulse", "Muddy Water", "Surf", "Water Pulse", "U-turn"], + "abilities": ["Mega Launcher"], + "teraTypes": ["Dark", "Dragon", "Fighting", "Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Aura Sphere", "Dark Pulse", "Dragon Pulse", "Muddy Water", "Protect", "U-turn", "Water Pulse"], + "abilities": ["Mega Launcher"], + "teraTypes": ["Dragon"] + } + ] + }, + "sylveon": { + "level": 83, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Hyper Voice", "Protect", "Wish"], + "abilities": ["Pixilate"], + "teraTypes": ["Steel"] + }, + { + "role": "Tera Blast user", + "movepool": ["Hyper Voice", "Protect", "Tera Blast", "Wish"], + "abilities": ["Pixilate"], + "teraTypes": ["Fire", "Ground"] + } + ] + }, + "hawlucha": { + "level": 82, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Acrobatics", "Close Combat", "Protect", "Swords Dance"], + "abilities": ["Unburden"], + "teraTypes": ["Fighting", "Flying"] + } + ] + }, + "dedenne": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Draining Kiss", "Grass Knot", "Nuzzle", "Protect", "Super Fang", "Thunderbolt", "U-turn"], + "abilities": ["Cheek Pouch"], + "teraTypes": ["Electric", "Flying", "Grass"] + } + ] + }, + "carbink": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Iron Defense", "Moonblast", "Rock Polish", "Trick Room"], + "abilities": ["Clear Body", "Sturdy"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Iron Defense", "Moonblast", "Protect", "Spikes", "Stealth Rock"], + "abilities": ["Clear Body", "Sturdy"], + "teraTypes": ["Fighting"] + } + ] + }, + "goodra": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Breaking Swipe", "Draco Meteor", "Fire Blast", "Power Whip", "Protect", "Scald", "Sludge Bomb"], + "abilities": ["Sap Sipper"], + "teraTypes": ["Fire", "Grass", "Poison", "Water"] + } + ] + }, + "goodrahisui": { + "level": 82, + "sets": [ + { + "role": "AV Pivot", + "movepool": ["Draco Meteor", "Dragon Tail", "Fire Blast", "Heavy Slam", "Hydro Pump", "Thunderbolt"], + "abilities": ["Gooey"], + "teraTypes": ["Flying"] + }, + { + "role": "Bulky Setup", + "movepool": ["Acid Armor", "Body Press", "Heavy Slam", "Life Dew", "Protect"], + "abilities": ["Sap Sipper"], + "teraTypes": ["Fighting"] + } + ] + }, + "klefki": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Light Screen", "Play Rough", "Protect", "Reflect", "Spikes", "Thunder Wave"], + "abilities": ["Prankster"], + "teraTypes": ["Flying", "Water"] + } + ] + }, + "trevenant": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Horn Leech", "Leech Seed", "Phantom Force", "Protect"], + "abilities": ["Harvest"], + "teraTypes": ["Fairy", "Water"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Leech Seed", "Phantom Force", "Protect"], + "abilities": ["Harvest"], + "teraTypes": ["Fairy", "Water"] + } + ] + }, + "avalugg": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Avalanche", "Body Press", "Protect", "Rapid Spin", "Recover"], + "abilities": ["Sturdy"], + "teraTypes": ["Fighting"] + } + ] + }, + "avalugghisui": { + "level": 89, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Press", "Mountain Gale", "Rapid Spin", "Recover", "Rock Slide"], + "abilities": ["Sturdy"], + "teraTypes": ["Flying", "Ghost", "Poison"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Mountain Gale", "Protect", "Rock Slide"], + "abilities": ["Sturdy"], + "teraTypes": ["Fighting"] + } + ] + }, + "noivern": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Defog", "Draco Meteor", "Flamethrower", "Hurricane", "Protect", "Roost", "Super Fang", "Taunt", "U-turn"], + "abilities": ["Infiltrator"], + "teraTypes": ["Steel"] + }, + { + "role": "Choice Item user", + "movepool": ["Boomburst", "Draco Meteor", "Flamethrower", "Hurricane", "U-turn"], + "abilities": ["Infiltrator"], + "teraTypes": ["Normal"] + } + ] + }, + "diancie": { + "level": 79, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Diamond Storm", "Moonblast", "Protect", "Spikes", "Stealth Rock", "Trick Room"], + "abilities": ["Clear Body"], + "teraTypes": ["Fighting", "Grass", "Steel", "Water"] + } + ] + }, + "hoopa": { + "level": 85, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Focus Blast", "Hyperspace Hole", "Protect", "Shadow Ball"], + "abilities": ["Magician"], + "teraTypes": ["Fighting"] + }, + { + "role": "Choice Item user", + "movepool": ["Focus Blast", "Hyperspace Hole", "Shadow Ball", "Trick"], + "abilities": ["Magician"], + "teraTypes": ["Fighting"] + } + ] + }, + "hoopaunbound": { + "level": 80, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Gunk Shot", "Hyperspace Fury", "Psychic", "Trick"], + "abilities": ["Magician"], + "teraTypes": ["Dark", "Poison"] + }, + { + "role": "Fast Attacker", + "movepool": ["Drain Punch", "Gunk Shot", "Hyperspace Fury", "Protect", "Psychic"], + "abilities": ["Magician"], + "teraTypes": ["Dark", "Fighting", "Poison"] + } + ] + }, + "volcanion": { + "level": 76, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Earth Power", "Heat Wave", "Protect", "Roar", "Sludge Bomb", "Steam Eruption"], + "abilities": ["Water Absorb"], + "teraTypes": ["Ground", "Fire", "Water"] + }, + { + "role": "AV Pivot", + "movepool": ["Earth Power", "Flame Charge", "Heat Wave", "Sludge Bomb", "Steam Eruption"], + "abilities": ["Water Absorb"], + "teraTypes": ["Ground"] + } + ] + }, + "decidueye": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Defog", "Knock Off", "Leaf Storm", "Protect", "Roost", "Shadow Sneak", "Spirit Shackle", "U-turn"], + "abilities": ["Overgrow"], + "teraTypes": ["Fairy", "Water"] + } + ] + }, + "decidueyehisui": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Defog", "Knock Off", "Leaf Blade", "Protect", "Roost", "Triple Arrows", "U-turn"], + "abilities": ["Scrappy"], + "teraTypes": ["Steel"] + } + ] + }, + "incineroar": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Flare Blitz", "Heat Wave", "Knock Off", "Parting Shot", "Protect", "Will-O-Wisp"], + "abilities": ["Intimidate"], + "teraTypes": ["Fairy", "Grass"] + } + ] + }, + "primarina": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Calm Mind", "Draining Kiss", "Hydro Pump", "Protect"], + "abilities": ["Liquid Voice"], + "teraTypes": ["Fairy", "Steel"] + }, + { + "role": "Fast Attacker", + "movepool": ["Flip Turn", "Hydro Pump", "Moonblast", "Protect", "Surf"], + "abilities": ["Liquid Voice"], + "teraTypes": ["Steel"] + }, + { + "role": "Wallbreaker", + "movepool": ["Flip Turn", "Hydro Pump", "Moonblast", "Surf"], + "abilities": ["Liquid Voice"], + "teraTypes": ["Water"] + } + ] + }, + "toucannon": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Beak Blast", "Boomburst", "Bullet Seed", "Encore", "Knock Off", "Protect", "Roost"], + "abilities": ["Pickup", "Skill Link"], + "teraTypes": ["Steel"] + } + ] + }, + "gumshoos": { + "level": 95, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Double-Edge", "Knock Off", "Protect", "Stomping Tantrum"], + "abilities": ["Adaptability"], + "teraTypes": ["Ground"] + }, + { + "role": "Fast Attacker", + "movepool": ["Double-Edge", "Earthquake", "Knock Off", "Protect"], + "abilities": ["Adaptability"], + "teraTypes": ["Ground"] + } + ] + }, + "vikavolt": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bug Buzz", "Discharge", "Energy Ball", "Protect", "Sticky Web"], + "abilities": ["Levitate"], + "teraTypes": ["Electric"] + } + ] + }, + "crabominable": { + "level": 89, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Drain Punch", "Gunk Shot", "Ice Hammer", "Knock Off", "Protect"], + "abilities": ["Iron Fist"], + "teraTypes": ["Fighting", "Poison", "Water"] + }, + { + "role": "AV Pivot", + "movepool": ["Drain Punch", "Gunk Shot", "Ice Hammer", "Knock Off"], + "abilities": ["Iron Fist"], + "teraTypes": ["Dark", "Poison", "Water"] + } + ] + }, + "oricorio": { + "level": 85, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Hurricane", "Protect", "Quiver Dance", "Revelation Dance"], + "abilities": ["Dancer"], + "teraTypes": ["Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["Defog", "Hurricane", "Roost", "Quiver Dance", "Revelation Dance"], + "abilities": ["Dancer"], + "teraTypes": ["Ground"] + } + ] + }, + "oricoriopompom": { + "level": 83, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Hurricane", "Protect", "Quiver Dance", "Revelation Dance"], + "abilities": ["Dancer"], + "teraTypes": ["Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["Defog", "Hurricane", "Roost", "Quiver Dance", "Revelation Dance"], + "abilities": ["Dancer"], + "teraTypes": ["Ground", "Water"] + } + ] + }, + "oricoriopau": { + "level": 89, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Hurricane", "Protect", "Quiver Dance", "Revelation Dance"], + "abilities": ["Dancer"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Support", + "movepool": ["Defog", "Hurricane", "Roost", "Quiver Dance", "Revelation Dance"], + "abilities": ["Dancer"], + "teraTypes": ["Fighting"] + } + ] + }, + "oricoriosensu": { + "level": 87, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Hurricane", "Protect", "Quiver Dance", "Revelation Dance"], + "abilities": ["Dancer"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Support", + "movepool": ["Defog", "Hurricane", "Roost", "Quiver Dance", "Revelation Dance"], + "abilities": ["Dancer"], + "teraTypes": ["Fighting"] + } + ] + }, + "ribombee": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bug Buzz", "Moonblast", "Protect", "Sticky Web", "Stun Spore"], + "abilities": ["Shield Dust"], + "teraTypes": ["Steel"] + } + ] + }, + "lycanroc": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Accelerock", "Close Combat", "Protect", "Rock Slide", "Stone Edge", "Swords Dance"], + "abilities": ["Sand Rush"], + "teraTypes": ["Fighting"] + } + ] + }, + "lycanrocmidnight": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Knock Off", "Protect", "Rock Slide", "Stone Edge"], + "abilities": ["No Guard"], + "teraTypes": ["Fighting"] + } + ] + }, + "lycanrocdusk": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Accelerock", "Close Combat", "Protect", "Psychic Fangs", "Rock Slide", "Swords Dance"], + "abilities": ["Tough Claws"], + "teraTypes": ["Fighting"] + } + ] + }, + "toxapex": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Baneful Bunker", "Infestation", "Recover", "Sludge Bomb"], + "abilities": ["Regenerator"], + "teraTypes": ["Flying", "Grass"] + } + ] + }, + "mudsdale": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Earthquake", "Heavy Slam", "High Horsepower", "Protect", "Stealth Rock", "Stone Edge"], + "abilities": ["Stamina"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Earthquake", "Heavy Slam", "High Horsepower", "Rest", "Stone Edge"], + "abilities": ["Stamina"], + "teraTypes": ["Steel"] + } + ] + }, + "araquanid": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Hydro Pump", "Leech Life", "Liquidation", "Protect", "Sticky Web", "Surf"], + "abilities": ["Water Bubble"], + "teraTypes": ["Electric", "Steel"] + } + ] + }, + "lurantis": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Defog", "Leaf Storm", "Superpower", "Synthesis"], + "abilities": ["Contrary"], + "teraTypes": ["Fighting", "Steel", "Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Petal Blizzard", "Protect", "Superpower", "Synthesis"], + "abilities": ["Contrary"], + "teraTypes": ["Fighting", "Steel", "Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Knock Off", "Leaf Storm", "Petal Blizzard", "Protect", "Superpower"], + "abilities": ["Contrary"], + "teraTypes": ["Fighting"] + } + ] + }, + "salazzle": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Fire Blast", "Heat Wave", "Protect", "Poison Gas", "Sludge Bomb"], + "abilities": ["Corrosion"], + "teraTypes": ["Grass"] + } + ] + }, + "tsareena": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Knock Off", "Low Kick", "Power Whip", "Protect", "Rapid Spin", "Synthesis", "Triple Axel", "U-turn"], + "abilities": ["Queenly Majesty"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Support", + "movepool": ["Knock Off", "Low Kick", "Power Whip", "Protect", "Rapid Spin", "Synthesis", "Triple Axel", "U-turn"], + "abilities": ["Queenly Majesty"], + "teraTypes": ["Steel"] + } + ] + }, + "comfey": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Draining Kiss", "Encore", "Knock Off", "Leech Seed", "Protect", "Substitute", "Synthesis", "U-turn"], + "abilities": ["Triage"], + "teraTypes": ["Poison", "Steel"] + }, + { + "role": "Tera Blast user", + "movepool": ["Calm Mind", "Draining Kiss", "Protect", "Tera Blast"], + "abilities": ["Triage"], + "teraTypes": ["Ground"] + } + ] + }, + "oranguru": { + "level": 90, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Focus Blast", "Future Sight", "Hyper Voice", "Nasty Plot", "Protect", "Psychic", "Trick Room"], + "abilities": ["Inner Focus"], + "teraTypes": ["Fairy", "Fighting", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Hyper Voice", "Imprison", "Protect", "Psychic"], + "abilities": ["Inner Focus"], + "teraTypes": ["Fairy", "Steel"] + } + ] + }, + "passimian": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Drain Punch", "Gunk Shot", "Knock Off", "Protect"], + "abilities": ["Defiant"], + "teraTypes": ["Dark", "Fighting", "Poison"] + }, + { + "role": "Choice Item user", + "movepool": ["Close Combat", "Gunk Shot", "Knock Off", "Rock Slide", "U-turn"], + "abilities": ["Defiant"], + "teraTypes": ["Dark", "Fighting", "Poison"] + } + ] + }, + "palossand": { + "level": 89, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earth Power", "Protect", "Shadow Ball", "Shore Up", "Sludge Bomb", "Stealth Rock"], + "abilities": ["Water Compaction"], + "teraTypes": ["Grass", "Poison", "Water"] + } + ] + }, + "minior": { + "level": 82, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Acrobatics", "Protect", "Rock Slide", "Shell Smash"], + "abilities": ["Shields Down"], + "teraTypes": ["Rock", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Acrobatics", "Power Gem", "Protect", "Shell Smash"], + "abilities": ["Shields Down"], + "teraTypes": ["Flying", "Steel"] + } + ] + }, + "komala": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Slam", "Knock Off", "Protect", "Rapid Spin", "Superpower", "U-turn", "Wood Hammer"], + "abilities": ["Comatose"], + "teraTypes": ["Ghost"] + } + ] + }, + "mimikyu": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Play Rough", "Protect", "Shadow Claw", "Thunder Wave", "Will-O-Wisp"], + "abilities": ["Disguise"], + "teraTypes": ["Steel"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Play Rough", "Protect", "Shadow Sneak", "Swords Dance"], + "abilities": ["Disguise"], + "teraTypes": ["Ghost"] + } + ] + }, + "bruxish": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Crunch", "Flip Turn", "Ice Fang", "Protect", "Psychic Fangs", "Swords Dance", "Wave Crash"], + "abilities": ["Strong Jaw"], + "teraTypes": ["Dark", "Psychic", "Water"] + }, + { + "role": "Choice Item user", + "movepool": ["Crunch", "Flip Turn", "Ice Fang", "Psychic Fangs", "Wave Crash"], + "abilities": ["Strong Jaw"], + "teraTypes": ["Dark", "Psychic", "Water"] + } + ] + }, + "solgaleo": { + "level": 76, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Cosmic Power", "Knock Off", "Morning Sun", "Sunsteel Strike"], + "abilities": ["Full Metal Body"], + "teraTypes": ["Dark", "Steel"] + }, + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Flare Blitz", "Knock Off", "Morning Sun", "Protect", "Psychic Fangs", "Sunsteel Strike", "Teleport"], + "abilities": ["Full Metal Body"], + "teraTypes": ["Dark", "Fighting", "Fire"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Close Combat", "Flame Charge", "Flare Blitz", "Knock Off", "Morning Sun", "Protect", "Psychic Fangs", "Stone Edge", "Sunsteel Strike", "Teleport"], + "abilities": ["Full Metal Body"], + "teraTypes": ["Dark", "Fighting", "Fire"] + } + ] + }, + "lunala": { + "level": 74, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Moonblast", "Moongeist Beam", "Moonlight"], + "abilities": ["Shadow Shield"], + "teraTypes": ["Fairy"] + }, + { + "role": "Fast Attacker", + "movepool": ["Meteor Beam", "Moonblast", "Moongeist Beam", "Moonlight", "Protect", "Psychic", "Will-O-Wisp"], + "abilities": ["Shadow Shield"], + "teraTypes": ["Dark", "Fairy", "Ghost"] + } + ] + }, + "necrozma": { + "level": 81, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Heat Wave", "Moonlight", "Morning Sun", "Photon Geyser", "Protect"], + "abilities": ["Prism Armor"], + "teraTypes": ["Dark", "Fairy", "Fire", "Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["Earth Power", "Knock Off", "Moonlight", "Morning Sun", "Photon Geyser", "Protect", "Stealth Rock"], + "abilities": ["Prism Armor"], + "teraTypes": ["Dark", "Fairy", "Psychic", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Knock Off", "Moonlight", "Morning Sun", "Photon Geyser", "Protect"], + "abilities": ["Prism Armor"], + "teraTypes": ["Dark", "Fairy"] + } + ] + }, + "necrozmaduskmane": { + "level": 72, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Dragon Dance", "Earthquake", "Photon Geyser", "Protect", "Sunsteel Strike"], + "abilities": ["Prism Armor"], + "teraTypes": ["Steel", "Ground"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Knock Off", "Moonlight", "Morning Sun", "Photon Geyser", "Protect"], + "abilities": ["Prism Armor"], + "teraTypes": ["Dark", "Fairy"] + } + ] + }, + "necrozmadawnwings": { + "level": 73, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Calm Mind", "Earth Power", "Future Sight", "Moongeist Beam", "Moonlight", "Morning Sun", "Photon Geyser", "Stealth Rock", "Trick Room"], + "abilities": ["Prism Armor"], + "teraTypes": ["Dark", "Ghost"] + }, + { + "role": "Tera Blast user", + "movepool": ["Calm Mind", "Moongeist Beam", "Protect", "Tera Blast"], + "abilities": ["Prism Armor"], + "teraTypes": ["Fairy", "Fighting"] + } + ] + }, + "kommoo": { + "level": 78, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Clanging Scales", "Iron Defense", "Protect"], + "abilities": ["Soundproof"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Boomburst", "Clanging Scales", "Clangorous Soul", "Drain Punch"], + "abilities": ["Soundproof"], + "teraTypes": ["Normal"] + } + ] + }, + "magearna": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Flash Cannon", "Fleur Cannon", "Ice Beam", "Pain Split", "Protect", "Spikes", "Thunderbolt", "Thunder Wave", "Trick Room", "Volt Switch"], + "abilities": ["Soul-Heart"], + "teraTypes": ["Fairy", "Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Iron Defense", "Draining Kiss", "Stored Power"], + "abilities": ["Soul-Heart"], + "teraTypes": ["Fairy"] + }, + { + "role": "Imprisoner", + "movepool": ["Dazzling Gleam", "Imprison", "Pain Split", "Protect"], + "abilities": ["Soul-Heart"], + "teraTypes": ["Water"] + } + ] + }, + "rillaboom": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Grassy Glide", "High Horsepower", "Knock Off", "Protect", "U-turn", "Wood Hammer"], + "abilities": ["Grassy Surge"], + "teraTypes": ["Grass", "Steel", "Water"] + }, + { + "role": "AV Pivot", + "movepool": ["Grassy Glide", "High Horsepower", "Knock Off", "U-turn", "Wood Hammer"], + "abilities": ["Grassy Surge"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "cinderace": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Court Change", "Low Kick", "Protect", "Pyro Ball", "Sucker Punch", "Super Fang", "U-turn", "Will-O-Wisp"], + "abilities": ["Blaze"], + "teraTypes": ["Grass", "Water"] + }, + { + "role": "Choice Item user", + "movepool": ["Gunk Shot", "Low Kick", "Pyro Ball", "U-turn"], + "abilities": ["Libero"], + "teraTypes": ["Fire"] + } + ] + }, + "inteleon": { + "level": 79, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Hydro Pump", "Ice Beam", "Protect", "Scald", "Surf"], + "abilities": ["Torrent"], + "teraTypes": ["Water"] + }, + { + "role": "Choice Item user", + "movepool": ["Hydro Pump", "Ice Beam", "Surf", "U-turn"], + "abilities": ["Torrent"], + "teraTypes": ["Water"] + } + ] + }, + "greedent": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Body Slam", "Double-Edge", "High Horsepower", "Knock Off", "Protect", "Swords Dance"], + "abilities": ["Cheek Pouch"], + "teraTypes": ["Ghost"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Body Slam", "Curse", "High Horsepower", "Protect"], + "abilities": ["Cheek Pouch"], + "teraTypes": ["Fairy", "Ground"] + } + ] + }, + "corviknight": { + "level": 80, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Press", "Brave Bird", "Defog", "Protect", "Roost", "Taunt", "U-turn"], + "abilities": ["Mirror Armor"], + "teraTypes": ["Dragon"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Brave Bird", "Bulk Up", "Iron Defense", "Roost"], + "abilities": ["Mirror Armor"], + "teraTypes": ["Dragon", "Fighting"] + } + ] + }, + "drednaw": { + "level": 82, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Liquidation", "Protect", "Rock Slide", "Shell Smash", "Stone Edge"], + "abilities": ["Swift Swim"], + "teraTypes": ["Grass", "Rock", "Water"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Crunch", "Protect", "Shell Smash", "Stone Edge"], + "abilities": ["Strong Jaw"], + "teraTypes": ["Dark"] + }, + { + "role": "Fast Attacker", + "movepool": ["Liquidation", "Protect", "Rock Slide", "Shell Smash"], + "abilities": ["Swift Swim"], + "teraTypes": ["Grass", "Rock", "Water"] + } + ] + }, + "coalossal": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Heat Wave", "Protect", "Rapid Spin", "Spikes", "Stealth Rock", "Stone Edge", "Will-O-Wisp"], + "abilities": ["Flame Body"], + "teraTypes": ["Grass"] + } + ] + }, + "flapple": { + "level": 95, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Grav Apple", "Leech Seed", "Protect", "Recycle"], + "abilities": ["Ripen"], + "teraTypes": ["Steel"] + }, + { + "role": "Fast Attacker", + "movepool": ["Draco Meteor", "Grav Apple", "Protect", "U-Turn"], + "abilities": ["Ripen"], + "teraTypes": ["Steel"] + }, + { + "role": "Tera Blast user", + "movepool": ["Dragon Dance", "Grav Apple", "Protect", "Tera Blast"], + "abilities": ["Hustle"], + "teraTypes": ["Dragon", "Fire", "Rock"] + } + ] + }, + "appletun": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Apple Acid", "Draco Meteor", "Dragon Pulse", "Dragon Tail", "Protect", "Recover"], + "abilities": ["Thick Fat"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Apple Acid", "Dragon Pulse", "Leech Seed", "Recover"], + "abilities": ["Thick Fat"], + "teraTypes": ["Steel"] + } + ] + }, + "sandaconda": { + "level": 86, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Coil", "High Horsepower", "Rest", "Stone Edge"], + "abilities": ["Shed Skin"], + "teraTypes": ["Dragon", "Steel"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Earthquake", "Glare", "High Horsepower", "Protect", "Rest", "Stone Edge", "Stealth Rock"], + "abilities": ["Shed Skin"], + "teraTypes": ["Dragon", "Steel"] + } + ] + }, + "cramorant": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Brave Bird", "Defog", "Protect", "Roost", "Surf"], + "abilities": ["Gulp Missile"], + "teraTypes": ["Ground"] + } + ] + }, + "barraskewda": { + "level": 85, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Crunch", "Flip Turn", "Poison Jab", "Protect", "Psychic Fangs", "Waterfall"], + "abilities": ["Propeller Tail"], + "teraTypes": ["Fighting"] + } + ] + }, + "toxtricity": { + "level": 82, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Boomburst", "Overdrive", "Sludge Bomb", "Volt Switch"], + "abilities": ["Punk Rock"], + "teraTypes": ["Normal"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Boomburst", "Overdrive", "Protect", "Shift Gear"], + "abilities": ["Punk Rock"], + "teraTypes": ["Normal"] + } + ] + }, + "polteageist": { + "level": 85, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Baton Pass", "Protect", "Shadow Ball", "Shell Smash", "Stored Power"], + "abilities": ["Cursed Body"], + "teraTypes": ["Fairy", "Psychic"] + } + ] + }, + "hatterene": { + "level": 84, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Draining Kiss", "Future Sight", "Mystical Fire", "Protect", "Psychic"], + "abilities": ["Magic Bounce"], + "teraTypes": ["Fairy", "Fire", "Steel"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Calm Mind", "Dazzling Gleam", "Future Sight", "Mystical Fire", "Protect", "Psychic", "Trick Room"], + "abilities": ["Magic Bounce"], + "teraTypes": ["Fire", "Steel"] + } + ] + }, + "grimmsnarl": { + "level": 82, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Light Screen", "Parting Shot", "Reflect", "Spirit Break", "Sucker Punch", "Taunt", "Thunder Wave"], + "abilities": ["Prankster"], + "teraTypes": ["Poison", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Spirit Break", "Thunder Wave"], + "abilities": ["Prankster"], + "teraTypes": ["Steel"] + } + ] + }, + "perrserker": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Iron Head", "Knock Off", "Protect", "Stealth Rock", "U-turn"], + "abilities": ["Steely Spirit", "Tough Claws"], + "teraTypes": ["Fighting"] + } + ] + }, + "alcremie": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Acid Armor", "Alluring Voice", "Calm Mind", "Recover"], + "abilities": ["Aroma Veil"], + "teraTypes": ["Steel"] + } + ] + }, + "falinks": { + "level": 87, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Knock Off", "No Retreat", "Protect"], + "abilities": ["Defiant"], + "teraTypes": ["Dark"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Iron Head", "No Retreat", "Protect"], + "abilities": ["Defiant"], + "teraTypes": ["Steel"] + } + ] + }, + "pincurchin": { + "level": 97, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Discharge", "Protect", "Recover", "Scald", "Spikes", "Thunderbolt"], + "abilities": ["Electric Surge"], + "teraTypes": ["Grass", "Water"] + } + ] + }, + "frosmoth": { + "level": 86, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Bug Buzz", "Giga Drain", "Hurricane", "Ice Beam", "Protect", "Quiver Dance"], + "abilities": ["Ice Scales"], + "teraTypes": ["Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Defog", "Giga Drain", "Ice Beam", "Protect", "Quiver Dance"], + "abilities": ["Ice Scales"], + "teraTypes": ["Water"] + }, + { + "role": "Tera Blast user", + "movepool": ["Ice Beam", "Protect", "Quiver Dance", "Tera Blast"], + "abilities": ["Ice Scales"], + "teraTypes": ["Ground"] + } + ] + }, + "stonjourner": { + "level": 89, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Heat Crash", "High Horsepower", "Protect", "Rock Slide", "Stealth Rock", "Stone Edge"], + "abilities": ["Power Spot"], + "teraTypes": ["Fire", "Grass", "Ground"] + }, + { + "role": "Imprisoner", + "movepool": ["Heat Crash", "High Horsepower", "Imprison", "Protect", "Rock Slide"], + "abilities": ["Power Spot"], + "teraTypes": ["Fire", "Grass", "Ground"] + } + ] + }, + "eiscue": { + "level": 89, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Belly Drum", "Ice Spinner", "Liquidation", "Protect"], + "abilities": ["Ice Face"], + "teraTypes": ["Water"] + } + ] + }, + "indeedee": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Expanding Force", "Hyper Voice", "Protect"], + "abilities": ["Psychic Surge"], + "teraTypes": ["Fairy", "Steel"] + }, + { + "role": "Wallbreaker", + "movepool": ["Expanding Force", "Hyper Voice", "Psyshock", "Trick"], + "abilities": ["Psychic Surge"], + "teraTypes": ["Fairy", "Psychic", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Expanding Force", "Hyper Voice", "Imprison", "Protect"], + "abilities": ["Psychic Surge"], + "teraTypes": ["Fairy", "Steel"] + } + ] + }, + "indeedeef": { + "level": 90, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Alluring Voice", "Hyper Voice", "Protect", "Psychic", "Trick"], + "abilities": ["Psychic Surge"], + "teraTypes": ["Fairy"] + }, + { + "role": "Imprisoner", + "movepool": ["Hyper Voice", "Imprison", "Protect", "Psychic"], + "abilities": ["Psychic Surge"], + "teraTypes": ["Fairy", "Steel"] + } + ] + }, + "morpeko": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aura Wheel", "Knock Off", "Protect", "Rapid Spin"], + "abilities": ["Hunger Switch"], + "teraTypes": ["Flying"] + } + ] + }, + "copperajah": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["High Horsepower", "Iron Head", "Play Rough", "Protect", "Stealth Rock"], + "abilities": ["Sheer Force"], + "teraTypes": ["Fairy"] + }, + { + "role": "Choice Item user", + "movepool": ["Heat Crash", "Heavy Slam", "High Horsepower", "Stone Edge"], + "abilities": ["Heavy Metal"], + "teraTypes": ["Fire"] + } + ] + }, + "duraludon": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Breaking Swipe", "Draco Meteor", "Dragon Pulse", "Dragon Tail", "Flash Cannon", "Protect", "Stealth Rock", "Thunder Wave"], + "abilities": ["Light Metal"], + "teraTypes": ["Fairy"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Dragon Pulse", "Iron Defense", "Protect"], + "abilities": ["Light Metal"], + "teraTypes": ["Fighting"] + } + ] + }, + "dragapult": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dragon Dance", "Dragon Darts", "Fire Blast", "Phantom Force", "Protect", "Thunder Wave", "Will-O-Wisp"], + "abilities": ["Clear Body"], + "teraTypes": ["Fairy"] + } + ] + }, + "zacian": { + "level": 70, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Play Rough", "Protect", "Swords Dance"], + "abilities": ["Intrepid Sword"], + "teraTypes": ["Fighting"] + } + ] + }, + "zaciancrowned": { + "level": 65, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Behemoth Blade", "Close Combat", "Play Rough", "Protect"], + "abilities": ["Intrepid Sword"], + "teraTypes": ["Fighting"] + }, + { + "role": "Fast Attacker", + "movepool": ["Behemoth Blade", "Play Rough", "Protect", "Swords Dance"], + "abilities": ["Intrepid Sword"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "zamazenta": { + "level": 72, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Close Combat", "Crunch", "Iron Head", "Psychic Fangs", "Stone Edge"], + "abilities": ["Dauntless Shield"], + "teraTypes": ["Dark", "Fighting", "Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Crunch", "Iron Defense", "Iron Head", "Protect", "Rest", "Stone Edge"], + "abilities": ["Dauntless Shield"], + "teraTypes": ["Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Body Press", "Imprison", "Iron Defense", "Protect"], + "abilities": ["Dauntless Shield"], + "teraTypes": ["Steel"] + } + ] + }, + "zamazentacrowned": { + "level": 67, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Behemoth Bash", "Body Press", "Crunch", "Iron Defense", "Protect"], + "abilities": ["Dauntless Shield"], + "teraTypes": ["Ghost"] + }, + { + "role": "Imprisoner", + "movepool": ["Behemoth Bash", "Body Press", "Imprison", "Protect"], + "abilities": ["Dauntless Shield"], + "teraTypes": ["Ghost"] + } + ] + }, + "eternatus": { + "level": 70, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Cosmic Power", "Dynamax Cannon", "Flamethrower", "Recover"], + "abilities": ["Pressure"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Dynamax Cannon", "Flamethrower", "Protect", "Recover", "Sludge Wave"], + "abilities": ["Pressure"], + "teraTypes": ["Poison", "Steel"] + } + ] + }, + "urshifu": { + "level": 75, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Poison Jab", "Protect", "Sucker Punch", "Wicked Blow"], + "abilities": ["Unseen Fist"], + "teraTypes": ["Dark", "Poison"] + } + ] + }, + "urshifurapidstrike": { + "level": 75, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aqua Jet", "Close Combat", "Ice Spinner", "Protect", "Surging Strikes", "U-turn"], + "abilities": ["Unseen Fist"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "zarude": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Encore", "Knock Off", "Petal Blizzard", "Power Whip", "Protect", "Swords Dance", "Synthesis", "Taunt"], + "abilities": ["Leaf Guard"], + "teraTypes": ["Poison"] + }, + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Knock Off", "Petal Blizzard", "Synthesis"], + "abilities": ["Leaf Guard"], + "teraTypes": ["Poison"] + } + ] + }, + "regieleki": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Electroweb", "Protect", "Rapid Spin", "Thunderbolt", "Thunder Cage", "Volt Switch"], + "abilities": ["Transistor"], + "teraTypes": ["Electric"] + }, + { + "role": "Tera Blast user", + "movepool": ["Protect", "Rapid Spin", "Tera Blast", "Thunderbolt"], + "abilities": ["Transistor"], + "teraTypes": ["Ice"] + } + ] + }, + "regidrago": { + "level": 78, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Draco Meteor", "Dragon Claw", "Dragon Energy", "Earth Power"], + "abilities": ["Dragon's Maw"], + "teraTypes": ["Dragon"] + }, + { + "role": "AV Pivot", + "movepool": ["Breaking Swipe", "Draco Meteor", "Dragon Claw", "Earth Power"], + "abilities": ["Dragon's Maw"], + "teraTypes": ["Dragon"] + } + ] + }, + "glastrier": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Close Combat", "Heavy Slam", "High Horsepower", "Icicle Crash", "Protect", "Swords Dance"], + "abilities": ["Chilling Neigh"], + "teraTypes": ["Fighting", "Ground"] + }, + { + "role": "AV Pivot", + "movepool": ["Close Combat", "Heavy Slam", "High Horsepower", "Icicle Crash"], + "abilities": ["Chilling Neigh"], + "teraTypes": ["Fighting", "Ground", "Steel"] + } + ] + }, + "spectrier": { + "level": 77, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Draining Kiss", "Nasty Plot", "Protect", "Shadow Ball"], + "abilities": ["Grim Neigh"], + "teraTypes": ["Fairy"] + }, + { + "role": "Tera Blast user", + "movepool": ["Nasty Plot", "Protect", "Shadow Ball", "Tera Blast"], + "abilities": ["Grim Neigh"], + "teraTypes": ["Fighting"] + } + ] + }, + "calyrex": { + "level": 93, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Body Press", "Calm Mind", "Encore", "Giga Drain", "Leech Seed", "Protect", "Psychic"], + "abilities": ["Unnerve"], + "teraTypes": ["Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Leech Seed", "Protect", "Psychic"], + "abilities": ["Unnerve"], + "teraTypes": ["Steel"] + } + ] + }, + "calyrexice": { + "level": 67, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Close Combat", "Glacial Lance", "High Horsepower", "Protect", "Trick Room"], + "abilities": ["As One (Glastrier)"], + "teraTypes": ["Fighting", "Ground", "Ice"] + } + ] + }, + "calyrexshadow": { + "level": 64, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Astral Barrage", "Nasty Plot", "Pollen Puff", "Protect", "Psychic"], + "abilities": ["As One (Spectrier)"], + "teraTypes": ["Dark", "Ghost"] + }, + { + "role": "Imprisoner", + "movepool": ["Astral Barrage", "Imprison", "Protect", "Psychic"], + "abilities": ["As One (Spectrier)"], + "teraTypes": ["Dark", "Ghost"] + } + ] + }, + "wyrdeer": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Slam", "Earth Power", "Future Sight", "Megahorn", "Protect", "Psychic"], + "abilities": ["Intimidate"], + "teraTypes": ["Fairy", "Ground"] + } + ] + }, + "kleavor": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Protect", "Stone Axe", "U-turn", "X-Scissor"], + "abilities": ["Sharpness"], + "teraTypes": ["Bug", "Steel"] + } + ] + }, + "ursaluna": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Crunch", "Earthquake", "Facade", "Headlong Rush", "Protect"], + "abilities": ["Guts"], + "teraTypes": ["Normal"] + } + ] + }, + "ursalunabloodmoon": { + "level": 78, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Blood Moon", "Earth Power", "Hyper Voice", "Moonlight", "Protect", "Vacuum Wave"], + "abilities": ["Mind's Eye"], + "teraTypes": ["Fairy"] + } + ] + }, + "enamorus": { + "level": 79, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Mystical Fire", "Protect", "Springtide Storm"], + "abilities": ["Cute Charm"], + "teraTypes": ["Fire", "Ground"] + }, + { + "role": "Fast Attacker", + "movepool": ["Play Rough", "Protect", "Substitute", "Superpower", "Taunt"], + "abilities": ["Contrary"], + "teraTypes": ["Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Play Rough", "Protect", "Superpower"], + "abilities": ["Contrary"], + "teraTypes": ["Fighting"] + } + ] + }, + "enamorustherian": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Earth Power", "Moonblast", "Mystical Fire", "Protect", "Springtide Storm"], + "abilities": ["Overcoat"], + "teraTypes": ["Ground"] + } + ] + }, + "meowscarada": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Flower Trick", "Knock Off", "Petal Blizzard", "Protect", "Spikes", "Taunt", "Triple Axel", "U-turn"], + "abilities": ["Overgrow"], + "teraTypes": ["Dark", "Grass", "Poison"] + } + ] + }, + "skeledirge": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Protect", "Shadow Ball", "Slack Off", "Torch Song"], + "abilities": ["Unaware"], + "teraTypes": ["Fairy", "Water"] + } + ] + }, + "quaquaval": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aqua Step", "Close Combat", "Knock Off", "Protect", "Rapid Spin", "Roost", "Triple Axel"], + "abilities": ["Moxie"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Aqua Step", "Close Combat", "Knock Off", "Rapid Spin", "Triple Axel"], + "abilities": ["Moxie"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Aqua Step", "Rapid Spin", "Roost", "U-Turn"], + "abilities": ["Moxie"], + "teraTypes": ["Steel"] + } + ] + }, + "oinkologne": { + "level": 92, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Body Slam", "Double-Edge", "High Horsepower", "Lash Out", "Protect", "Tail Whip"], + "abilities": ["Thick Fat"], + "teraTypes": ["Ground"] + } + ] + }, + "oinkolognef": { + "level": 92, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Body Slam", "Double-Edge", "High Horsepower", "Lash Out", "Protect", "Tail Whip"], + "abilities": ["Thick Fat"], + "teraTypes": ["Ground"] + } + ] + }, + "spidops": { + "level": 96, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Circle Throw", "Knock Off", "Protect", "Spikes", "Sticky Web", "U-turn"], + "abilities": ["Stakeout"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "lokix": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["First Impression", "Knock Off", "Leech Life", "Protect"], + "abilities": ["Tinted Lens"], + "teraTypes": ["Bug"] + }, + { + "role": "Fast Attacker", + "movepool": ["First Impression", "Knock Off", "Protect", "U-turn"], + "abilities": ["Tinted Lens"], + "teraTypes": ["Bug"] + } + ] + }, + "pawmot": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Double Shock", "Protect", "Revival Blessing"], + "abilities": ["Volt Absorb"], + "teraTypes": ["Electric"] + } + ] + }, + "maushold": { + "level": 79, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Encore", "Population Bomb", "Protect", "Tidy Up"], + "abilities": ["Technician"], + "teraTypes": ["Ghost", "Normal"] + } + ] + }, + "dachsbun": { + "level": 90, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Play Rough", "Protect", "Stomping Tantrum", "Wish"], + "abilities": ["Well-Baked Body"], + "teraTypes": ["Steel"] + } + ] + }, + "arboliva": { + "level": 89, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Earth Power", "Energy Ball", "Hyper Voice", "Protect", "Strength Sap"], + "abilities": ["Seed Sower"], + "teraTypes": ["Ghost", "Grass", "Poison", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Hyper Voice", "Leech Seed", "Protect", "Substitute"], + "abilities": ["Harvest"], + "teraTypes": ["Ghost", "Poison", "Water"] + } + ] + }, + "squawkabilly": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Double-Edge", "Foul Play", "Parting Shot", "Protect", "Quick Attack", "Roost", "U-turn"], + "abilities": ["Intimidate"], + "teraTypes": ["Steel"] + } + ] + }, + "squawkabillywhite": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Double-Edge", "Foul Play", "Parting Shot", "Protect", "Quick Attack", "Roost", "U-turn"], + "abilities": ["Intimidate"], + "teraTypes": ["Steel"] + } + ] + }, + "squawkabillyblue": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Double-Edge", "Foul Play", "Parting Shot", "Protect", "Quick Attack", "Roost", "U-turn"], + "abilities": ["Intimidate"], + "teraTypes": ["Steel"] + } + ] + }, + "squawkabillyyellow": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Double-Edge", "Foul Play", "Parting Shot", "Protect", "Quick Attack", "Roost", "U-turn"], + "abilities": ["Intimidate"], + "teraTypes": ["Steel"] + } + ] + }, + "garganacl": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Press", "Protect", "Recover", "Salt Cure", "Stealth Rock"], + "abilities": ["Purifying Salt"], + "teraTypes": ["Ghost"] + }, + { + "role": "Bulky Setup", + "movepool": ["Body Press", "Iron Defense", "Recover", "Salt Cure"], + "abilities": ["Purifying Salt"], + "teraTypes": ["Ghost"] + } + ] + }, + "armarouge": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Armor Cannon", "Aura Sphere", "Energy Ball", "Heat Wave", "Meteor Beam", "Protect", "Psychic"], + "abilities": ["Weak Armor"], + "teraTypes": ["Fairy", "Fighting", "Fire", "Grass"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Armor Cannon", "Protect", "Psychic", "Trick Room"], + "abilities": ["Flash Fire"], + "teraTypes": ["Fire"] + } + ] + }, + "ceruledge": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Bitter Blade", "Close Combat", "Poltergeist", "Protect", "Shadow Sneak", "Swords Dance"], + "abilities": ["Flash Fire", "Weak Armor"], + "teraTypes": ["Fighting", "Fire", "Ghost", "Grass"] + } + ] + }, + "bellibolt": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Discharge", "Muddy Water", "Parabolic Charge", "Protect", "Slack Off", "Volt Switch"], + "abilities": ["Electromorphosis"], + "teraTypes": ["Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Protect", "Slack Off", "Soak", "Thunderbolt"], + "abilities": ["Electromorphosis"], + "teraTypes": ["Flying", "Grass"] + } + ] + }, + "kilowattrel": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Hurricane", "Protect", "Roost", "Thunderbolt"], + "abilities": ["Competitive", "Volt Absorb"], + "teraTypes": ["Electric", "Flying", "Steel"] + } + ] + }, + "mabosstiff": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Jaw Lock", "Pain Split", "Play Rough", "Protect", "Taunt"], + "abilities": ["Intimidate"], + "teraTypes": ["Fairy"] + }, + { + "role": "Wallbreaker", + "movepool": ["Crunch", "Play Rough", "Psychic Fangs", "Wild Charge"], + "abilities": ["Intimidate"], + "teraTypes": ["Fairy"] + } + ] + }, + "grafaiai": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Gunk Shot", "Knock Off", "Parting Shot", "Taunt"], + "abilities": ["Prankster"], + "teraTypes": ["Dark"] + }, + { + "role": "AV Pivot", + "movepool": ["Gunk Shot", "Knock Off", "Super Fang", "U-turn"], + "abilities": ["Poison Touch"], + "teraTypes": ["Dark"] + } + ] + }, + "brambleghast": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Poltergeist", "Power Whip", "Rapid Spin", "Strength Sap"], + "abilities": ["Wind Rider"], + "teraTypes": ["Dark", "Fairy", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Leech Seed", "Poltergeist", "Power Whip", "Protect"], + "abilities": ["Wind Rider"], + "teraTypes": ["Dark", "Fairy", "Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Poltergeist", "Power Whip", "Protect", "Rapid Spin", "Shadow Sneak", "Spikes", "Strength Sap"], + "abilities": ["Wind Rider"], + "teraTypes": ["Dark", "Fairy", "Water"] + } + ] + }, + "toedscruel": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earth Power", "Giga Drain", "Knock Off", "Protect", "Rapid Spin", "Spikes"], + "abilities": ["Mycelium Might"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "klawf": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Crabhammer", "High Horsepower", "Knock Off", "Protect", "Rock Slide", "Stealth Rock", "Stone Edge"], + "abilities": ["Regenerator"], + "teraTypes": ["Water"] + } + ] + }, + "scovillain": { + "level": 90, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Burning Jealousy", "Energy Ball", "Fire Blast", "Leaf Storm"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Fire"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Flamethrower", "Leech Seed", "Protect", "Substitute"], + "abilities": ["Chlorophyll"], + "teraTypes": ["Steel"] + } + ] + }, + "rabsca": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Bug Buzz", "Psychic", "Protect", "Revival Blessing"], + "abilities": ["Synchronize"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Bug Buzz", "Future Sight", "Protect", "Revival Blessing", "Trick Room"], + "abilities": ["Synchronize"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "espathra": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Baton Pass", "Dazzling Gleam", "Lumina Crash", "Protect", "Shadow Ball"], + "abilities": ["Speed Boost"], + "teraTypes": ["Fairy"] + }, + { + "role": "Tera Blast user", + "movepool": ["Calm Mind", "Lumina Crash", "Protect", "Stored Power", "Tera Blast"], + "abilities": ["Speed Boost"], + "teraTypes": ["Fighting"] + } + ] + }, + "tinkaton": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Encore", "Gigaton Hammer", "Knock Off", "Play Rough", "Protect", "Stealth Rock", "Swords Dance", "Thunder Wave"], + "abilities": ["Mold Breaker"], + "teraTypes": ["Water"] + } + ] + }, + "wugtrio": { + "level": 92, + "sets": [ + { + "role": "Choice Item user", + "movepool": ["Aqua Jet", "Liquidation", "Stomping Tantrum", "Throat Chop"], + "abilities": ["Gooey"], + "teraTypes": ["Dark", "Ground", "Water"] + }, + { + "role": "Wallbreaker", + "movepool": ["Liquidation", "Pain Split", "Protect", "Stomping Tantrum", "Throat Chop"], + "abilities": ["Gooey"], + "teraTypes": ["Dark", "Ground", "Water"] + } + ] + }, + "bombirdier": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Brave Bird", "Knock Off", "Parting Shot", "Protect", "Roost", "Stealth Rock", "Sucker Punch"], + "abilities": ["Big Pecks"], + "teraTypes": ["Steel"] + }, + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Knock Off", "Protect", "Rock Slide"], + "abilities": ["Rocky Payload"], + "teraTypes": ["Rock"] + } + ] + }, + "palafin": { + "level": 78, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Flip Turn", "Jet Punch", "Wave Crash"], + "abilities": ["Zero to Hero"], + "teraTypes": ["Fighting", "Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Flip Turn", "Jet Punch", "Protect", "Wave Crash"], + "abilities": ["Zero to Hero"], + "teraTypes": ["Fighting", "Steel", "Water"] + }, + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Drain Punch", "Jet Punch", "Protect"], + "abilities": ["Zero to Hero"], + "teraTypes": ["Fighting", "Steel"] + } + ] + }, + "revavroom": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Gunk Shot", "High Horsepower", "Parting Shot", "Protect"], + "abilities": ["Filter"], + "teraTypes": ["Flying", "Ground"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Gunk Shot", "High Horsepower", "Protect", "Shift Gear"], + "abilities": ["Filter"], + "teraTypes": ["Ground"] + } + ] + }, + "cyclizar": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Hyper Voice", "Knock Off", "Rapid Spin", "Shed Tail"], + "abilities": ["Regenerator"], + "teraTypes": ["Fairy"] + }, + { + "role": "Fast Attacker", + "movepool": ["Draco Meteor", "Protect", "Rapid Spin", "Shed Tail"], + "abilities": ["Regenerator"], + "teraTypes": ["Fairy"] + }, + { + "role": "Fast Attacker", + "movepool": ["Body Slam", "Knock Off", "Shed Tail", "Taunt"], + "abilities": ["Regenerator"], + "teraTypes": ["Fairy"] + } + ] + }, + "orthworm": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Heavy Slam", "Iron Defense", "Protect", "Stealth Rock", "Spikes"], + "abilities": ["Earth Eater"], + "teraTypes": ["Fighting"] + }, + { + "role": "Fast Attacker", + "movepool": ["Body Press", "Heavy Slam", "Protect", "Shed Tail"], + "abilities": ["Earth Eater"], + "teraTypes": ["Electric", "Fighting"] + } + ] + }, + "glimmora": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Earth Power", "Mortal Spin", "Spiky Shield", "Stealth Rock", "Spikes"], + "abilities": ["Corrosion"], + "teraTypes": ["Ground"] + }, + { + "role": "AV Pivot", + "movepool": ["Earth Power", "Mortal Spin", "Power Gem", "Sludge Bomb"], + "abilities": ["Corrosion"], + "teraTypes": ["Grass", "Ground"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Earth Power", "Mortal Spin", "Power Gem", "Spiky Shield"], + "abilities": ["Corrosion"], + "teraTypes": ["Grass", "Ground", "Water"] + } + ] + }, + "houndstone": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Pain Split", "Poltergeist", "Protect", "Roar", "Shadow Sneak", "Will-O-Wisp"], + "abilities": ["Fluffy"], + "teraTypes": ["Fighting"] + } + ] + }, + "flamigo": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Acrobatics", "Close Combat", "Protect", "Roost", "Swords Dance", "Throat Chop"], + "abilities": ["Scrappy"], + "teraTypes": ["Dark", "Fighting", "Flying", "Steel"] + }, + { + "role": "Choice Item user", + "movepool": ["Brave Bird", "Close Combat", "Dual Wingbeat", "U-turn"], + "abilities": ["Scrappy"], + "teraTypes": ["Dark", "Fighting", "Flying", "Steel"] + } + ] + }, + "cetitan": { + "level": 83, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Ice Shard", "Icicle Crash", "Liquidation", "Protect"], + "abilities": ["Sheer Force"], + "teraTypes": ["Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["High Horsepower", "Ice Shard", "Ice Spinner", "Protect"], + "abilities": ["Thick Fat"], + "teraTypes": ["Ground"] + } + ] + }, + "veluza": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Aqua Cutter", "Aqua Jet", "Night Slash", "Protect", "Psycho Cut", "Recover"], + "abilities": ["Sharpness"], + "teraTypes": ["Dark", "Fairy", "Water"] + } + ] + }, + "dondozo": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Avalanche", "Body Press", "Heavy Slam", "Protect", "Wave Crash"], + "abilities": ["Unaware"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Setup", + "movepool": ["Curse", "Rest", "Sleep Talk", "Wave Crash"], + "abilities": ["Unaware"], + "teraTypes": ["Dragon", "Fairy", "Steel"] + } + ] + }, + "tatsugiri": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Draco Meteor", "Hydro Pump", "Nasty Plot", "Protect", "Rapid Spin", "Surf"], + "abilities": ["Storm Drain"], + "teraTypes": ["Dragon", "Fire", "Water"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Draco Meteor", "Nasty Plot", "Rapid Spin", "Surf", "Taunt"], + "abilities": ["Storm Drain"], + "teraTypes": ["Dragon", "Fire", "Water"] + }, + { + "role": "AV Pivot", + "movepool": ["Draco Meteor", "Hydro Pump", "Rapid Spin", "Surf"], + "abilities": ["Storm Drain"], + "teraTypes": ["Dragon", "Fire", "Water"] + } + ] + }, + "farigiraf": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Hyper Voice", "High Horsepower", "Psychic", "Trick Room"], + "abilities": ["Armor Tail", "Cud Chew", "Sap Sipper"], + "teraTypes": ["Normal", "Fairy", "Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["Body Slam", "Future Sight", "Protect", "Wish"], + "abilities": ["Sap Sipper"], + "teraTypes": ["Fairy"] + }, + { + "role": "Imprisoner", + "movepool": ["Hyper Voice", "Imprison", "Protect", "Wish"], + "abilities": ["Sap Sipper"], + "teraTypes": ["Fairy"] + } + ] + }, + "dudunsparce": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Boomburst", "Dragon Tail", "Earth Power", "Glare", "Hyper Drill", "Protect", "Roost", "Stealth Rock"], + "abilities": ["Rattled"], + "teraTypes": ["Ghost", "Ground", "Normal"] + }, + { + "role": "Bulky Setup", + "movepool": ["Coil", "Dragon Tail", "Drill Run", "Hyper Drill", "Roost"], + "abilities": ["Rattled"], + "teraTypes": ["Ghost", "Ground", "Poison"] + }, + { + "role": "Bulky Setup", + "movepool": ["Boomburst", "Calm Mind", "Earth Power", "Roost", "Shadow Ball"], + "abilities": ["Rattled"], + "teraTypes": ["Ghost", "Ground", "Normal"] + } + ] + }, + "kingambit": { + "level": 77, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Iron Head", "Kowtow Cleave", "Protect", "Sucker Punch", "Swords Dance"], + "abilities": ["Defiant", "Supreme Overlord"], + "teraTypes": ["Flying", "Ghost"] + } + ] + }, + "greattusk": { + "level": 79, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Close Combat", "Earthquake", "Headlong Rush", "Ice Spinner", "Knock Off", "Protect", "Rapid Spin", "Stealth Rock"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Steel"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Bulk Up", "High Horsepower", "Ice Spinner", "Rapid Spin"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Steel"] + } + ] + }, + "brutebonnet": { + "level": 85, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Close Combat", "Crunch", "Protect", "Seed Bomb", "Stun Spore", "Sucker Punch", "Synthesis"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Fighting", "Ghost", "Poison"] + } + ] + }, + "sandyshocks": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Earth Power", "Protect", "Spikes", "Stealth Rock", "Thunderbolt", "Thunder Wave", "Volt Switch"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Grass"] + } + ] + }, + "screamtail": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Encore", "Play Rough", "Protect", "Roar", "Thunder Wave", "Wish"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Play Rough", "Protect", "Wish"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Steel"] + } + ] + }, + "fluttermane": { + "level": 74, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Calm Mind", "Dazzling Gleam", "Moonblast", "Mystical Fire", "Perish Song", "Protect", "Shadow Ball", "Taunt", "Thunder Wave"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Fairy", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Moonblast", "Protect", "Shadow Ball"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Fairy", "Steel"] + } + ] + }, + "slitherwing": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Flare Blitz", "High Horsepower", "Leech Life", "Morning Sun", "Protect", "U-turn", "Wild Charge", "Will-O-Wisp"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Electric", "Fighting", "Fire", "Steel", "Water"] + }, + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "First Impression", "Protect", "U-turn"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Bug"] + } + ] + }, + "roaringmoon": { + "level": 75, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Acrobatics", "Jaw Lock", "Knock Off", "Protect", "Roost", "Stomping Tantrum", "Taunt"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Flying"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Acrobatics", "Dragon Dance", "Jaw Lock", "Knock Off", "Protect"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Flying"] + }, + { + "role": "AV Pivot", + "movepool": ["Breaking Swipe", "Dragon Claw", "Dragon Tail", "Iron Head", "Jaw Lock", "Knock Off", "Stomping Tantrum", "U Turn"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Dark", "Poison", "Steel"] + } + ] + }, + "irontreads": { + "level": 78, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earthquake", "High Horsepower", "Iron Head", "Knock Off", "Protect", "Rapid Spin", "Stealth Rock", "Stone Edge"], + "abilities": ["Quark Drive"], + "teraTypes": ["Water"] + } + ] + }, + "ironmoth": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Discharge", "Energy Ball", "Fiery Dance", "Fire Blast", "Morning Sun", "Protect", "Sludge Wave"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fire", "Grass", "Poison"] + } + ] + }, + "ironhands": { + "level": 79, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Close Combat", "Drain Punch", "Heavy Slam", "Ice Punch", "Protect", "Swords Dance", "Thunder Punch", "Volt Switch", "Wild Charge"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting", "Flying", "Steel"] + } + ] + }, + "ironjugulis": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dark Pulse", "Earth Power", "Hurricane", "Protect", "Taunt", "U-turn"], + "abilities": ["Quark Drive"], + "teraTypes": ["Dark", "Ground", "Steel"] + }, + { + "role": "Choice Item user", + "movepool": ["Dark Pulse", "Earth Power", "Hurricane", "U-turn"], + "abilities": ["Quark Drive"], + "teraTypes": ["Ground"] + } + ] + }, + "ironthorns": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["High Horsepower", "Ice Punch", "Protect", "Rock Slide", "Spikes", "Stealth Rock", "Thunder Punch", "Thunder Wave", "Volt Switch", "Wild Charge"], + "abilities": ["Quark Drive"], + "teraTypes": ["Flying", "Grass"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Dragon Dance", "High Horsepower", "Protect", "Stone Edge"], + "abilities": ["Quark Drive"], + "teraTypes": ["Flying", "Grass"] + } + ] + }, + "ironbundle": { + "level": 77, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Encore", "Flip Turn", "Freeze-Dry", "Hydro Pump", "Ice Beam", "Protect"], + "abilities": ["Quark Drive"], + "teraTypes": ["Dragon", "Ice", "Water"] + } + ] + }, + "ironvaliant": { + "level": 79, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Dazzling Gleam", "Encore", "Knock Off", "Moonblast", "Protect", "Psychic"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fairy", "Fighting", "Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Aura Sphere", "Imprison", "Moonblast", "Protect"], + "abilities": ["Quark Drive"], + "teraTypes": ["Steel"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Protect", "Spirit Break", "Swords Dance"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting", "Steel"] + } + ] + }, + "baxcalibur": { + "level": 77, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Dragon Dance", "High Horsepower", "Icicle Spear", "Protect"], + "abilities": ["Thermal Exchange"], + "teraTypes": ["Ground"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Icicle Spear", "Protect", "Scale Shot", "Swords Dance"], + "abilities": ["Thermal Exchange"], + "teraTypes": ["Fairy", "Poison", "Water"] + } + ] + }, + "gholdengo": { + "level": 77, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Focus Blast", "Make It Rain", "Protect", "Recover", "Shadow Ball", "Thunder Wave"], + "abilities": ["Good as Gold"], + "teraTypes": ["Fairy", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Focus Blast", "Make It Rain", "Nasty Plot", "Protect", "Recover", "Shadow Ball"], + "abilities": ["Good as Gold"], + "teraTypes": ["Fairy", "Fighting", "Water"] + }, + { + "role": "Choice Item user", + "movepool": ["Make It Rain", "Shadow Ball", "Thunder Wave", "Trick"], + "abilities": ["Good as Gold"], + "teraTypes": ["Steel", "Water"] + } + ] + }, + "tinglu": { + "level": 80, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earthquake", "Protect", "Ruination", "Spikes", "Stealth Rock", "Throat Chop", "Whirlwind"], + "abilities": ["Vessel of Ruin"], + "teraTypes": ["Fairy", "Poison", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Protect", "Ruination", "Spikes", "Stealth Rock", "Stomping Tantrum", "Whirlwind"], + "abilities": ["Vessel of Ruin"], + "teraTypes": ["Fairy", "Poison", "Water"] + } + ] + }, + "chienpao": { + "level": 74, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Crunch", "Ice Shard", "Icicle Crash", "Protect", "Sacred Sword"], + "abilities": ["Sword of Ruin"], + "teraTypes": ["Dark", "Fighting", "Ice"] + }, + { + "role": "Fast Attacker", + "movepool": ["Crunch", "Icicle Crash", "Protect", "Recover", "Sucker Punch", "Swords Dance"], + "abilities": ["Sword of Ruin"], + "teraTypes": ["Dark", "Ghost", "Ice"] + } + ] + }, + "wochien": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Giga Drain", "Knock Off", "Leech Seed", "Protect", "Ruination", "Stun Spore", "Taunt"], + "abilities": ["Tablets of Ruin"], + "teraTypes": ["Poison"] + } + ] + }, + "chiyu": { + "level": 75, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Dark Pulse", "Fire Blast", "Lava Plume", "Nasty Plot", "Protect"], + "abilities": ["Beads of Ruin"], + "teraTypes": ["Fire"] + }, + { + "role": "Choice Item user", + "movepool": ["Dark Pulse", "Fire Blast", "Heat Wave", "Overheat"], + "abilities": ["Beads of Ruin"], + "teraTypes": ["Fire"] + } + ] + }, + "koraidon": { + "level": 67, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Collision Course", "Dragon Claw", "Flare Blitz", "Protect"], + "abilities": ["Orichalcum Pulse"], + "teraTypes": ["Fire"] + }, + { + "role": "Choice Item user", + "movepool": ["Collision Course", "Dragon Claw", "Flare Blitz", "U-turn"], + "abilities": ["Orichalcum Pulse"], + "teraTypes": ["Fire"] + } + ] + }, + "miraidon": { + "level": 65, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Calm Mind", "Discharge", "Draco Meteor", "Dragon Pulse", "Electro Drift", "Protect", "Volt Switch"], + "abilities": ["Hadron Engine"], + "teraTypes": ["Electric"] + }, + { + "role": "Wallbreaker", + "movepool": ["Discharge", "Draco Meteor", "Electro Drift", "Overheat", "Protect", "Volt Switch"], + "abilities": ["Hadron Engine"], + "teraTypes": ["Electric"] + } + ] + }, + "walkingwake": { + "level": 78, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Draco Meteor", "Hydro Pump", "Protect", "Surf"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Water"] + }, + { + "role": "Choice Item user", + "movepool": ["Draco Meteor", "Flip Turn", "Hydro Pump", "Surf"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Water"] + }, + { + "role": "Fast Attacker", + "movepool": ["Draco Meteor", "Flamethrower", "Hydro Pump", "Protect"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Fire"] + } + ] + }, + "ironleaves": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Close Combat", "Leaf Blade", "Protect", "Psyblade", "Swords Dance"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting", "Steel"] + }, + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Leaf Blade", "Megahorn", "Psyblade"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Leaf Blade", "Protect", "Psyblade"], + "abilities": ["Quark Drive"], + "teraTypes": ["Steel"] + } + ] + }, + "dipplin": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Dragon Pulse", "Dragon Tail", "Giga Drain", "Protect", "Recover"], + "abilities": ["Sticky Hold"], + "teraTypes": ["Steel"] + } + ] + }, + "sinistcha": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Calm Mind", "Matcha Gotcha", "Protect", "Shadow Ball", "Strength Sap"], + "abilities": ["Heatproof"], + "teraTypes": ["Steel"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Matcha Gotcha", "Protect", "Shadow Ball"], + "abilities": ["Heatproof"], + "teraTypes": ["Steel"] + } + ] + }, + "okidogi": { + "level": 80, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Drain Punch", "Gunk Shot", "Knock Off"], + "abilities": ["Guard Dog"], + "teraTypes": ["Dark"] + }, + { + "role": "Choice Item user", + "movepool": ["Close Combat", "Drain Punch", "Gunk Shot", "High Horsepower", "Knock Off"], + "abilities": ["Guard Dog"], + "teraTypes": ["Dark", "Ground"] + }, + { + "role": "AV Pivot", + "movepool": ["Drain Punch", "Gunk Shot", "High Horsepower", "Knock Off", "Snarl"], + "abilities": ["Guard Dog"], + "teraTypes": ["Dark"] + } + ] + }, + "munkidori": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Focus Blast", "Future Sight", "Nasty Plot", "Parting Shot", "Protect", "Psychic", "Sludge Bomb"], + "abilities": ["Frisk"], + "teraTypes": ["Dark", "Fighting"] + }, + { + "role": "Wallbreaker", + "movepool": ["Focus Blast", "Psychic", "Sludge Bomb", "Sludge Wave", "U-turn"], + "abilities": ["Frisk"], + "teraTypes": ["Fighting"] + }, + { + "role": "Imprisoner", + "movepool": ["Imprison", "Protect", "Psychic", "Psychic Noise", "Sludge Wave"], + "abilities": ["Frisk"], + "teraTypes": ["Dark"] + } + ] + }, + "fezandipiti": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Double Kick", "Gunk Shot", "Moonblast", "Poison Gas", "Protect", "Roost"], + "abilities": ["Technician"], + "teraTypes": ["Dark", "Steel"] + } + ] + }, + "ogerpon": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Ivy Cudgel", "Knock Off", "Spikes", "Spiky Shield", "Superpower", "U-turn"], + "abilities": ["Defiant"], + "teraTypes": ["Grass"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Ivy Cudgel", "Knock Off", "Leech Seed", "Spiky Shield", "U-turn"], + "abilities": ["Defiant"], + "teraTypes": ["Grass"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Ivy Cudgel", "Knock Off", "Spiky Shield", "Swords Dance"], + "abilities": ["Defiant"], + "teraTypes": ["Grass"] + } + ] + }, + "ogerponwellspring": { + "level": 77, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Encore", "Horn Leech", "Ivy Cudgel", "Knock Off", "Power Whip", "Spikes", "Spiky Shield", "Synthesis", "U-turn"], + "abilities": ["Water Absorb"], + "teraTypes": ["Water"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Horn Leech", "Ivy Cudgel", "Spiky Shield", "Swords Dance"], + "abilities": ["Water Absorb"], + "teraTypes": ["Water"] + } + ] + }, + "ogerponhearthflame": { + "level": 74, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Horn Leech", "Ivy Cudgel", "Spiky Shield", "Swords Dance"], + "abilities": ["Mold Breaker"], + "teraTypes": ["Fire"] + } + ] + }, + "ogerponcornerstone": { + "level": 76, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Encore", "Horn Leech", "Ivy Cudgel", "Knock Off", "Power Whip", "Spikes", "Spiky Shield", "Superpower", "Synthesis", "U-turn"], + "abilities": ["Sturdy"], + "teraTypes": ["Rock"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Horn Leech", "Ivy Cudgel", "Spiky Shield", "Swords Dance"], + "abilities": ["Sturdy"], + "teraTypes": ["Rock"] + } + ] + }, + "archaludon": { + "level": 77, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Press", "Breaking Swipe", "Draco Meteor", "Dragon Pulse", "Dragon Tail", "Flash Cannon", "Rest"], + "abilities": ["Stamina"], + "teraTypes": ["Fighting"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Body Press", "Draco Meteor", "Flash Cannon", "Protect", "Roar", "Stealth Rock", "Thunder Wave"], + "abilities": ["Stamina"], + "teraTypes": ["Fairy", "Flying"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Dragon Pulse", "Electro Shot", "Flash Cannon", "Protect"], + "abilities": ["Stamina"], + "teraTypes": ["Fairy", "Flying"] + } + ] + }, + "hydrapple": { + "level": 84, + "sets": [ + { + "role": "AV Pivot", + "movepool": ["Draco Meteor", "Dragon Tail", "Earth Power", "Giga Drain"], + "abilities": ["Regenerator"], + "teraTypes": ["Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Earth Power", "Fickle Beam", "Giga Drain", "Leaf Storm", "Protect", "Recover"], + "abilities": ["Regenerator"], + "teraTypes": ["Steel"] + } + ] + }, + "gougingfire": { + "level": 75, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Burning Bulwark", "Dragon Claw", "Dragon Dance", "Heat Crash"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Fairy"] + }, + { + "role": "Bulky Support", + "movepool": ["Burning Bulwark", "Dragon Tail", "Heat Crash", "Lava Plume", "Morning Sun"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Fairy"] + } + ] + }, + "ragingbolt": { + "level": 78, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Calm Mind", "Draco Meteor", "Dragon Pulse", "Dragon Tail", "Protect", "Thunderbolt", "Thunderclap"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Electric", "Fairy"] + }, + { + "role": "Wallbreaker", + "movepool": ["Calm Mind", "Discharge", "Draco Meteor", "Dragon Pulse", "Dragon Tail", "Protect", "Thunderclap"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Electric", "Fairy"] + } + ] + }, + "ironboulder": { + "level": 77, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Close Combat", "Mighty Cleave", "Protect", "Zen Headbutt"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Close Combat", "Mighty Cleave", "Protect", "Swords Dance"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting"] + } + ] + }, + "ironcrown": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Calm Mind", "Focus Blast", "Future Sight", "Protect", "Psychic", "Psychic Noise", "Tachyon Cutter", "Volt Switch"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting", "Steel", "Water"] + }, + { + "role": "Wallbreaker", + "movepool": ["Focus Blast", "Psychic", "Psyshock", "Tachyon Cutter", "Volt Switch"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting", "Steel"] + }, + { + "role": "AV Pivot", + "movepool": ["Focus Blast", "Future Sight", "Tachyon Cutter", "Volt Switch"], + "abilities": ["Quark Drive"], + "teraTypes": ["Fighting", "Steel"] + } + ] + }, + "terapagos": { + "level": 75, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Dark Pulse", "Earth Power", "Tera Starstorm", "Tri Attack"], + "abilities": ["Tera Shift"], + "teraTypes": ["Stellar"] + }, + { + "role": "Bulky Support", + "movepool": ["Calm Mind", "Dark Pulse", "Protect", "Rapid Spin", "Tera Starstorm"], + "abilities": ["Tera Shift"], + "teraTypes": ["Stellar"] + } + ] + }, + "pecharunt": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Hex", "Poison Gas", "Protect", "Sludge Bomb"], + "abilities": ["Poison Puppeteer"], + "teraTypes": ["Dark"] + }, + { + "role": "Bulky Support", + "movepool": ["Hex", "Poison Gas", "Recover", "Sludge Bomb"], + "abilities": ["Poison Puppeteer"], + "teraTypes": ["Dark"] + } + ] + } +} \ No newline at end of file diff --git a/data/random-battles/gen9ffa/teams.ts b/data/random-battles/gen9ffa/teams.ts new file mode 100644 index 0000000000..e2a34e2a84 --- /dev/null +++ b/data/random-battles/gen9ffa/teams.ts @@ -0,0 +1,1091 @@ +import type { PRNG, PRNGSeed } from "../../../sim/prng"; +import { RandomTeams, type MoveCounter } from "../gen9/teams"; + +// First, some lists of moves that can be used for rules throughout set generation. Taken from regular gen9. + +// Moves that shouldn't be the only STAB moves: +// (bulldoze added) +const NO_STAB = [ + 'accelerock', 'aquajet', 'bounce', 'breakingswipe', 'bulldoze', 'bulletpunch', 'chatter', 'chloroblast', 'clearsmog', 'covet', + 'dragontail', 'doomdesire', 'electroweb', 'eruption', 'explosion', 'fakeout', 'feint', 'flamecharge', 'flipturn', 'futuresight', + 'grassyglide', 'iceshard', 'icywind', 'incinerate', 'infestation', 'machpunch', 'meteorbeam', 'mortalspin', 'nuzzle', 'pluck', 'pursuit', + 'quickattack', 'rapidspin', 'reversal', 'selfdestruct', 'shadowsneak', 'skydrop', 'snarl', 'strugglebug', 'suckerpunch', 'thunderclap', 'trailblaze', + 'uturn', 'vacuumwave', 'voltswitch', 'watershuriken', 'waterspout', +]; + +// Hazard-setting moves +const HAZARDS = [ + 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes', +]; + +// Protect and its variants +const PROTECT_MOVES = [ + 'banefulbunker', 'burningbulwark', 'protect', 'silktrap', 'spikyshield', +]; + +// Moves that switch the user out +const PIVOT_MOVES = [ + 'chillyreception', 'flipturn', 'partingshot', 'shedtail', 'teleport', 'uturn', 'voltswitch', +]; + +// Moves that boost Attack: +const PHYSICAL_SETUP = [ + 'bellydrum', 'bulkup', 'coil', 'curse', 'dragondance', 'honeclaws', 'howl', 'meditate', 'poweruppunch', 'swordsdance', 'tidyup', 'victorydance', +]; + +// Moves which boost Special Attack: +const SPECIAL_SETUP = [ + 'calmmind', 'chargebeam', 'geomancy', 'nastyplot', 'quiverdance', 'tailglow', 'takeheart', 'torchsong', +]; + +// Moves that restore HP: +const RECOVERY_MOVES = [ + 'healorder', 'milkdrink', 'moonlight', 'morningsun', 'recover', 'roost', 'shoreup', 'slackoff', 'softboiled', 'strengthsap', 'synthesis', +]; + +// Setup (stat-boosting) moves +const SETUP = [ + 'acidarmor', 'agility', 'autotomize', 'bellydrum', 'bulkup', 'calmmind', 'clangoroussoul', 'coil', 'cosmicpower', 'curse', 'defensecurl', + 'dragondance', 'flamecharge', 'growth', 'honeclaws', 'howl', 'irondefense', 'meditate', 'nastyplot', 'noretreat', 'poweruppunch', + 'quiverdance', 'raindance', 'rockpolish', 'shellsmash', 'shiftgear', 'snowscape', 'sunnyday', 'swordsdance', 'tailglow', 'tidyup', + 'trailblaze', 'workup', 'victorydance', +]; + +// Some moves that only boost Speed: +const SPEED_SETUP = [ + 'agility', 'autotomize', 'flamecharge', 'rockpolish', 'trailblaze', +]; + +// Moves that would want to generate together +const MOVE_PAIRS = [ + ['lightscreen', 'reflect'], + ['sleeptalk', 'rest'], + ['protect', 'wish'], + // FFA: + ['protect', 'leechseed'], + ['icebeam', 'thunderbolt'], +]; + +/** Pokemon who always want priority STAB, and are fine with it as its only STAB move of that type */ +const PRIORITY_POKEMON = [ + 'breloom', 'brutebonnet', 'cacturne', 'honchkrow', 'kingambit', 'palafin', 'rillaboom', 'scizor', +]; + +/** Pokemon who should never be in the lead slot */ +const NO_LEAD_POKEMON = [ + 'Roaring Moon', 'Zacian', 'Zamazenta', +]; + +// Specific to FFA +// Spread moves are only enforced as STABs when a non-spread STAB of that type is unavailable +const SPREAD = [ + "Acid", "Air Cutter", "Astral Barrage", "Bleakwind Storm", "Blizzard", "Breaking Swipe", "Brutal Swing", + "Bulldoze", "Burning Jealousy", "Clanging Scales", "Dazzling Gleam", "Diamond Storm", "Disarming Voice", "Discharge", + "Dragon Energy", "Earthquake", "Electroweb", "Eruption", "Explosion", "Fiery Wrath", "Glacial Lance", "Glaciate", + "Heat Wave", "Hyper Voice", "Icy Wind", "Incinerate", "Lava Plume", "Make It Rain", "Matcha Gotcha", "Misty Explosion", + "Mortal Spin", "Muddy Water", "Origin Pulse", "Overdrive", "Parabolic Charge", "Petal Blizzard", "Powder Snow", + "Precipice Blades", "Razor Leaf", "Relic Song", "Rock Slide", "Sandsear Storm", "Self-Destruct", "Sludge Wave", "Snarl", + "Sparkling Aria", "Springtide Storm", "Struggle Bug", "Surf", "Swift", "Twister", "Water Spout", "Wildbolt Storm", +]; + +export class RandomFFATeams extends RandomTeams { + constructor(format: Format | string, prng: PRNG | PRNGSeed | null) { + super(format, prng); + + this.noStab = NO_STAB; + + // Overwrite enforcementcheckers where needed here + this.moveEnforcementCheckers['Grass'] = (movePool, moves, abilities, types, counter, species) => ( + !counter.get('Grass') && ( + movePool.includes('leafstorm') || species.baseStats.atk >= 100 || + types.includes('Electric') || abilities.includes('Seed Sower') || + species.id === 'ludicolo' + ) + ); + this.moveEnforcementCheckers['Steel'] = (movePool, moves, abilities, types, counter, species) => ( + !counter.get('Steel') && !(['Empoleon', 'Magearna', 'Bronzong'].includes(species.baseSpecies)) + ); + } + + override cullMovePool( + types: string[], + moves: Set, + abilities: string[], + counter: MoveCounter, + movePool: string[], + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + isDoubles: boolean, + teraType: string, + role: RandomTeamsTypes.Role, + ): void { + if (moves.size + movePool.length <= this.maxMoveCount) return; + // If we have two unfilled moves and only one unpaired move, cull the unpaired move. + if (moves.size === this.maxMoveCount - 2) { + const unpairedMoves = [...movePool]; + for (const pair of MOVE_PAIRS) { + if (movePool.includes(pair[0]) && movePool.includes(pair[1])) { + this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[0])); + this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[1])); + } + } + if (unpairedMoves.length === 1) { + this.fastPop(movePool, movePool.indexOf(unpairedMoves[0])); + } + } + + // These moves are paired, and shouldn't appear if there is not room for them both. + if (moves.size === this.maxMoveCount - 1) { + for (const pair of MOVE_PAIRS) { + if (movePool.includes(pair[0]) && movePool.includes(pair[1])) { + this.fastPop(movePool, movePool.indexOf(pair[0])); + this.fastPop(movePool, movePool.indexOf(pair[1])); + } + } + } + + // Team-based move culls + if (teamDetails.screens) { + if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil')); + if (movePool.length >= this.maxMoveCount + 2) { + if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect')); + if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen')); + } + } + if (teamDetails.stickyWeb) { + if (movePool.includes('stickyweb')) this.fastPop(movePool, movePool.indexOf('stickyweb')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.stealthRock) { + if (movePool.includes('stealthrock')) this.fastPop(movePool, movePool.indexOf('stealthrock')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.defog || teamDetails.rapidSpin) { + if (movePool.includes('defog')) this.fastPop(movePool, movePool.indexOf('defog')); + if (movePool.includes('rapidspin')) this.fastPop(movePool, movePool.indexOf('rapidspin')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.spikes && teamDetails.spikes >= 2) { + if (movePool.includes('spikes')) this.fastPop(movePool, movePool.indexOf('spikes')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.statusCure) { + if (movePool.includes('healbell')) this.fastPop(movePool, movePool.indexOf('healbell')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + + // General incompatibilities + const incompatiblePairs = [ + // These moves don't mesh well with other aspects of the set + // [statusMoves, ['healingwish', 'switcheroo', 'trick']], // does nothing + [SETUP, PIVOT_MOVES], + + [SETUP, ['defog', 'haze']], + [PHYSICAL_SETUP, PHYSICAL_SETUP], + [SPECIAL_SETUP, SPECIAL_SETUP], + ['substitute', PIVOT_MOVES], + [SPEED_SETUP, ['aquajet', 'rest', 'trickroom']], + [['icywind', 'thunderwave'], 'trickroom'], + + // These attacks are redundant with each other + [['psychic', 'psychicnoise'], ['psyshock', 'psychicnoise']], + [['liquidation', 'scald'], ['wavecrash', 'hyrdopump']], + [['gigadrain', 'leafstorm'], ['leafstorm', 'energyball']], + ['powerwhip', 'hornleech'], + ['airslash', 'hurricane'], + ['knockoff', ['jawlock', 'foulplay']], + ['throatchop', ['crunch', 'foulplay']], + ['doubleedge', ['bodyslam', 'headbutt']], + ['fireblast', ['fierydance', 'flamethrower']], + ['thunderpunch', 'wildcharge'], + ['thunderbolt', 'thundercage'], + ['gunkshot', 'poisonjab'], + ['aurasphere', 'focusblast'], + ['closecombat', 'drainpunch'], + [['dragonpulse', 'spacialrend'], 'dracometeor'], + ['alluringvoice', 'dazzlinggleam'], + ['surf', 'muddywater'], + ['nuzzle', 'discharge'], + ['phantomforce', ['poltergeist', 'shadowball']], + ['bugbite', 'pounce'], + + // These status moves are redundant with each other + ['taunt', ['disable', 'encore']], + ['thunderwave', 'willowisp'], + ['lifedew', 'wish'], + ['rest', 'protect'], + ['bulkup', 'irondefense'], + + // This space reserved for assorted hardcodes that otherwise make little sense out of context + // Chansey and Blissey + ['healbell', 'stealthrock'], + // Smeargle + [PROTECT_MOVES, PROTECT_MOVES], + // Slaking + ['roar', 'slackoff'], + // Shiftry + ['lowkick', 'petalblizzard'], + ]; + + for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); + + if (!types.includes('Ice')) this.incompatibleMoves(moves, movePool, 'icebeam', 'icywind'); + + if (!types.includes('Dark') && teraType !== 'Dark') this.incompatibleMoves(moves, movePool, 'knockoff', 'suckerpunch'); + + if (!types.includes('Rock')) this.incompatibleMoves(moves, movePool, 'rockslide', 'stoneedge'); + + if (!types.includes('Ground')) this.incompatibleMoves(moves, movePool, 'earthquake', 'stompingtantrum'); + + // This space reserved for assorted hardcodes that otherwise make little sense out of context: + // To force Close Combat on Barraskewda without locking it to Tera Fighting + if (species.id === 'barraskewda') { + this.incompatibleMoves(moves, movePool, ['psychicfangs', 'throatchop'], ['poisonjab', 'throatchop']); + } + + // Defense Curl Blissey makes this complicated + if (species.id !== 'blissey') this.incompatibleMoves(moves, movePool, SETUP, HAZARDS); + // Band-aid fix to enforce Mortal Spin on Glimmora + if (species.id === 'glimmora') this.incompatibleMoves(moves, movePool, 'spikes', 'stealthrock'); + } + + // Generate random moveset for a given species, role, tera type. + override randomMoveset( + types: string[], + abilities: string[], + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + isDoubles: boolean, + movePool: string[], + teraType: string, + role: RandomTeamsTypes.Role, + ): Set { + const moves = new Set(); + let counter = this.queryMoves(moves, species, teraType, abilities); + this.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead, isDoubles, teraType, role); + + // If there are only four moves, add all moves and return early + if (movePool.length <= this.maxMoveCount) { + for (const moveid of movePool) { + moves.add(moveid); + } + return moves; + } + + // Helper function for (STAB-)move enforcement later on + const runEnforcementChecker = (checkerName: string) => { + if (!this.moveEnforcementCheckers[checkerName]) return false; + return this.moveEnforcementCheckers[checkerName]( + movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles, teraType, role + ); + }; + + if (role === 'Tera Blast user') { + counter = this.addMove('terablast', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + if (role === 'Imprisoner') { + counter = this.addMove('imprison', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Add required move (e.g. Relic Song for Meloetta-P) + if (species.requiredMove) { + const move = this.dex.moves.get(species.requiredMove).id; + counter = this.addMove(move, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Add other moves you really want to have, e.g. STAB, recovery, setup. + + // Enforce Facade if Guts is a possible ability + if (movePool.includes('facade') && abilities.includes('Guts')) { + counter = this.addMove('facade', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Enforce Sticky Web + if (movePool.includes('stickyweb')) { + counter = this.addMove('stickyweb', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Enforce Aurora Veil + if (movePool.includes('auroraveil')) { + counter = this.addMove('auroraveil', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Enforce hazard removal on Bulky Support if the team doesn't already have it + if (role === 'Bulky Support' && !teamDetails.defog && !teamDetails.rapidSpin) { + if (movePool.includes('rapidspin')) { + counter = this.addMove('rapidspin', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + if (movePool.includes('defog')) { + counter = this.addMove('defog', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce Knock Off on pure Normal- and Fighting-types + if (types.length === 1 && (types.includes('Normal') || types.includes('Fighting'))) { + if (movePool.includes('knockoff')) { + counter = this.addMove('knockoff', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce Rock Slide on Wallbreaker Rock types + if (types.includes('Rock') && role === 'Wallbreaker') { + if (movePool.includes('rockslide')) { + counter = this.addMove('rockslide', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce STAB priority + if (role === 'Wallbreaker' || PRIORITY_POKEMON.includes(species.id)) { + const priorityMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if ( + types.includes(moveType) && (move.priority > 0 || (moveid === 'grassyglide' && abilities.includes('Grassy Surge'))) && + (move.basePower || move.basePowerCallback) + ) { + priorityMoves.push(moveid); + } + } + if (priorityMoves.length) { + const moveid = this.sample(priorityMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce STAB + for (const type of types) { + // Check if a STAB move of that type should be required + let stabMoves: string[] = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) { + stabMoves.push(moveid); + } + } + // Don't enforce spread STAB if non-spread STAB is available + const nonSpreadSTAB = stabMoves.filter(s => !SPREAD.includes(s)); + if (nonSpreadSTAB.length) stabMoves = nonSpreadSTAB; + while (runEnforcementChecker(type)) { + if (!stabMoves.length) break; + const moveid = this.sampleNoReplace(stabMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce Tera STAB on all roles + if (!counter.get('stabtera')) { + let stabMoves: string[] = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && teraType === moveType) { + stabMoves.push(moveid); + } + } + // Don't enforce spread STAB if non-spread STAB is available + const nonSpreadSTAB = stabMoves.filter(s => !SPREAD.includes(s)); + if (nonSpreadSTAB.length) stabMoves = nonSpreadSTAB; + if (stabMoves.length) { + const moveid = this.sample(stabMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // If no STAB move was added, add a STAB move + if (!counter.get('stab')) { + const stabMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && types.includes(moveType)) { + stabMoves.push(moveid); + } + } + if (stabMoves.length) { + const moveid = this.sample(stabMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce pivoting moves on AV Pivot + if (role === 'AV Pivot') { + const pivotMoves = movePool.filter(moveid => ['uturn', 'voltswitch'].includes(moveid)); + if (pivotMoves.length) { + const moveid = this.sample(pivotMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce recovery + if (['Bulky Support'].includes(role) || ['blissey', 'dudunsparce'].includes(species.id)) { + const recoveryMoves = movePool.filter(moveid => RECOVERY_MOVES.includes(moveid)); + if (recoveryMoves.length) { + const moveid = this.sample(recoveryMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce setup + if (role.includes('Setup') || role === 'Tera Blast user') { + // First, try to add a non-Speed setup move + const nonSpeedSetupMoves = movePool.filter(moveid => SETUP.includes(moveid) && !SPEED_SETUP.includes(moveid)); + if (nonSpeedSetupMoves.length) { + const moveid = this.sample(nonSpeedSetupMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } else { + // No non-Speed setup moves, so add any (Speed) setup move + const setupMoves = movePool.filter(moveid => SETUP.includes(moveid)); + if (setupMoves.length) { + const moveid = this.sample(setupMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + } + + // Enforce Protect + if (!['Bulky Setup', 'Bulky Support'].includes(role)) { + const protectMoves = movePool.filter(moveid => PROTECT_MOVES.includes(moveid)); + if (protectMoves.length) { + const moveid = this.sample(protectMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce a move not on the noSTAB list + if (!counter.damagingMoves.size) { + // Choose an attacking move + const attackingMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + if (!this.noStab.includes(moveid) && (move.category !== 'Status')) attackingMoves.push(moveid); + } + if (attackingMoves.length) { + const moveid = this.sample(attackingMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Add (moves.size < this.maxMoveCount) as a condition if moves is getting larger than 4 moves. + // If you want moves to be favored but not required, add something like && this.randomChance(1, 2) to your condition. + + // Choose remaining moves randomly from movepool and add them to moves list: + while (moves.size < this.maxMoveCount && movePool.length) { + if (moves.size + movePool.length <= this.maxMoveCount) { + for (const moveid of movePool) { + moves.add(moveid); + } + break; + } + const moveid = this.sample(movePool); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + for (const pair of MOVE_PAIRS) { + if (moveid === pair[0] && movePool.includes(pair[1])) { + counter = this.addMove(pair[1], moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + if (moveid === pair[1] && movePool.includes(pair[0])) { + counter = this.addMove(pair[0], moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + } + return moves; + } + + override shouldCullAbility( + ability: string, + types: string[], + moves: Set, + abilities: string[], + counter: MoveCounter, + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + isDoubles: boolean, + teraType: string, + role: RandomTeamsTypes.Role, + ): boolean { + switch (ability) { + // Abilities which are primarily useful for certain moves or with team support + case 'Chlorophyll': case 'Solar Power': + return !teamDetails.sun; + case 'Defiant': + return (species.id === 'thundurus' && !!counter.get('Status')); + case 'Hydration': case 'Swift Swim': + return !teamDetails.rain; + case 'Iron Fist': case 'Skill Link': + return !counter.get(this.dex.toID(ability)); + case 'Overgrow': + return !counter.get('Grass'); + case 'Prankster': + return !counter.get('Status'); + case 'Sand Force': case 'Sand Rush': + return !teamDetails.sand; + case 'Slush Rush': + return !teamDetails.snow; + case 'Swarm': + return !counter.get('Bug'); + case 'Torrent': + return (!counter.get('Water') && !moves.has('flipturn')); + case 'Serene Grace': + return (!counter.get('serenegrace')); + } + + return false; + } + + override getAbility( + types: string[], + moves: Set, + abilities: string[], + counter: MoveCounter, + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + isDoubles: boolean, + teraType: string, + role: RandomTeamsTypes.Role, + ): string { + if (abilities.length <= 1) return abilities[0]; + + const abilityAllowed: string[] = []; + // Obtain a list of abilities that are allowed (not culled) + for (const ability of abilities) { + if (!this.shouldCullAbility( + ability, types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType, role + )) { + abilityAllowed.push(ability); + } + } + + // Pick a random allowed ability + if (abilityAllowed.length >= 1) return this.sample(abilityAllowed); + + // If all abilities are rejected, prioritize weather abilities over non-weather abilities + if (!abilityAllowed.length) { + const weatherAbilities = abilities.filter( + a => ['Chlorophyll', 'Hydration', 'Sand Force', 'Sand Rush', 'Slush Rush', 'Solar Power', 'Swift Swim'].includes(a) + ); + if (weatherAbilities.length) return this.sample(weatherAbilities); + } + + // Pick a random ability + return this.sample(abilities); + } + + override getPriorityItem( + ability: string, + types: string[], + moves: Set, + counter: MoveCounter, + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + isDoubles: boolean, + teraType: string, + role: RandomTeamsTypes.Role, + ) { + if (species.requiredItems) { + // Z-Crystals aren't available in Gen 9, so require Plates + if (species.baseSpecies === 'Arceus') { + return species.requiredItems[0]; + } + return this.sample(species.requiredItems); + } + if (role === 'AV Pivot') return 'Assault Vest'; + if (species.id === 'pikachu') return 'Light Ball'; + if (species.id === 'regieleki') return 'Magnet'; + if (species.id === 'blaziken') return 'Life Orb'; + if (species.id === 'lokix') { + return (role === 'Fast Attacker') ? 'Silver Powder' : 'Life Orb'; + } + if (species.id === 'pawmot') return 'Leppa Berry'; + if (species.id === 'slaking' || (species.id === 'persian' && !!counter.get('Status'))) return 'Silk Scarf'; + if (species.id === 'luvdisc') return 'Binding Band'; + if ((species.name === 'Latias' || species.name === 'Latios')) return 'Soul Dew'; + if ( + ['froslass', 'ambipom'].includes(species.id) || moves.has('populationbomb') || + (ability === 'Hustle' && counter.get('setup') && this.randomChance(1, 2)) + ) return 'Wide Lens'; + if (moves.has('clangoroussoul') || (species.id === 'toxtricity' && moves.has('shiftgear'))) return 'Throat Spray'; + if (species.id === 'necrozmaduskmane' || species.id === 'rhyperior') return 'Weakness Policy'; + if ( + ['dragonenergy', 'waterspout'].some(m => moves.has(m)) || + (species.id === 'rampardos' && role === 'Choice Item user') + ) return 'Choice Scarf'; + if (species.id === 'mabosstiff' && moves.has('jawlock')) return 'Shed Shell'; + if ((species.id === 'terapagos' && moves.has('rapidspin'))) return 'Heavy-Duty Boots'; + if ( + ['Cheek Pouch', 'Cud Chew', 'Harvest', 'Ripen'].some(m => ability === m) || + moves.has('bellydrum') + ) { + return 'Sitrus Berry'; + } + if (['healingwish', 'switcheroo', 'trick'].some(m => moves.has(m))) { + if ( + species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && + role !== 'Wallbreaker' && !counter.get('priority') + ) { + return 'Choice Scarf'; + } else { + return (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs'; + } + } + if (species.id === 'scyther') return (isLead && !moves.has('uturn')) ? 'Eviolite' : 'Heavy-Duty Boots'; + // belt on electivire if it has 2 moves that aren't electric or protect + if (species.id === 'electivire' && counter.get('Electric') < 3 - +moves.has('protect')) return 'Expert Belt'; + if (ability === 'Poison Heal') return 'Toxic Orb'; + if (species.nfe) return 'Eviolite'; + if (moves.has('facade')) { + return (types.includes('Fire') || ability === 'Toxic Boost') ? 'Toxic Orb' : 'Flame Orb'; + } + if (ability === 'Magic Guard' || (ability === 'Sheer Force' && counter.get('sheerforce'))) return 'Life Orb'; + if (moves.has('dragondance')) return 'Clear Amulet'; + if (counter.get('skilllink') && ability !== 'Skill Link' && species.id !== 'breloom') return 'Loaded Dice'; + if (ability === 'Unburden') { + return (moves.has('closecombat') || moves.has('leafstorm')) ? 'White Herb' : 'Sitrus Berry'; + } + if (moves.has('shellsmash') && ability !== 'Weak Armor') return 'White Herb'; + if (moves.has('meteorbeam') || (moves.has('electroshot') && !teamDetails.rain)) return 'Power Herb'; + if (moves.has('acrobatics')) { + return (ability === 'Protosynthesis') ? 'Booster Energy' : ''; + } + if (moves.has('auroraveil') || moves.has('lightscreen') && moves.has('reflect')) return 'Light Clay'; + if (ability === 'Gluttony') return `${this.sample(['Aguav', 'Figy', 'Iapapa', 'Mago', 'Wiki'])} Berry`; + if ( + moves.has('rest') && !moves.has('sleeptalk') && + ability !== 'Natural Cure' && ability !== 'Shed Skin' + ) { + return 'Chesto Berry'; + } + if ( + species.id !== 'yanmega' && + this.dex.getEffectiveness('Rock', species) >= 2 && (!types.includes('Flying')) + ) return 'Heavy-Duty Boots'; + } + + override getItem( + ability: string, + types: string[], + moves: Set, + counter: MoveCounter, + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + teraType: string, + role: RandomTeamsTypes.Role, + ) { + const scarfReqs = species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && !counter.get('priority'); + if (role === 'Choice Item user') { + if (counter.get('Physical') > counter.get('Special')) { + return (scarfReqs && this.randomChance(1, 2)) ? 'Choice Scarf' : 'Choice Band'; + } else { + return (scarfReqs && this.randomChance(1, 2)) ? 'Choice Scarf' : 'Choice Specs'; + } + } + if ( + role === 'Wallbreaker' && + ( + counter.get('Physical') >= moves.size || counter.get('Special') >= moves.size || + (counter.get('Special') === (moves.size - 1) && ['flipturn', 'uturn'].some(m => moves.has(m))) + ) + ) { + return (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs'; + } + if (['blizzard', 'originpulse', 'precipiceblades'].some(m => moves.has(m))) return 'Blunder Policy'; + if (!counter.get('Status') && role !== 'Wallbreaker') { + return 'Assault Vest'; + } + if (this.dex.getEffectiveness('Rock', species) >= 1 || ( + (moves.has('defog') || moves.has('rapidspin')) && + (counter.get('recovery') || ['flipturn', 'partingshot', 'shedtail', 'uturn', 'voltswitch'].some(m => moves.has(m))) + )) { + return 'Heavy-Duty Boots'; + } + if (!role.includes('Bulky') || species.id === 'golduck' && this.prng.randomChance(1, 2)) { + const damagingTypes = [...counter.basePowerMoves].map(m => m.type); + if (counter.basePowerMoves.size >= 2 && (new Set(damagingTypes)).size === 1) { + if (damagingTypes[0] === 'Normal') return 'Silk Scarf'; + return this.dex.species.get('arceus' + damagingTypes[0]).requiredItems![0]; + } + } + if (['Bulky Attacker', 'Bulky Setup', 'Bulky Support'].includes(role) || moves.has('substitute')) return 'Leftovers'; + if ( + (ability === 'Protosynthesis' || ability === 'Quark Drive') && !isLead && !counter.get('hazards') && + species.id !== 'screamtail' && (species.id !== 'ironvaliant' || role !== 'Wallbreaker') && + ['flipturn', 'uturn', 'voltswitch'].every(m => !moves.has(m)) + ) { + return 'Booster Energy'; + } + if (role === 'Imprisoner') return 'Leftovers'; + if (role === 'Wallbreaker') return 'Life Orb'; + return 'Sitrus Berry'; + } + + override getLevel( + species: Species, + ): number { + if (this.adjustLevel) return this.adjustLevel; + return this.randomSets[species.id].level!; + } + + override randomSet( + s: string | Species, + teamDetails: RandomTeamsTypes.TeamDetails = {}, + isLead = false, + isDoubles = false + ): RandomTeamsTypes.RandomSet { + const species = this.dex.species.get(s); + const forme = species.baseSpecies === 'Basculin' ? species.name : this.getForme(species); + const sets = this.randomSets[species.id]["sets"]; + const possibleSets = []; + + const ruleTable = this.dex.formats.getRuleTable(this.format); + + for (const set of sets) { + // Prevent Tera Blast user if the team already has one, or if Terastallizion is prevented. + if ((teamDetails.teraBlast || ruleTable.has('terastalclause')) && set.role === 'Tera Blast user') { + continue; + } + // Prevent Imprisoner if the team already has two + if (!!teamDetails.imprison && teamDetails.imprison >= 2 && set.role === 'Imprisoner') { + continue; + } + possibleSets.push(set); + } + const set = this.sampleIfArray(possibleSets); + const role = set.role; + const movePool: string[] = []; + for (const movename of set.movepool) { + movePool.push(this.dex.moves.get(movename).id); + } + const teraTypes = set.teraTypes; + let teraType = this.sampleIfArray(teraTypes); + + let ability = ''; + let item = undefined; + + const evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 }; + const ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 }; + + const types = species.types; + const abilities = set.abilities!; + + // Get moves + const moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType!, role); + const counter = this.queryMoves(moves, species, teraType!, abilities); + + // Get ability + ability = this.getAbility(types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType!, role); + + // Get items + // First, the priority items + item = this.getPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles, teraType!, role); + if (item === undefined) { + item = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, teraType!, role); + } + + // Get level + const level = this.getLevel(species); + + // Prepare optimal HP for Belly Drum and Life Orb + let hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10); + let targetHP = hp; + const minimumHP = Math.floor(Math.floor(2 * species.baseStats.hp + 100) * level / 100 + 10); + if (item === "Life Orb") { + targetHP = Math.floor(hp / 10) * 10 - 1; + } else if (moves.has("bellydrum")) { + targetHP = Math.floor(hp / 2) * 2; + } + // If the difference is too extreme, don't adjust HP + if (hp > targetHP && hp - targetHP <= 3 && targetHP >= minimumHP) { + // If setting evs to 0 is sufficient, decrement evs, otherwise decrement ivs with evs set to 0 + if (Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + 100) * level / 100 + 10) >= targetHP) { + evs.hp = 0; + hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10); + while (hp > targetHP) { + ivs.hp -= 1; + hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10); + } + } else { + while (hp > targetHP) { + evs.hp -= 4; + hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10); + } + } + } + + // Minimize confusion damage + const noAttackStatMoves = [...moves].every(m => { + const move = this.dex.moves.get(m); + if (move.damageCallback || move.damage) return true; + if (move.id === 'shellsidearm' && item !== 'Choice Specs') return false; + if (move.id === 'terablast' && ( + species.id === 'porygon' || species.baseStats.atk > species.baseStats.spa) + ) return false; + return move.category !== 'Physical' || move.id === 'bodypress' || move.id === 'foulplay'; + }); + + if (noAttackStatMoves) { + evs.atk = 0; + ivs.atk = 0; + } + + if (moves.has('gyroball') || moves.has('trickroom')) { + evs.spe = 0; + ivs.spe = 0; + } + + // Enforce Tera Type after all set generation is done to prevent infinite generation + if (this.forceTeraType) teraType = this.forceTeraType; + + // shuffle moves to add more randomness to camomons + const shuffledMoves = Array.from(moves); + this.prng.shuffle(shuffledMoves); + return { + name: species.baseSpecies, + species: forme, + gender: species.gender, + shiny: this.randomChance(1, 1024), + level, + moves: shuffledMoves, + ability, + evs, + ivs, + item, + teraType, + role, + }; + } + + randomFFATeam() { + this.enforceNoDirectCustomBanlistChanges(); + + const seed = this.prng.getSeed(); + const ruleTable = this.dex.formats.getRuleTable(this.format); + const pokemon: RandomTeamsTypes.RandomSet[] = []; + + // For Monotype + const isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause'); + const isDoubles = this.format.gameType !== 'singles'; + const typePool = this.dex.types.names().filter(name => name !== "Stellar"); + const type = this.forceMonotype || this.sample(typePool); + + // PotD stuff + const usePotD = global.Config && Config.potd && ruleTable.has('potd'); + const potd = usePotD ? this.dex.species.get(Config.potd) : null; + + const baseFormes: { [k: string]: number } = {}; + + const typeCount: { [k: string]: number } = {}; + const typeComboCount: { [k: string]: number } = {}; + const typeWeaknesses: { [k: string]: number } = {}; + const typeDoubleWeaknesses: { [k: string]: number } = {}; + const teamDetails: RandomTeamsTypes.TeamDetails = {}; + let numMaxLevelPokemon = 0; + + const pokemonList = Object.keys(this.randomSets); + const [pokemonPool, baseSpeciesPool] = this.getPokemonPool(type, pokemon, isMonotype, pokemonList); + + let leadsRemaining = 1; + while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) { + const baseSpecies = this.sampleNoReplace(baseSpeciesPool); + let species = this.dex.species.get(this.sample(pokemonPool[baseSpecies])); + if (!species.exists) continue; + + // Limit to one of each species (Species Clause) + if (baseFormes[species.baseSpecies]) continue; + + // Treat Ogerpon formes and Terapagos like the Tera Blast user role; reject if team has one already + if (['ogerponhearthflame', 'terapagos'].includes(species.id) && teamDetails.teraBlast) continue; + + // Illusion shouldn't be on the last slot + if (species.baseSpecies === 'Zoroark' && pokemon.length >= (this.maxTeamSize - 1)) continue; + + const types = species.types; + const typeCombo = types.slice().sort().join(); + const weakToFreezeDry = ( + this.dex.getEffectiveness('Ice', species) > 0 || + (this.dex.getEffectiveness('Ice', species) > -2 && types.includes('Water')) + ); + // Dynamically scale limits for different team sizes. The default and minimum value is 1. + const limitFactor = Math.round(this.maxTeamSize / 6) || 1; + + if (!isMonotype && !this.forceMonotype) { + let skip = false; + + // Limit two of any type + for (const typeName of types) { + if (typeCount[typeName] >= 2 * limitFactor) { + skip = true; + break; + } + } + if (skip) continue; + + // Limit three weak to any type, and one double weak to any type + for (const typeName of this.dex.types.names()) { + // it's weak to the type + if (this.dex.getEffectiveness(typeName, species) > 0) { + if (!typeWeaknesses[typeName]) typeWeaknesses[typeName] = 0; + if (typeWeaknesses[typeName] >= 3 * limitFactor) { + skip = true; + break; + } + } + if (this.dex.getEffectiveness(typeName, species) > 1) { + if (!typeDoubleWeaknesses[typeName]) typeDoubleWeaknesses[typeName] = 0; + if (typeDoubleWeaknesses[typeName] >= limitFactor) { + skip = true; + break; + } + } + } + if (skip) continue; + + // Count Dry Skin/Fluffy as Fire weaknesses + if ( + this.dex.getEffectiveness('Fire', species) === 0 && + Object.values(species.abilities).filter(a => ['Dry Skin', 'Fluffy'].includes(a)).length + ) { + if (!typeWeaknesses['Fire']) typeWeaknesses['Fire'] = 0; + if (typeWeaknesses['Fire'] >= 3 * limitFactor) continue; + } + + // Limit four weak to Freeze-Dry + if (weakToFreezeDry) { + if (!typeWeaknesses['Freeze-Dry']) typeWeaknesses['Freeze-Dry'] = 0; + if (typeWeaknesses['Freeze-Dry'] >= 4 * limitFactor) continue; + } + + // Limit one level 100 Pokemon + if (!this.adjustLevel && (this.getLevel(species) === 100) && numMaxLevelPokemon >= limitFactor) { + continue; + } + } + + // Limit three of any type combination in Monotype + if (!this.forceMonotype && isMonotype && (typeComboCount[typeCombo] >= 3 * limitFactor)) continue; + + // The Pokemon of the Day + if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd; + + let set: RandomTeamsTypes.RandomSet; + + if (leadsRemaining) { + if (NO_LEAD_POKEMON.includes(species.baseSpecies)) { + if (pokemon.length + leadsRemaining === this.maxTeamSize) continue; + set = this.randomSet(species, teamDetails, false, isDoubles); + pokemon.push(set); + } else { + set = this.randomSet(species, teamDetails, true, isDoubles); + pokemon.unshift(set); + leadsRemaining--; + } + } else { + set = this.randomSet(species, teamDetails, false, isDoubles); + pokemon.push(set); + } + + // Don't bother tracking details for the last Pokemon + if (pokemon.length === this.maxTeamSize) break; + + // Now that our Pokemon has passed all checks, we can increment our counters + baseFormes[species.baseSpecies] = 1; + + // Increment type counters + for (const typeName of types) { + if (typeName in typeCount) { + typeCount[typeName]++; + } else { + typeCount[typeName] = 1; + } + } + if (typeCombo in typeComboCount) { + typeComboCount[typeCombo]++; + } else { + typeComboCount[typeCombo] = 1; + } + + // Increment weakness counter + for (const typeName of this.dex.types.names()) { + // it's weak to the type + if (this.dex.getEffectiveness(typeName, species) > 0) { + typeWeaknesses[typeName]++; + } + if (this.dex.getEffectiveness(typeName, species) > 1) { + typeDoubleWeaknesses[typeName]++; + } + } + // Count Dry Skin/Fluffy as Fire weaknesses + if (['Dry Skin', 'Fluffy'].includes(set.ability) && this.dex.getEffectiveness('Fire', species) === 0) { + typeWeaknesses['Fire']++; + } + if (weakToFreezeDry) typeWeaknesses['Freeze-Dry']++; + + // Increment level 100 counter + if (set.level === 100) numMaxLevelPokemon++; + + // Track what the team has + if (set.ability === 'Drizzle' || set.moves.includes('raindance')) teamDetails.rain = 1; + if (set.ability === 'Drought' || set.ability === 'Orichalcum Pulse' || set.moves.includes('sunnyday')) { + teamDetails.sun = 1; + } + if (set.ability === 'Sand Stream') teamDetails.sand = 1; + if (set.ability === 'Snow Warning' || set.moves.includes('snowscape') || set.moves.includes('chillyreception')) { + teamDetails.snow = 1; + } + if (set.moves.includes('healbell')) teamDetails.statusCure = 1; + if (set.moves.includes('spikes') || set.moves.includes('ceaselessedge')) { + teamDetails.spikes = (teamDetails.spikes || 0) + 1; + } + if (set.moves.includes('toxicspikes') || set.ability === 'Toxic Debris') teamDetails.toxicSpikes = 1; + if (set.moves.includes('stealthrock') || set.moves.includes('stoneaxe')) teamDetails.stealthRock = 1; + if (set.moves.includes('stickyweb')) teamDetails.stickyWeb = 1; + if (set.moves.includes('defog')) teamDetails.defog = 1; + if (set.moves.includes('rapidspin') || set.moves.includes('mortalspin')) teamDetails.rapidSpin = 1; + if (set.moves.includes('auroraveil') || (set.moves.includes('reflect') && set.moves.includes('lightscreen'))) { + teamDetails.screens = 1; + } + if (set.role === 'Tera Blast user' || ['ogerponhearthflame', 'terapagos'].includes(species.id)) { + teamDetails.teraBlast = 1; + } + if (set.role === 'Imprisoner') teamDetails.imprison = (teamDetails.imprison || 0) + 1; + } + if (pokemon.length < this.maxTeamSize && pokemon.length < 12) { // large teams sometimes cannot be built + throw new Error(`Could not build a random team for ${this.format} (seed=${seed})`); + } + + return pokemon; + } + + override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./sets.json'); +} + +export default RandomFFATeams; diff --git a/server/chat-plugins/randombattles/index.ts b/server/chat-plugins/randombattles/index.ts index 59babdaa2b..e9a767c76c 100644 --- a/server/chat-plugins/randombattles/index.ts +++ b/server/chat-plugins/randombattles/index.ts @@ -161,6 +161,7 @@ function getSets(species: string | Species, format: string | Format = 'gen9rando let folderName = format.mod; if (format.team === 'randomBaby') folderName += 'baby'; if (species.isNonstandard === 'CAP') folderName += 'cap'; + if (format.team === 'randomFFA') folderName += 'ffa'; const setsFile = JSON.parse( FS(`data/random-battles/${folderName}/${isDoubles ? 'doubles-' : ''}sets.json`) .readIfExistsSync() || '{}' @@ -470,6 +471,10 @@ export const commands: Chat.ChatCommands = { randdubs: 'randombattles', babyrandombattle: 'randombattles', babyrands: 'randombattles', + freeforallrandombattle: 'randombattles', + ffarands: 'randombattles', + randffats: 'randombattles', + randffa: 'randombattles', // randombattlenodmax: 'randombattles', // randsnodmax: 'randombattles', randombattles(target, room, user, connection, cmd) { @@ -477,11 +482,13 @@ export const commands: Chat.ChatCommands = { const battle = room?.battle; let isDoubles = cmd === 'randomdoublesbattle' || cmd === 'randdubs'; let isBaby = cmd === 'babyrandombattle' || cmd === 'babyrands'; + let isFFA = cmd === 'freeforallrandombattle' || cmd === 'ffarands' || cmd === 'randffats' || cmd === 'randffa'; let isNoDMax = cmd.includes('nodmax'); if (battle) { if (battle.format.includes('nodmax')) isNoDMax = true; - if (battle.format.includes('doubles') || battle.gameType === 'freeforall') isDoubles = true; + if (battle.gameType === 'doubles') isDoubles = true; if (battle.format.includes('baby')) isBaby = true; + if (battle.gameType === 'freeforall') isFFA = true; } const args = target.split(','); @@ -504,8 +511,9 @@ export const commands: Chat.ChatCommands = { const extraFormatModifier = isLetsGo ? 'letsgo' : (dex.currentMod === 'gen8bdsp' ? 'bdsp' : ''); const babyModifier = isBaby ? 'baby' : ''; const doublesModifier = isDoubles ? 'doubles' : ''; + const freeForAllModifier = isFFA ? (dex.gen !== 9 ? 'doubles' : 'freeforall') : ''; const noDMaxModifier = isNoDMax ? 'nodmax' : ''; - const formatName = `gen${dex.gen}${extraFormatModifier}${babyModifier}random${doublesModifier}battle${noDMaxModifier}`; + const formatName = `gen${dex.gen}${extraFormatModifier}${freeForAllModifier}${babyModifier}random${doublesModifier}battle${noDMaxModifier}`; const format = dex.formats.get(formatName); const movesets = []; diff --git a/sim/global-types.ts b/sim/global-types.ts index 0106a8e554..dab8ed3233 100644 --- a/sim/global-types.ts +++ b/sim/global-types.ts @@ -476,6 +476,7 @@ declare namespace RandomTeamsTypes { illusion?: number; statusCure?: number; teraBlast?: number; + imprison?: number; } export interface FactoryTeamDetails { megaCount?: number; @@ -561,5 +562,5 @@ declare namespace RandomTeamsTypes { 'Bulky Attacker' | 'Bulky Setup' | 'Fast Bulky Setup' | 'Bulky Support' | 'Fast Support' | 'AV Pivot' | 'Doubles Fast Attacker' | 'Doubles Setup Sweeper' | 'Doubles Wallbreaker' | 'Doubles Bulky Attacker' | 'Doubles Bulky Setup' | 'Offensive Protect' | 'Bulky Protect' | 'Doubles Support' | 'Choice Item user' | - 'Z-Move user' | 'Staller' | 'Spinner' | 'Generalist' | 'Berry Sweeper' | 'Thief user'; + 'Z-Move user' | 'Staller' | 'Spinner' | 'Generalist' | 'Berry Sweeper' | 'Thief user' | 'Imprisoner'; } diff --git a/sim/teams.ts b/sim/teams.ts index 2dbc797d5b..afd36816e1 100644 --- a/sim/teams.ts +++ b/sim/teams.ts @@ -638,6 +638,8 @@ export const Teams = new class Teams { TeamGenerator = require(`../data/random-battles/gen9baby/teams`).default; } else if (formatID.includes('gen9randombattle') && format.ruleTable?.has('+pokemontag:cap')) { TeamGenerator = require(`../data/random-battles/gen9cap/teams`).default; + } else if (formatID.includes('gen9freeforallrandombattle')) { + TeamGenerator = require(`../data/random-battles/gen9ffa/teams`).default; } else { TeamGenerator = require(`../data/random-battles/${mod}/teams`).default; }