Sync data

This commit is contained in:
Guangcong Luo
2015-08-10 19:48:11 -04:00
parent 99475af48b
commit 95657e8249
9 changed files with 450 additions and 203 deletions

View File

@@ -135,7 +135,7 @@ exports.BattleAbilities = {
for (var j = 0; j < targets[i].moveset.length; j++) {
var move = this.getMove(targets[i].moveset[j].move);
if (move.category !== 'Status' && (this.getImmunity(move.type, pokemon) && this.getEffectiveness(move.type, pokemon) > 0 || move.ohko)) {
this.add('-activate', pokemon, 'ability: Anticipation');
this.add('-ability', pokemon, 'Anticipation');
return;
}
}
@@ -288,9 +288,9 @@ exports.BattleAbilities = {
},
"chlorophyll": {
shortDesc: "If Sunny Day is active, this Pokemon's Speed is doubled.",
onModifySpe: function (speMod) {
onModifySpe: function (spe) {
if (this.isWeather(['sunnyday', 'desolateland'])) {
return this.chain(speMod, 2);
return this.chainModify(2);
}
},
id: "chlorophyll",
@@ -462,13 +462,13 @@ exports.BattleAbilities = {
shortDesc: "While this Pokemon has 1/2 or less of its max HP, its Attack and Sp. Atk are halved.",
onModifyAtkPriority: 5,
onModifyAtk: function (atk, pokemon) {
if (pokemon.hp < pokemon.maxhp / 2) {
if (pokemon.hp <= pokemon.maxhp / 2) {
return this.chainModify(0.5);
}
},
onModifySpAPriority: 5,
onModifySpA: function (atk, pokemon) {
if (pokemon.hp < pokemon.maxhp / 2) {
if (pokemon.hp <= pokemon.maxhp / 2) {
return this.chainModify(0.5);
}
},
@@ -782,14 +782,14 @@ exports.BattleAbilities = {
},
onModifyAtkPriority: 3,
onAllyModifyAtk: function (atk) {
if (this.effectData.target.template.speciesid !== 'cherrim') return;
if (this.effectData.target.baseTemplate.speciesid !== 'cherrim') return;
if (this.isWeather(['sunnyday', 'desolateland'])) {
return this.chainModify(1.5);
}
},
onModifySpDPriority: 4,
onAllyModifySpD: function (spd) {
if (this.effectData.target.template.speciesid !== 'cherrim') return;
if (this.effectData.target.baseTemplate.speciesid !== 'cherrim') return;
if (this.isWeather(['sunnyday', 'desolateland'])) {
return this.chainModify(1.5);
}
@@ -878,7 +878,7 @@ exports.BattleAbilities = {
}
if (!warnMoves.length) return;
var warnMove = warnMoves[this.random(warnMoves.length)];
this.add('-activate', pokemon, 'ability: Forewarn', warnMove[0], warnMove[1]);
this.add('-activate', pokemon, 'ability: Forewarn', '[from] ' + warnMove[0], '[of] ' + warnMove[1]);
},
id: "forewarn",
name: "Forewarn",
@@ -1222,13 +1222,16 @@ exports.BattleAbilities = {
shortDesc: "On switch-in, this Pokemon lowers the Attack of adjacent opponents by 1 stage.",
onStart: function (pokemon) {
var foeactive = pokemon.side.foe.active;
var activated = false;
for (var i = 0; i < foeactive.length; i++) {
if (!foeactive[i] || !this.isAdjacent(foeactive[i], pokemon)) continue;
if (!activated) {
this.add('-ability', pokemon, 'Intimidate');
activated = true;
}
if (foeactive[i].volatiles['substitute']) {
// does it give a message?
this.add('-activate', foeactive[i], 'Substitute', 'ability: Intimidate', '[of] ' + pokemon);
} else {
this.add('-ability', pokemon, 'Intimidate', '[of] ' + foeactive[i]);
this.boost({atk: -1}, foeactive[i], pokemon);
}
}
@@ -1648,8 +1651,7 @@ exports.BattleAbilities = {
if (source && source !== target && move && move.flags['contact']) {
var oldAbility = source.setAbility('mummy', source, 'mummy', true);
if (oldAbility) {
this.add('-endability', source, oldAbility, '[from] Mummy');
this.add('-ability', source, 'Mummy', '[from] Mummy');
this.add('-activate', target, 'ability: Mummy', oldAbility, '[of] ' + source);
}
}
},
@@ -1776,10 +1778,11 @@ exports.BattleAbilities = {
"parentalbond": {
desc: "This Pokemon's damaging moves become multi-hit moves that hit twice. The second hit has its damage halved. Does not affect multi-hit moves or moves that have multiple targets.",
shortDesc: "This Pokemon's damaging moves hit twice. The second hit has its damage halved.",
onModifyMove: function (move, pokemon, target) {
if (move.category !== 'Status' && !move.selfdestruct && !move.multihit && ((target.side && target.side.active.length < 2) || move.target in {any:1, normal:1, randomNormal:1})) {
onPrepareHit: function (source, target, move) {
if (move.id in {iceball: 1, rollout: 1}) return;
if (move.category !== 'Status' && !move.selfdestruct && !move.multihit && !move.flags['charge'] && !move.spreadHit) {
move.multihit = 2;
pokemon.addVolatile('parentalbond');
source.addVolatile('parentalbond');
}
},
effect: {
@@ -2027,9 +2030,9 @@ exports.BattleAbilities = {
"quickfeet": {
desc: "If this Pokemon has a major status condition, its Speed is multiplied by 1.5; the Speed drop from paralysis is ignored.",
shortDesc: "If this Pokemon is statused, its Speed is 1.5x; ignores Speed drop from paralysis.",
onModifySpe: function (speMod, pokemon) {
onModifySpe: function (spe, pokemon) {
if (pokemon.status) {
return this.chain(speMod, 1.5);
return this.chainModify(1.5);
}
},
id: "quickfeet",
@@ -2185,9 +2188,9 @@ exports.BattleAbilities = {
"sandrush": {
desc: "If Sandstorm is active, this Pokemon's Speed is doubled. This Pokemon takes no damage from Sandstorm.",
shortDesc: "If Sandstorm is active, this Pokemon's Speed is doubled; immunity to Sandstorm.",
onModifySpe: function (speMod, pokemon) {
onModifySpe: function (spe, pokemon) {
if (this.isWeather('sandstorm')) {
return this.chain(speMod, 2);
return this.chainModify(2);
}
},
onImmunity: function (type, pokemon) {
@@ -2397,8 +2400,8 @@ exports.BattleAbilities = {
onModifyAtk: function (atk, pokemon) {
return this.chainModify(0.5);
},
onModifySpe: function (speMod, pokemon) {
return this.chain(speMod, 0.5);
onModifySpe: function (spe, pokemon) {
return this.chainModify(0.5);
},
onEnd: function (target) {
this.add('-end', target, 'Slow Start');
@@ -2645,7 +2648,7 @@ exports.BattleAbilities = {
onDamagePriority: -100,
onDamage: function (damage, target, source, effect) {
if (target.hp === target.maxhp && damage >= target.hp && effect && effect.effectType === 'Move') {
this.add('-activate', target, 'Sturdy');
this.add('-ability', target, 'Sturdy');
return target.hp - 1;
}
},
@@ -2719,9 +2722,9 @@ exports.BattleAbilities = {
},
"swiftswim": {
shortDesc: "If Rain Dance is active, this Pokemon's Speed is doubled.",
onModifySpe: function (speMod, pokemon) {
onModifySpe: function (spe, pokemon) {
if (this.isWeather(['raindance', 'primordialsea'])) {
return this.chain(speMod, 2);
return this.chainModify(2);
}
},
id: "swiftswim",
@@ -2995,9 +2998,9 @@ exports.BattleAbilities = {
pokemon.removeVolatile('unburden');
},
effect: {
onModifySpe: function (speMod, pokemon) {
onModifySpe: function (spe, pokemon) {
if (!pokemon.item) {
return this.chain(speMod, 2);
return this.chainModify(2);
}
}
},
@@ -3096,7 +3099,7 @@ exports.BattleAbilities = {
shortDesc: "If a physical attack hits this Pokemon, Defense is lowered by 1, Speed is raised by 1.",
onAfterDamage: function (damage, target, source, move) {
if (move.category === 'Physical') {
this.boost({spe:1, def:-1});
this.boost({def:-1, spe:1});
}
},
id: "weakarmor",

View File

@@ -17,6 +17,7 @@ exports.BattleAliases = {
"vgc15": "Battle Spot Doubles (VGC 2015)",
"vgc2015": "Battle Spot Doubles (VGC 2015)",
"battlespotdoubles": "Battle Spot Doubles (VGC 2015)",
"seasonal": "[Seasonal] Rainbow Road",
"createapokemon": "CAP",
"2v2": "2v2 Doubles",
"cc1v1": "Challenge Cup 1v1",
@@ -175,11 +176,15 @@ exports.BattleAliases = {
"landorust": "Landorus-Therian",
"meloettap": "Meloetta-Pirouette",
"meloettas": "Meloetta-Pirouette",
"meloettastep": "Meloetta-Pirouette",
"meowsticfemale": "Meowstic-F",
"pumpkaboohuge": "Pumpkaboo-Super",
"rotomc": "Rotom-Mow",
"rotomcut": "Rotom-Mow",
"rotomf": "Rotom-Frost",
"rotomh": "Rotom-Heat",
"rotoms": "Rotom-Fan",
"rotomspin": "Rotom-Fan",
"rotomw": "Rotom-Wash",
"shaymins": "Shaymin-Sky",
"skymin": "Shaymin-Sky",
@@ -202,20 +207,26 @@ exports.BattleAliases = {
"cherrimovercast": "Cherrim",
"meloettaa": "Meloetta",
"meloettaaria": "Meloetta",
"meloettavoice": "Meloetta",
"basculinr": "Basculin",
"basculinred": "Basculin",
"basculinredstripe": "Basculin",
"basculinredstriped": "Basculin",
"tornadusi": "Tornadus",
"tornadusincarnate": "Tornadus",
"tornadusincarnation": "Tornadus",
"thundurusi": "Thundurus",
"thundurusincarnate": "Thundurus",
"thundurusincarnation": "Thundurus",
"landorusi": "Landorus",
"landorusincarnate": "Landorus",
"landorusincarnation": "Landorus",
"pumpkabooaverage": "Pumpkaboo",
"gourgeistaverage": "Gourgeist",
"hoopac": "Hoopa",
"hoopaconfined": "Hoopa",
"meowsticm": "Meowstic",
"meowsticmale": "Meowstic",
// cosmetic formes
"gastrodone": "Gastrodon",

File diff suppressed because one or more lines are too long

View File

@@ -19,12 +19,13 @@ exports.BattleFormatsData = {
venusaur: {
randomBattleMoves: ["sunnyday","sleeppowder","gigadrain","hiddenpowerfire","sludgebomb","leechseed","substitute"],
randomDoubleBattleMoves: ["sleeppowder","gigadrain","hiddenpowerfire","hiddenpowerice","sludgebomb","powerwhip","protect"],
tier: "OU"
tier: "BL"
},
venusaurmega: {
randomBattleMoves: ["sleeppowder","gigadrain","hiddenpowerfire","sludgebomb","leechseed","synthesis","earthquake","knockoff"],
randomDoubleBattleMoves: ["sleeppowder","gigadrain","hiddenpowerfire","hiddenpowerice","sludgebomb","powerwhip","protect"],
requiredItem: "Venusaurite"
requiredItem: "Venusaurite",
tier: "OU"
},
charmander: {
randomBattleMoves: ["flamethrower","overheat","dragonpulse","hiddenpowergrass","fireblast"],
@@ -55,17 +56,19 @@ exports.BattleFormatsData = {
{"generation":6,"level":36,"gender":"M","isHidden":false,"moves":["firefang","airslash","dragonclaw","dragonrage"],"pokeball":"cherishball"},
{"generation":6,"level":36,"shiny":true,"gender":"M","isHidden":false,"moves":["overheat","solarbeam","focusblast","holdhands"],"pokeball":"cherishball"}
],
tier: "OU"
tier: "BL"
},
charizardmegax: {
randomBattleMoves: ["dragondance","flareblitz","dragonclaw","earthquake","roost","willowisp"],
randomDoubleBattleMoves: ["dragondance","flareblitz","dragonclaw","earthquake","rockslide","roost","substitute"],
requiredItem: "Charizardite X"
requiredItem: "Charizardite X",
tier: "OU"
},
charizardmegay: {
randomBattleMoves: ["fireblast","airslash","roost","solarbeam","focusblast","dragonpulse"],
randomDoubleBattleMoves: ["heatwave","fireblast","airslash","roost","solarbeam","focusblast","protect"],
requiredItem: "Charizardite Y"
requiredItem: "Charizardite Y",
tier: "OU"
},
squirtle: {
randomBattleMoves: ["icebeam","hydropump","rapidspin","scald","aquajet","toxic"],
@@ -89,12 +92,13 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":3,"level":70,"moves":["protect","raindance","skullbash","hydropump"]}
],
tier: "UU"
tier: "BL2"
},
blastoisemega: {
randomBattleMoves: ["icebeam","hydropump","rapidspin","scald","toxic","dragontail","darkpulse","aurasphere"],
randomDoubleBattleMoves: ["muddywater","icebeam","hydropump","fakeout","scald","darkpulse","aurasphere","followme","icywind","protect"],
requiredItem: "Blastoisinite"
requiredItem: "Blastoisinite",
tier: "UU"
},
caterpie: {
randomBattleMoves: ["bugbite","snore","tackle","electroweb"],
@@ -126,12 +130,13 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":3,"level":30,"moves":["batonpass","sludgebomb","twineedle","swordsdance"]}
],
tier: "UU"
tier: "BL2"
},
beedrillmega: {
randomBattleMoves: ["xscissor","swordsdance","uturn","poisonjab","drillrun","knockoff"],
randomDoubleBattleMoves: ["xscissor","uturn","substitute","poisonjab","drillrun","knockoff","protect"],
requiredItem: "Beedrillite"
requiredItem: "Beedrillite",
tier: "UU"
},
pidgey: {
randomBattleMoves: ["roost","bravebird","heatwave","return","workup","uturn","thief"],
@@ -152,12 +157,13 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":5,"level":61,"gender":"M","nature":"Naughty","isHidden":false,"abilities":["keeneye"],"moves":["whirlwind","wingattack","skyattack","mirrormove"],"pokeball":"cherishball"}
],
tier: "UU"
tier: "PU"
},
pidgeotmega: {
randomBattleMoves: ["roost","heatwave","uturn","hurricane","defog"],
randomDoubleBattleMoves: ["tailwind","heatwave","uturn","hurricane","protect"],
requiredItem: "Pidgeotite"
requiredItem: "Pidgeotite",
tier: "BL"
},
rattata: {
randomBattleMoves: ["facade","flamewheel","suckerpunch","uturn","wildcharge","thunderwave","crunch","revenge"],
@@ -336,7 +342,7 @@ exports.BattleFormatsData = {
},
nidoqueen: {
randomBattleMoves: ["toxicspikes","stealthrock","fireblast","icebeam","earthpower","sludgewave"],
randomDoubleBattleMoves: ["helpinghand","protect","fireblast","icebeam","earthpower","sludgebomb"],
randomDoubleBattleMoves: ["protect","fireblast","icebeam","earthpower","sludgebomb"],
tier: "UU"
},
nidoranm: {
@@ -351,7 +357,7 @@ exports.BattleFormatsData = {
},
nidoking: {
randomBattleMoves: ["substitute","fireblast","icebeam","earthpower","sludgewave","superpower"],
randomDoubleBattleMoves: ["helpinghand","protect","fireblast","thunderbolt","icebeam","earthpower","sludgebomb","focusblast"],
randomDoubleBattleMoves: ["protect","fireblast","thunderbolt","icebeam","earthpower","sludgebomb","focusblast"],
tier: "UU"
},
cleffa: {
@@ -362,7 +368,7 @@ exports.BattleFormatsData = {
clefairy: {
randomBattleMoves: ["healingwish","reflect","thunderwave","lightscreen","toxic","fireblast","encore","wish","protect","aromatherapy","stealthrock","moonblast","knockoff","moonlight"],
randomDoubleBattleMoves: ["reflect","thunderwave","lightscreen","safeguard","fireblast","followme","protect","moonblast"],
tier: "NFE"
tier: "PU"
},
clefable: {
randomBattleMoves: ["calmmind","softboiled","fireblast","moonblast","stealthrock","thunderwave"],
@@ -473,7 +479,7 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":3,"level":32,"abilities":["shielddust"],"moves":["refresh","silverwind","substitute","psychic"]}
],
tier: "BL"
tier: "RU"
},
diglett: {
randomBattleMoves: ["earthquake","rockslide","stealthrock","suckerpunch","reversal","substitute","shadowclaw"],
@@ -549,7 +555,7 @@ exports.BattleFormatsData = {
},
arcanine: {
randomBattleMoves: ["flareblitz","wildcharge","extremespeed","closecombat","morningsun","willowisp","toxic","crunch","roar"],
randomDoubleBattleMoves: ["flareblitz","wildcharge","closecombat","willowisp","snarl","helpinghand","protect","extremespeed"],
randomDoubleBattleMoves: ["flareblitz","wildcharge","closecombat","willowisp","snarl","protect","extremespeed"],
tier: "UU"
},
poliwag: {
@@ -571,7 +577,7 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":3,"level":42,"moves":["helpinghand","hydropump","raindance","brickbreak"]}
],
tier: "PU"
tier: "NU"
},
politoed: {
randomBattleMoves: ["scald","toxic","encore","perishsong","protect","hypnosis","rest"],
@@ -602,7 +608,8 @@ exports.BattleFormatsData = {
alakazammega: {
randomBattleMoves: ["calmmind","psyshock","focusblast","shadowball","encore","substitute"],
randomDoubleBattleMoves: ["protect","psychic","psyshock","focusblast","shadowball","encore","substitute","dazzlinggleam"],
requiredItem: "Alakazite"
requiredItem: "Alakazite",
tier: "BL"
},
machop: {
randomBattleMoves: ["dynamicpunch","bulkup","icepunch","rockslide","bulletpunch","knockoff"],
@@ -701,7 +708,8 @@ exports.BattleFormatsData = {
slowbromega: {
randomBattleMoves: ["calmmind","scald","psyshock","slackoff","fireblast","psychic","icebeam","grassknot"],
randomDoubleBattleMoves: ["scald","fireblast","icebeam","psychic","grassknot","thunderwave","slackoff","trickroom","protect","psyshock"],
requiredItem: "Slowbronite"
requiredItem: "Slowbronite",
tier: "BL"
},
slowking: {
randomBattleMoves: ["scald","fireblast","icebeam","psychic","grassknot","thunderwave","toxic","slackoff","trickroom","nastyplot","dragontail","psyshock"],
@@ -719,7 +727,7 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":3,"level":30,"moves":["refresh","doubleedge","raindance","thunder"]}
],
tier: "BL3"
tier: "RU"
},
magnezone: {
randomBattleMoves: ["thunderbolt","substitute","flashcannon","hiddenpowerice","voltswitch","chargebeam","hiddenpowerfire"],
@@ -831,12 +839,13 @@ exports.BattleFormatsData = {
steelix: {
randomBattleMoves: ["stealthrock","earthquake","ironhead","roar","toxic","rockslide"],
randomDoubleBattleMoves: ["stealthrock","earthquake","ironhead","rockslide","protect","explosion"],
tier: "RU"
tier: "BL3"
},
steelixmega: {
randomBattleMoves: ["stealthrock","earthquake","heavyslam","roar","toxic","dragontail"],
randomDoubleBattleMoves: ["stealthrock","earthquake","heavyslam","rockslide","protect","explosion"],
requiredItem: "Steelixite"
requiredItem: "Steelixite",
tier: "RU"
},
drowzee: {
randomBattleMoves: ["psychic","seismictoss","thunderwave","wish","protect","toxic","shadowball","trickroom","calmmind","dazzlinggleam"],
@@ -925,7 +934,7 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":3,"level":38,"abilities":["keeneye"],"moves":["helpinghand","skyuppercut","mindreader","megapunch"]}
],
tier: "RU"
tier: "NU"
},
hitmontop: {
randomBattleMoves: ["suckerpunch","machpunch","rapidspin","closecombat","toxic"],
@@ -1123,7 +1132,8 @@ exports.BattleFormatsData = {
scizormega: {
randomBattleMoves: ["swordsdance","roost","bulletpunch","bugbite","superpower","uturn","batonpass","pursuit","defog","knockoff"],
randomDoubleBattleMoves: ["swordsdance","roost","bulletpunch","bugbite","superpower","uturn","protect","feint","knockoff"],
requiredItem: "Scizorite"
requiredItem: "Scizorite",
tier: "OU"
},
smoochum: {
randomBattleMoves: ["icebeam","psychic","hiddenpowerfighting","trick","shadowball","grassknot"],
@@ -1240,7 +1250,8 @@ exports.BattleFormatsData = {
gyaradosmega: {
randomBattleMoves: ["dragondance","waterfall","earthquake","substitute","icefang","crunch"],
randomDoubleBattleMoves: ["dragondance","waterfall","earthquake","bounce","taunt","protect","thunderwave","stoneedge","substitute","icefang"],
requiredItem: "Gyaradosite"
requiredItem: "Gyaradosite",
tier: "BL"
},
lapras: {
randomBattleMoves: ["icebeam","thunderbolt","healbell","toxic","hydropump","substitute"],
@@ -1377,12 +1388,13 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":5,"level":15,"gender":"M","isHidden":false,"abilities":["pressure"],"moves":["steelwing","icefang","firefang","thunderfang"],"pokeball":"cherishball"}
],
tier: "UU"
tier: "BL2"
},
aerodactylmega: {
randomBattleMoves: ["aquatail","defog","honeclaws","stoneedge","firefang","icefang","aerialace","roost"],
randomDoubleBattleMoves: ["wideguard","taunt","stoneedge","rockslide","earthquake","ironhead","aerialace","protect","icefang","skydrop","tailwind"],
requiredItem: "Aerodactylite"
requiredItem: "Aerodactylite",
tier: "UU"
},
munchlax: {
randomBattleMoves: ["rest","curse","sleeptalk","bodyslam","earthquake","return","firepunch","icepunch","whirlwind","toxic"],
@@ -1525,7 +1537,7 @@ exports.BattleFormatsData = {
{"generation":3,"level":70,"moves":["quickattack","flamewheel","swift","flamethrower"]},
{"generation":6,"level":50,"isHidden":true,"moves":["overheat","flamewheel","flamecharge","swift"]}
],
tier: "BL3"
tier: "RU"
},
totodile: {
randomBattleMoves: ["aquajet","waterfall","crunch","icepunch","superpower","dragondance","swordsdance"],
@@ -1649,12 +1661,13 @@ exports.BattleFormatsData = {
ampharos: {
randomBattleMoves: ["voltswitch","reflect","lightscreen","focusblast","thunderbolt","toxic","healbell","hiddenpowerice"],
randomDoubleBattleMoves: ["focusblast","hiddenpowerice","hiddenpowergrass","thunderbolt","discharge","dragonpulse","protect"],
tier: "UU"
tier: "BL2"
},
ampharosmega: {
randomBattleMoves: ["voltswitch","focusblast","agility","thunderbolt","healbell","dragonpulse"],
randomDoubleBattleMoves: ["focusblast","hiddenpowerice","hiddenpowergrass","thunderbolt","discharge","dragonpulse","protect"],
requiredItem: "Ampharosite"
requiredItem: "Ampharosite",
tier: "UU"
},
azurill: {
randomBattleMoves: ["scald","return","bodyslam","encore","toxic","protect","knockoff"],
@@ -1864,7 +1877,7 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":3,"level":10,"gender":"M","moves":["scratch","leer","taunt","quickattack"]}
],
tier: "BL3"
tier: "RU"
},
weavile: {
randomBattleMoves: ["iceshard","iciclecrash","knockoff","pursuit","swordsdance","lowkick"],
@@ -2010,7 +2023,7 @@ exports.BattleFormatsData = {
{"generation":3,"level":10,"gender":"M","abilities":["owntempo"],"moves":["sketch"]},
{"generation":5,"level":50,"gender":"F","nature":"Jolly","abilities":["technician"],"moves":["falseswipe","spore","odorsleuth","meanlook"],"pokeball":"cherishball"}
],
tier: "BL"
tier: "UU"
},
miltank: {
randomBattleMoves: ["milkdrink","stealthrock","bodyslam","healbell","curse","earthquake","toxic"],
@@ -2074,7 +2087,8 @@ exports.BattleFormatsData = {
tyranitarmega: {
randomBattleMoves: ["crunch","stoneedge","earthquake","icepunch","dragondance"],
randomDoubleBattleMoves: ["crunch","stoneedge","earthquake","icepunch","dragondance","rockslide","protect"],
requiredItem: "Tyranitarite"
requiredItem: "Tyranitarite",
tier: "BL"
},
lugia: {
randomBattleMoves: ["toxic","roost","substitute","whirlwind","thunderwave","dragontail","aeroblast"],
@@ -2129,12 +2143,13 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":5,"level":50,"isHidden":false,"moves":["leafstorm","dragonpulse","focusblast","rockslide"],"pokeball":"cherishball"}
],
tier: "UU"
tier: "BL2"
},
sceptilemega: {
randomBattleMoves: ["substitute","gigadrain","dragonpulse","focusblast","swordsdance","outrage","leafblade","earthquake","hiddenpowerfire"],
randomDoubleBattleMoves: ["substitute","gigadrain","leafstorm","hiddenpowerice","focusblast","dragonpulse","hiddenpowerfire","protect"],
requiredItem: "Sceptilite"
requiredItem: "Sceptilite",
tier: "UU"
},
torchic: {
randomBattleMoves: ["protect","batonpass","substitute","hiddenpowergrass","swordsdance","firepledge"],
@@ -2159,7 +2174,8 @@ exports.BattleFormatsData = {
},
blazikenmega: {
randomBattleMoves: ["flareblitz","highjumpkick","protect","swordsdance","substitute","batonpass","stoneedge","knockoff"],
requiredItem: "Blazikenite"
requiredItem: "Blazikenite",
tier: "Uber"
},
mudkip: {
randomBattleMoves: ["hydropump","earthpower","hiddenpowerelectric","icebeam","sludgewave"],
@@ -2184,7 +2200,8 @@ exports.BattleFormatsData = {
swampertmega: {
randomBattleMoves: ["raindance","waterfall","earthquake","icepunch","superpower"],
randomDoubleBattleMoves: ["waterfall","earthquake","raindance","icepunch","superpower","protect"],
requiredItem: "Swampertite"
requiredItem: "Swampertite",
tier: "UU"
},
poochyena: {
randomBattleMoves: ["superfang","foulplay","suckerpunch","toxic","crunch","firefang","icefang","poisonfang"],
@@ -2271,7 +2288,7 @@ exports.BattleFormatsData = {
shiftry: {
randomBattleMoves: ["leafstorm","swordsdance","leafblade","suckerpunch","defog","lowkick","knockoff"],
randomDoubleBattleMoves: ["leafstorm","swordsdance","leafblade","suckerpunch","knockoff","lowkick","fakeout","protect"],
tier: "RU"
tier: "NU"
},
taillow: {
randomBattleMoves: ["bravebird","facade","quickattack","uturn","protect"],
@@ -2317,17 +2334,18 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":5,"level":50,"isHidden":false,"abilities":["trace"],"moves":["hypnosis","thunderbolt","focusblast","psychic"],"pokeball":"cherishball"}
],
tier: "OU"
tier: "BL"
},
gardevoirmega: {
randomBattleMoves: ["calmmind","hypervoice","psyshock","focusblast","substitute","taunt","willowisp"],
randomDoubleBattleMoves: ["psyshock","focusblast","shadowball","calmmind","thunderbolt","hypervoice","protect"],
requiredItem: "Gardevoirite"
requiredItem: "Gardevoirite",
tier: "OU"
},
gallade: {
randomBattleMoves: ["bulkup","drainpunch","icepunch","shadowsneak","closecombat","zenheadbutt","knockoff","trick"],
randomDoubleBattleMoves: ["closecombat","trick","stoneedge","shadowsneak","drainpunch","icepunch","zenheadbutt","knockoff","trickroom","protect","helpinghand","healpulse"],
tier: "BL3"
randomDoubleBattleMoves: ["closecombat","trick","stoneedge","shadowsneak","drainpunch","icepunch","zenheadbutt","knockoff","trickroom","protect","helpinghand"],
tier: "RU"
},
gallademega: {
randomBattleMoves: ["swordsdance","closecombat","drainpunch","knockoff","zenheadbutt","substitute"],
@@ -2467,12 +2485,13 @@ exports.BattleFormatsData = {
{"generation":3,"level":33,"abilities":["keeneye"],"moves":["helpinghand","shadowball","feintattack","recover"]},
{"generation":5,"level":50,"gender":"M","isHidden":true,"moves":["foulplay","octazooka","tickle","trick"],"pokeball":"cherishball"}
],
tier: "OU"
tier: "BL"
},
sableyemega: {
randomBattleMoves: ["recover","willowisp","darkpulse","calmmind","shadowball"],
randomDoubleBattleMoves: ["fakeout","knockoff","darkpulse","shadowball","willowisp","protect"],
requiredItem: "Sablenite"
requiredItem: "Sablenite",
tier: "OU"
},
mawile: {
randomBattleMoves: ["swordsdance","ironhead","substitute","playrough","suckerpunch","batonpass"],
@@ -2506,12 +2525,13 @@ exports.BattleFormatsData = {
{"generation":3,"level":50,"moves":["takedown","irontail","protect","metalsound"]},
{"generation":6,"level":50,"nature":"Brave","isHidden":false,"abilities":["rockhead"],"moves":["ironhead","earthquake","headsmash","rockslide"],"pokeball":"cherishball"}
],
tier: "UU"
tier: "BL2"
},
aggronmega: {
randomBattleMoves: ["earthquake","heavyslam","icepunch","stealthrock","thunderwave","roar","toxic"],
randomDoubleBattleMoves: ["rockslide","earthquake","lowkick","heavyslam","aquatail","protect"],
requiredItem: "Aggronite"
requiredItem: "Aggronite",
tier: "UU"
},
meditite: {
randomBattleMoves: ["highjumpkick","psychocut","icepunch","thunderpunch","trick","fakeout","bulletpunch","drainpunch","zenheadbutt"],
@@ -2543,12 +2563,13 @@ exports.BattleFormatsData = {
{"generation":3,"level":44,"moves":["refresh","thunder","raindance","bite"]},
{"generation":6,"level":50,"nature":"Timid","isHidden":false,"abilities":["lightningrod"],"moves":["overheat","thunderbolt","voltswitch","protect"],"pokeball":"cherishball"}
],
tier: "OU"
tier: "BL"
},
manectricmega: {
randomBattleMoves: ["voltswitch","thunderbolt","hiddenpowerice","hiddenpowergrass","overheat"],
randomDoubleBattleMoves: ["voltswitch","thunderbolt","hiddenpowerice","hiddenpowergrass","overheat","flamethrower","snarl","protect"],
requiredItem: "Manectite"
requiredItem: "Manectite",
tier: "OU"
},
plusle: {
randomBattleMoves: ["nastyplot","thunderbolt","substitute","batonpass","hiddenpowerice","encore"],
@@ -2618,11 +2639,12 @@ exports.BattleFormatsData = {
sharpedo: {
randomBattleMoves: ["protect","icebeam","crunch","earthquake","waterfall","destinybond"],
randomDoubleBattleMoves: ["protect","icebeam","crunch","earthquake","waterfall","destinybond"],
tier: "UU"
tier: "BL2"
},
sharpedomega: {
randomBattleMoves: ["protect","icefang","crunch","earthquake","waterfall","zenheadbutt"],
requiredItem: "Sharpedonite"
requiredItem: "Sharpedonite",
tier: "UU"
},
wailmer: {
randomBattleMoves: ["waterspout","surf","hydropump","icebeam","hiddenpowergrass","hiddenpowerelectric"],
@@ -2648,12 +2670,13 @@ exports.BattleFormatsData = {
camerupt: {
randomBattleMoves: ["rockpolish","fireblast","earthpower","lavaplume","stealthrock","hiddenpowergrass","roar","stoneedge"],
randomDoubleBattleMoves: ["rockpolish","fireblast","earthpower","heatwave","eruption","hiddenpowergrass","protect"],
tier: "RU"
tier: "BL3"
},
cameruptmega: {
randomBattleMoves: ["stealthrock","fireblast","earthpower","ancientpower","willowisp","toxic"],
randomDoubleBattleMoves: ["fireblast","earthpower","heatwave","eruption","rockslide","protect"],
requiredItem: "Cameruptite"
requiredItem: "Cameruptite",
tier: "RU"
},
torkoal: {
randomBattleMoves: ["shellsmash","fireblast","earthpower","hiddenpowergrass","stealthrock","rapidspin","yawn","lavaplume"],
@@ -2732,12 +2755,13 @@ exports.BattleFormatsData = {
{"generation":3,"level":36,"moves":["healbell","dragonbreath","solarbeam","aerialace"]},
{"generation":5,"level":35,"gender":"M","isHidden":true,"moves":["takedown","naturalgift","dragonbreath","falseswipe"]}
],
tier: "OU"
tier: "BL"
},
altariamega: {
randomBattleMoves: ["dragondance","return","hypervoice","healbell","earthquake","roost","dracometeor","fireblast"],
randomDoubleBattleMoves: ["dragondance","return","doubleedge","dragonclaw","earthquake","protect","fireblast"],
requiredItem: "Altarianite"
requiredItem: "Altarianite",
tier: "OU"
},
zangoose: {
randomBattleMoves: ["swordsdance","closecombat","knockoff","quickattack","facade"],
@@ -2760,8 +2784,8 @@ exports.BattleFormatsData = {
tier: "PU"
},
lunatone: {
randomBattleMoves: ["psychic","earthpower","stealthrock","rockpolish","batonpass","calmmind","icebeam","hiddenpowerrock","moonlight","toxic"],
randomDoubleBattleMoves: ["psychic","earthpower","rockpolish","calmmind","helpinghand","icebeam","hiddenpowerrock","moonlight","trickroom","protect"],
randomBattleMoves: ["psychic","earthpower","stealthrock","rockpolish","batonpass","calmmind","icebeam","ancientpower","moonlight","toxic"],
randomDoubleBattleMoves: ["psychic","earthpower","rockpolish","calmmind","helpinghand","icebeam","ancientpower","moonlight","trickroom","protect"],
eventPokemon: [
{"generation":3,"level":10,"moves":["tackle","harden","confusion"]},
{"generation":3,"level":25,"moves":["batonpass","psychic","raindance","rocktomb"]}
@@ -2869,7 +2893,7 @@ exports.BattleFormatsData = {
kecleon: {
randomBattleMoves: ["fakeout","knockoff","drainpunch","suckerpunch","shadowsneak","stealthrock","recover"],
randomDoubleBattleMoves: ["knockoff","fakeout","trickroom","recover","drainpunch","suckerpunch","shadowsneak","protect"],
tier: "BL4"
tier: "NU"
},
shuppet: {
randomBattleMoves: ["trickroom","destinybond","taunt","shadowsneak","suckerpunch","willowisp"],
@@ -2885,12 +2909,13 @@ exports.BattleFormatsData = {
{"generation":3,"level":37,"abilities":["insomnia"],"moves":["helpinghand","feintattack","shadowball","curse"]},
{"generation":5,"level":37,"gender":"F","isHidden":true,"moves":["feintattack","hex","shadowball","cottonguard"]}
],
tier: "RU"
tier: "BL3"
},
banettemega: {
randomBattleMoves: ["destinybond","taunt","shadowclaw","suckerpunch","willowisp","knockoff"],
randomDoubleBattleMoves: ["destinybond","taunt","shadowclaw","suckerpunch","willowisp","knockoff","protect"],
requiredItem: "Banettite"
requiredItem: "Banettite",
tier: "RU"
},
duskull: {
randomBattleMoves: ["willowisp","shadowsneak","icebeam","painsplit","substitute","nightshade"],
@@ -2938,12 +2963,13 @@ exports.BattleFormatsData = {
{"generation":3,"level":35,"abilities":["pressure"],"moves":["razorwind","bite","swordsdance","spite"]},
{"generation":3,"level":70,"abilities":["pressure"],"moves":["doubleteam","slash","futuresight","perishsong"]}
],
tier: "UU"
tier: "BL2"
},
absolmega: {
randomBattleMoves: ["swordsdance","suckerpunch","knockoff","fireblast","superpower","pursuit","playrough","icebeam"],
randomDoubleBattleMoves: ["swordsdance","suckerpunch","knockoff","fireblast","superpower","protect","playrough"],
requiredItem: "Absolite"
requiredItem: "Absolite",
tier: "UU"
},
snorunt: {
randomBattleMoves: ["spikes","icebeam","hiddenpowerground","iceshard","crunch","switcheroo"],
@@ -2955,12 +2981,13 @@ exports.BattleFormatsData = {
glalie: {
randomBattleMoves: ["spikes","icebeam","iceshard","taunt","earthquake","explosion","superfang"],
randomDoubleBattleMoves: ["icebeam","iceshard","taunt","earthquake","protect"],
tier: "RU"
tier: "BL3"
},
glaliemega: {
randomBattleMoves: ["crunch","iceshard","taunt","earthquake","explosion","return","spikes"],
randomDoubleBattleMoves: ["crunch","iceshard","taunt","earthquake","explosion","protect","return"],
requiredItem: "Glalitite"
requiredItem: "Glalitite",
tier: "RU"
},
froslass: {
randomBattleMoves: ["icebeam","spikes","destinybond","shadowball","taunt","thunderwave"],
@@ -3066,12 +3093,13 @@ exports.BattleFormatsData = {
{"generation":5,"level":45,"isHidden":true,"moves":["psychic","meteormash","hammerarm","doubleedge"]},
{"generation":5,"level":58,"nature":"Serious","isHidden":false,"moves":["earthquake","hyperbeam","psychic","meteormash"],"pokeball":"cherishball"}
],
tier: "OU"
tier: "BL"
},
metagrossmega: {
randomBattleMoves: ["meteormash","earthquake","agility","zenheadbutt","hammerarm","icepunch"],
randomDoubleBattleMoves: ["meteormash","earthquake","protect","zenheadbutt","thunderpunch","icepunch"],
requiredItem: "Metagrossite"
requiredItem: "Metagrossite",
tier: "OU"
},
regirock: {
randomBattleMoves: ["stealthrock","thunderwave","stoneedge","drainpunch","curse","rest","rockslide","toxic"],
@@ -3113,7 +3141,8 @@ exports.BattleFormatsData = {
latiasmega: {
randomBattleMoves: ["calmmind","dragonpulse","surf","dracometeor","roost","hiddenpowerfire","substitute","psyshock"],
randomDoubleBattleMoves: ["dragonpulse","psychic","tailwind","helpinghand","healpulse","lightscreen","reflect","protect"],
requiredItem: "Latiasite"
requiredItem: "Latiasite",
tier: "BL"
},
latios: {
randomBattleMoves: ["dracometeor","hiddenpowerfire","surf","thunderbolt","psyshock","roost","trick","defog"],
@@ -3128,7 +3157,8 @@ exports.BattleFormatsData = {
latiosmega: {
randomBattleMoves: ["calmmind","dracometeor","hiddenpowerfire","psyshock","roost","memento","defog"],
randomDoubleBattleMoves: ["dracometeor","dragonpulse","surf","thunderbolt","psyshock","substitute","trick","tailwind","protect","hiddenpowerfire"],
requiredItem: "Latiosite"
requiredItem: "Latiosite",
tier: "BL"
},
kyogre: {
randomBattleMoves: ["waterspout","originpulse","scald","thunder","icebeam"],
@@ -3178,7 +3208,7 @@ exports.BattleFormatsData = {
},
jirachi: {
randomBattleMoves: ["ironhead","uturn","firepunch","icepunch","trick","stealthrock","bodyslam","toxic","wish","substitute"],
randomDoubleBattleMoves: ["bodyslam","ironhead","icywind","thunderwave","helpinghand","trickroom","uturn","followme","psychic","protect"],
randomDoubleBattleMoves: ["bodyslam","ironhead","icywind","thunderwave","helpinghand","trickroom","uturn","followme","zenheadbutt","protect"],
eventPokemon: [
{"generation":3,"level":5,"moves":["wish","confusion","rest"]},
{"generation":3,"level":30,"moves":["helpinghand","psychic","refresh","rest"]},
@@ -3280,7 +3310,7 @@ exports.BattleFormatsData = {
eventPokemon: [
{"generation":5,"level":100,"gender":"M","isHidden":false,"moves":["woodhammer","earthquake","outrage","stoneedge"],"pokeball":"cherishball"}
],
tier: "PU"
tier: "NU"
},
chimchar: {
randomBattleMoves: ["stealthrock","overheat","hiddenpowergrass","fakeout","uturn","gunkshot"],
@@ -3485,12 +3515,13 @@ exports.BattleFormatsData = {
lopunny: {
randomBattleMoves: ["return","switcheroo","highjumpkick","icepunch","healingwish"],
randomDoubleBattleMoves: ["return","switcheroo","highjumpkick","firepunch","icepunch","fakeout","protect","encore"],
tier: "OU"
tier: "BL"
},
lopunnymega: {
randomBattleMoves: ["return","highjumpkick","substitute","thunderpunch","icepunch"],
randomDoubleBattleMoves: ["return","highjumpkick","protect","fakeout","icepunch","encore"],
requiredItem: "Lopunnite"
requiredItem: "Lopunnite",
tier: "OU"
},
glameow: {
randomBattleMoves: ["fakeout","uturn","suckerpunch","hypnosis","quickattack","return","foulplay"],
@@ -3508,7 +3539,7 @@ exports.BattleFormatsData = {
skuntank: {
randomBattleMoves: ["pursuit","suckerpunch","crunch","fireblast","taunt","poisonjab","defog"],
randomDoubleBattleMoves: ["protect","suckerpunch","crunch","fireblast","taunt","poisonjab","playrough","snarl"],
tier: "RU"
tier: "NU"
},
bronzor: {
randomBattleMoves: ["stealthrock","psychic","toxic","hypnosis","reflect","lightscreen","trickroom","trick"],
@@ -3557,7 +3588,8 @@ exports.BattleFormatsData = {
garchompmega: {
randomBattleMoves: ["outrage","dracometeor","earthquake","stoneedge","fireblast","swordsdance"],
randomDoubleBattleMoves: ["substitute","dragonclaw","earthquake","stoneedge","rockslide","swordsdance","protect","fireblast"],
requiredItem: "Garchompite"
requiredItem: "Garchompite",
tier: "BL"
},
riolu: {
randomBattleMoves: ["crunch","rockslide","copycat","drainpunch","highjumpkick","icepunch","swordsdance"],
@@ -3635,12 +3667,13 @@ exports.BattleFormatsData = {
abomasnow: {
randomBattleMoves: ["woodhammer","iceshard","blizzard","gigadrain","leechseed","substitute","focuspunch","earthquake"],
randomDoubleBattleMoves: ["blizzard","iceshard","gigadrain","protect","focusblast","woodhammer","earthquake"],
tier: "UU"
tier: "BL2"
},
abomasnowmega: {
randomBattleMoves: ["blizzard","gigadrain","woodhammer","earthquake","iceshard","hiddenpowerfire"],
randomDoubleBattleMoves: ["blizzard","iceshard","gigadrain","protect","focusblast","woodhammer","earthquake"],
requiredItem: "Abomasite"
requiredItem: "Abomasite",
tier: "BL2"
},
rotom: {
randomBattleMoves: ["thunderbolt","voltswitch","shadowball","substitute","painsplit","hiddenpowerice","trick","willowisp"],
@@ -3699,7 +3732,7 @@ exports.BattleFormatsData = {
uxie: {
randomBattleMoves: ["stealthrock","thunderwave","psychic","uturn","healbell","knockoff","yawn"],
randomDoubleBattleMoves: ["uturn","psyshock","yawn","healbell","stealthrock","thunderbolt","protect","helpinghand","thunderwave","skillswap"],
tier: "NU"
tier: "RU"
},
mesprit: {
randomBattleMoves: ["calmmind","psychic","psyshock","energyball","signalbeam","hiddenpowerfire","icebeam","healingwish","stealthrock","uturn"],
@@ -4133,12 +4166,13 @@ exports.BattleFormatsData = {
{"generation":5,"level":30,"gender":"F","nature":"Calm","isHidden":false,"abilities":["healer"],"moves":["healpulse","helpinghand","refresh","doubleslap"],"pokeball":"cherishball"},
{"generation":5,"level":30,"gender":"F","nature":"Serious","isHidden":false,"abilities":["healer"],"moves":["healpulse","helpinghand","refresh","present"],"pokeball":"cherishball"}
],
tier: "NU"
tier: "BL4"
},
audinomega: {
randomBattleMoves: ["wish","calmmind","healbell","dazzlinggleam","hypervoice","protect"],
randomDoubleBattleMoves: ["healpulse","protect","healbell","trickroom","thunderwave","hypervoice","helpinghand","dazzlinggleam"],
requiredItem: "Audinite"
requiredItem: "Audinite",
tier: "NU"
},
timburr: {
randomBattleMoves: ["machpunch","bulkup","drainpunch","icepunch","knockoff"],
@@ -4369,8 +4403,8 @@ exports.BattleFormatsData = {
},
gothitelle: {
randomBattleMoves: ["psychic","thunderbolt","shadowball","hiddenpowerfire","hiddenpowerfighting","substitute","calmmind","trick","psyshock"],
randomDoubleBattleMoves: ["psychic","thunderbolt","shadowball","hiddenpowerfighting","reflect","lightscreen","psyshock","energyball","trickroom","taunt","helpinghand","healpulse","protect"],
tier: "OU"
randomDoubleBattleMoves: ["psychic","thunderbolt","shadowball","hiddenpowerfighting","reflect","lightscreen","psyshock","energyball","trickroom","taunt","healpulse","protect"],
tier: "UU"
},
solosis: {
randomBattleMoves: ["calmmind","recover","psychic","hiddenpowerfighting","shadowball","trickroom","psyshock"],
@@ -4619,7 +4653,7 @@ exports.BattleFormatsData = {
},
pawniard: {
randomBattleMoves: ["swordsdance","substitute","suckerpunch","ironhead","brickbreak","knockoff"],
tier: "PU"
tier: "NU"
},
bisharp: {
randomBattleMoves: ["swordsdance","substitute","suckerpunch","ironhead","brickbreak","knockoff"],
@@ -4648,7 +4682,7 @@ exports.BattleFormatsData = {
tier: "LC"
},
mandibuzz: {
randomBattleMoves: ["knockoff","roost","taunt","whirlwind","toxic","uturn","bravebird","defog"],
randomBattleMoves: ["foulplay","knockoff","roost","taunt","whirlwind","toxic","uturn","bravebird","defog"],
randomDoubleBattleMoves: ["knockoff","roost","taunt","tailwind","snarl","uturn","bravebird","protect"],
eventPokemon: [
{"generation":5,"level":25,"gender":"F","isHidden":true,"moves":["pluck","nastyplot","flatter","feintattack"]}
@@ -4917,7 +4951,7 @@ exports.BattleFormatsData = {
},
fletchinder: {
randomBattleMoves: ["roost","swordsdance","uturn","return","overheat","flamecharge","tailwind","acrobatics"],
tier: "NU"
tier: "RU"
},
talonflame: {
randomBattleMoves: ["bravebird","flareblitz","roost","swordsdance","uturn","willowisp","tailwind"],
@@ -5113,7 +5147,7 @@ exports.BattleFormatsData = {
aurorus: {
randomBattleMoves: ["ancientpower","thunderbolt","encore","thunderwave","earthpower","freezedry","hypervoice","stealthrock"],
randomDoubleBattleMoves: ["hypervoice","ancientpower","thunderbolt","encore","thunderwave","flashcannon","freezedry","icywind","protect"],
tier: "PU"
tier: "NU"
},
sylveon: {
randomBattleMoves: ["hypervoice","calmmind","wish","protect","psyshock","batonpass","shadowball"],
@@ -5155,7 +5189,7 @@ exports.BattleFormatsData = {
klefki: {
randomBattleMoves: ["reflect","lightscreen","spikes","magnetrise","playrough","thunderwave","foulplay","toxic"],
randomDoubleBattleMoves: ["reflect","lightscreen","safeguard","playrough","substitute","thunderwave","protect","flashcannon","dazzlinggleam"],
tier: "BL"
tier: "OU"
},
phantump: {
randomBattleMoves: ["hornleech","leechseed","phantomforce","substitute","willowisp","curse","bulldoze","rockslide","poisonjab"],
@@ -5252,24 +5286,27 @@ exports.BattleFormatsData = {
{"generation":6,"level":50,"moves":["diamondstorm","reflect","return","moonblast"],"pokeball":"cherishball"}
],
unobtainableShiny: true,
tier: "OU"
tier: "BL"
},
dianciemega: {
randomBattleMoves: ["calmmind","moonblast","earthpower","hiddenpowerfire","psyshock","diamondstorm"],
randomDoubleBattleMoves: ["diamondstorm","moonblast","calmmind","psyshock","earthpower","hiddenpowerfire","dazzlinggleam","protect"],
requiredItem: "Diancite"
requiredItem: "Diancite",
tier: "OU"
},
hoopa: {
randomBattleMoves: ["nastyplot","psyshock","shadowball","focusblast","trick"],
randomDoubleBattleMoves: ["hyperspacehole","shadowball","focusblast","protect","psychic"],
randomDoubleBattleMoves: ["hyperspacehole","shadowball","focusblast","protect","psychic","trickroom"],
eventPokemon: [
{"generation":6,"level":50,"moves":["hyperspacehole","nastyplot","psychic","astonish"],"pokeball":"cherishball"}
],
unobtainableShiny: true,
tier: "OU"
},
hoopaunbound: {
randomBattleMoves: ["nastyplot","psyshock","darkpulse","focusblast","hyperspacefury","zenheadbutt","icepunch","drainpunch","knockoff","trick"],
randomDoubleBattleMoves: ["psychic","darkpulse","focusblast","protect","hyperspacefury","zenheadbutt","icepunch","drainpunch"],
randomBattleMoves: ["nastyplot","substitute","psyshock","psychic","darkpulse","focusblast","hyperspacefury","zenheadbutt","icepunch","drainpunch","gunkshot","knockoff","trick"],
randomDoubleBattleMoves: ["psychic","darkpulse","focusblast","protect","hyperspacefury","zenheadbutt","icepunch","drainpunch","gunkshot"],
unobtainableShiny: true,
tier: "OU"
},
volcanion: {

View File

@@ -794,8 +794,8 @@ exports.BattleItems = {
onModifyMove: function (move, pokemon) {
pokemon.addVolatile('choicelock');
},
onModifySpe: function (speMod) {
return this.chain(speMod, 1.5);
onModifySpe: function (spe) {
return this.chainModify(1.5);
},
isChoice: true,
num: 287,
@@ -2031,8 +2031,8 @@ exports.BattleItems = {
onNegateImmunity: function (pokemon, type) {
if (type === 'Ground') return false;
},
onModifySpe: function (speMod) {
return this.chain(speMod, 0.5);
onModifySpe: function (spe) {
return this.chainModify(0.5);
},
num: 278,
gen: 4,
@@ -2327,6 +2327,19 @@ exports.BattleItems = {
move.pp += 10;
if (move.pp > move.maxpp) move.pp = move.maxpp;
this.add('-activate', pokemon, 'item: Leppa Berry', move.move);
if (pokemon.item !== 'leppaberry') {
var foeActive = pokemon.side.foe.active;
var foeIsStale = false;
for (var i = 0; i < 1; i++) {
if (foeActive.isStale >= 2) {
foeIsStale = true;
break;
}
}
if (!foeIsStale) return;
}
pokemon.isStale = 2;
pokemon.isStaleSource = 'useleppa';
},
num: 154,
gen: 3,
@@ -2546,8 +2559,8 @@ exports.BattleItems = {
fling: {
basePower: 60
},
onModifySpe: function (speMod) {
return this.chain(speMod, 0.5);
onModifySpe: function (spe) {
return this.chainModify(0.5);
},
num: 215,
gen: 3,
@@ -3479,9 +3492,9 @@ exports.BattleItems = {
fling: {
basePower: 10
},
onModifySpe: function (speMod, pokemon) {
onModifySpe: function (spe, pokemon) {
if (pokemon.template.species === 'Ditto' && !pokemon.transformed) {
return this.chain(speMod, 2);
return this.chainModify(2);
}
},
num: 274,

View File

@@ -624,13 +624,14 @@ exports.BattleMovedex = {
this.add('-start', pokemon, 'Attract');
}
},
onBeforeMovePriority: 2,
onBeforeMove: function (pokemon, target, move) {
onUpdate: function (pokemon) {
if (this.effectData.source && !this.effectData.source.isActive && pokemon.volatiles['attract']) {
this.debug('Removing Attract volatile on ' + pokemon);
pokemon.removeVolatile('attract');
return;
}
},
onBeforeMovePriority: 2,
onBeforeMove: function (pokemon, target, move) {
this.add('-activate', pokemon, 'Attract', '[of] ' + this.effectData.source);
if (this.random(2) === 0) {
this.add('cant', pokemon, 'Attract');
@@ -2204,10 +2205,6 @@ exports.BattleMovedex = {
},
onTryHitPriority: 3,
onTryHit: function (target, source, move) {
if (move.breaksProtect) {
target.side.removeSideCondition('craftyshield');
return;
}
if (move && (move.target === 'self' || move.category !== 'Status')) return;
this.add('-activate', target, 'Crafty Shield');
return null;
@@ -2339,7 +2336,7 @@ exports.BattleMovedex = {
if (!source.hasType('Ghost')) {
delete move.volatileStatus;
delete move.onHit;
move.self = {boosts: {atk:1, def:1, spe:-1}};
move.self = {boosts: {spe:-1, atk:1, def:1}};
} else if (move.volatileStatus && target.volatiles.curse) {
return false;
}
@@ -2831,6 +2828,7 @@ exports.BattleMovedex = {
targetPosition: target.position,
source: source,
moveData: {
name: "Doom Desire",
basePower: 140,
category: "Special",
flags: {},
@@ -3943,17 +3941,7 @@ exports.BattleMovedex = {
priority: 2,
flags: {mirror: 1},
breaksProtect: true,
onHit: function (target) {
var feinted = false;
if (target.removeVolatile('protect') || target.removeVolatile('kingsshield') || target.removeVolatile('spikyshield')) {
feinted = true;
}
if (target.side.removeSideCondition('quickguard')) feinted = true;
if (target.side.removeSideCondition('wideguard')) feinted = true;
if (target.removeVolatile('matblock')) feinted = true;
if (target.side.removeSideCondition('craftyshield')) feinted = true;
if (feinted) this.add('-activate', target, 'move: Feint');
},
// Breaking protection implemented in scripts.js
secondary: false,
target: "normal",
type: "Normal"
@@ -5017,6 +5005,7 @@ exports.BattleMovedex = {
targetPosition: target.position,
source: source,
moveData: {
name: "Future Sight",
basePower: 120,
category: "Special",
flags: {},
@@ -5288,8 +5277,8 @@ exports.BattleMovedex = {
onEnd: function (targetSide) {
this.add('-sideend', targetSide, 'Grass Pledge');
},
onModifySpe: function (speMod, pokemon) {
return this.chain(speMod, 0.25);
onModifySpe: function (spe, pokemon) {
return this.chainModify(0.25);
}
},
secondary: false,
@@ -6775,7 +6764,7 @@ exports.BattleMovedex = {
var bp = 30;
var bpTable = [30, 60, 120, 240, 480];
if (pokemon.volatiles.iceball && pokemon.volatiles.iceball.hitCount) {
bp = (bpTable[pokemon.volatiles.iceball.hitCount] || 480);
bp = (bpTable[pokemon.volatiles.iceball.hitCount] || 30);
}
pokemon.addVolatile('iceball');
if (pokemon.volatiles.defensecurl) {
@@ -7314,10 +7303,6 @@ exports.BattleMovedex = {
onTryHitPriority: 3,
onTryHit: function (target, source, move) {
if (!move.flags['protect'] || move.category === 'Status') return;
if (move.breaksProtect) {
target.removeVolatile('kingsshield');
return;
}
this.add('-activate', target, 'Protect');
var lockedmove = source.getVolatile('lockedmove');
if (lockedmove) {
@@ -8035,7 +8020,7 @@ exports.BattleMovedex = {
}
}
if (!targets.length) return false;
for (var i = 0; i < targets.length; i++) this.boost({spd: 1, def: 1}, targets[i], source, 'move: Magnetic Flux');
for (var i = 0; i < targets.length; i++) this.boost({def: 1, spd: 1}, targets[i], source, 'move: Magnetic Flux');
},
secondary: false,
target: "allySide",
@@ -8126,7 +8111,7 @@ exports.BattleMovedex = {
priority: 0,
flags: {snatch: 1, nonsky: 1},
stallingMove: true,
volatileStatus: 'matblock',
sideCondition: 'matblock',
onTryHitSide: function (side, source) {
if (source.activeTurns > 1) {
this.add('-hint', "Mat Block only works on your first turn out.");
@@ -8135,15 +8120,12 @@ exports.BattleMovedex = {
},
effect: {
duration: 1,
onStart: function (target) {
this.add('-singleturn', target, 'Mat Block');
onStart: function (target, source) {
this.add('-singleturn', source, 'Mat Block');
},
onTryHitPriority: 3,
onAllyTryHit: function (target, source, move) {
if (move.breaksProtect) {
target.removeVolatile('Mat Block');
return;
}
onTryHit: function (target, source, move) {
if (!move.flags['protect']) return;
if (move && (move.target === 'self' || move.category === 'Status')) return;
this.add('-activate', target, 'Mat Block', move.name);
var lockedmove = source.getVolatile('lockedmove');
@@ -8520,7 +8502,8 @@ exports.BattleMovedex = {
maxpp: move.pp,
target: move.target,
disabled: false,
used: false
used: false,
virtual: true
};
source.moves[moveslot] = toId(move.name);
this.add('-start', source, 'Mimic', move.name);
@@ -10176,10 +10159,6 @@ exports.BattleMovedex = {
onTryHitPriority: 3,
onTryHit: function (target, source, move) {
if (!move.flags['protect']) return;
if (move.breaksProtect) {
target.removeVolatile('Protect');
return;
}
this.add('-activate', target, 'Protect');
var lockedmove = source.getVolatile('lockedmove');
if (lockedmove) {
@@ -11299,7 +11278,7 @@ exports.BattleMovedex = {
var bp = 30;
var bpTable = [30, 60, 120, 240, 480];
if (pokemon.volatiles.rollout && pokemon.volatiles.rollout.hitCount) {
bp = (bpTable[pokemon.volatiles.rollout.hitCount] || 480);
bp = (bpTable[pokemon.volatiles.rollout.hitCount] || 30);
}
pokemon.addVolatile('rollout');
if (pokemon.volatiles.defensecurl) {
@@ -11700,7 +11679,7 @@ exports.BattleMovedex = {
basePower: 70,
category: "Physical",
desc: "Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, and causes sleep during Grassy Terrain. The secondary effect chance is not affected by the Ability Serene Grace.",
shortDesc: "Effect varies with terrain. (30% accuracy lower 1.)",
shortDesc: "Effect varies with terrain. (30% paralysis chance)",
id: "secretpower",
name: "Secret Power",
pp: 20,
@@ -11994,11 +11973,11 @@ exports.BattleMovedex = {
priority: 0,
flags: {snatch: 1},
boosts: {
def: -1,
spd: -1,
atk: 2,
spa: 2,
spe: 2,
def: -1,
spd: -1
spe: 2
},
secondary: false,
target: "self",
@@ -12018,8 +11997,8 @@ exports.BattleMovedex = {
priority: 0,
flags: {snatch: 1},
boosts: {
atk: 1,
spe: 2
spe: 2,
atk: 1
},
secondary: false,
target: "self",
@@ -12775,10 +12754,6 @@ exports.BattleMovedex = {
onTryHitPriority: 3,
onTryHit: function (target, source, move) {
if (!move.flags['protect']) return;
if (move.breaksProtect) {
target.removeVolatile('spikyshield');
return;
}
this.add('-activate', target, 'Protect');
var lockedmove = source.getVolatile('lockedmove');
if (lockedmove) {
@@ -13040,7 +13015,7 @@ exports.BattleMovedex = {
flags: {protect: 1, reflectable: 1, mirror: 1, authentic: 1},
onHit: function (target) {
if (target.deductPP(target.lastMove, 4)) {
this.add("-activate", target, 'move: Spite', target.lastMove, 4);
this.add("-activate", target, 'move: Spite', this.getMove(target.lastMove).name, 4);
return;
}
return false;
@@ -13374,7 +13349,7 @@ exports.BattleMovedex = {
noPPBoosts: true,
priority: 0,
flags: {contact: 1, protect: 1},
onModifyMove: function (move, pokemon) {
onModifyMove: function (move, pokemon, target) {
move.type = '???';
this.add('-activate', pokemon, 'move: Struggle');
},
@@ -13941,8 +13916,8 @@ exports.BattleMovedex = {
onStart: function (side) {
this.add('-sidestart', side, 'move: Tailwind');
},
onModifySpe: function (speMod, pokemon) {
return this.chain(speMod, 2);
onModifySpe: function (spe, pokemon) {
return this.chainModify(2);
},
onResidualOrder: 21,
onResidualSubOrder: 4,
@@ -14832,9 +14807,9 @@ exports.BattleMovedex = {
flags: {contact: 1, protect: 1, mirror: 1},
self: {
boosts: {
spe: -1,
def: -1,
spd: -1,
spe: -1
spd: -1
}
},
secondary: false,

View File

@@ -493,12 +493,30 @@ exports.BattleFormats = {
endlessbattleclause: {
effectType: 'Banlist',
name: 'Endless Battle Clause',
banlist: ['Leppa Berry + Recycle', 'Harvest + Leppa Berry', 'Trace + Leppa Berry', 'Leppa Berry + Trick', 'Leppa Berry + Switcheroo', 'Leppa Berry + Bestow', 'Fling + Leppa Berry', 'Assist + Leppa Berry'],
validateSet: function (set, format, setHas) {
if (format.gameType === 'singles' && format.id !== 'anythinggoes' && 'healpulse' in setHas) {
return [set.name + " has Heal Pulse, which is banned in Singles by Endless Battle Clause."];
}
},
// implemented in battle-engine.js
// A Pokémon has a confinement counter, which starts at 0:
// +1 confinement whenever:
// - it has no available moves other than Struggle
// - it was forced to switch by a stale opponent before it could do its
// action for the turn
// - it intentionally switched out the turn after it switched in against
// a stale Pokémon
// - it shifts in Triples against a stale Pokémon
// - it has gone 5 turns without losing PP (mimiced/transformed moves
// count only if no foe is stale)
// confinement reset to 0 whenever:
// - it uses PP while not Transformed/Impostered
// - if it has at least 2 confinement, and begins a turn without losing
// at least 1% of its max HP from the last time its confinement counter
// was 0 - user also becomes half-stale if not already half-stale, or
// stale if already half-stale
// A Pokémon is also considered stale if:
// - it has gained a Leppa berry through any means besides starting
// with one
// - OR it has eaten a Leppa berry it isn't holding
onStart: function () {
this.add('rule', 'Endless Battle Clause: Forcing endless battles is banned');
}

View File

@@ -44,6 +44,8 @@ exports.BattleScripts = {
this.clearActiveMove(true);
return;
}
} else {
sourceEffect = this.getEffect('lockedmove');
}
pokemon.moveUsed(move);
this.useMove(move, pokemon, target, sourceEffect);
@@ -95,6 +97,7 @@ exports.BattleScripts = {
if (target === false) {
this.attrLastMove('[notarget]');
this.add('-notarget');
if (move.target === 'normal') pokemon.isStaleCon = 0;
return true;
}
@@ -150,6 +153,7 @@ exports.BattleScripts = {
if (lacksTarget) {
this.attrLastMove('[notarget]');
this.add('-notarget');
if (move.target === 'normal') pokemon.isStaleCon = 0;
return true;
}
damage = this.tryMoveHit(target, pokemon, move);
@@ -267,6 +271,25 @@ exports.BattleScripts = {
return false;
}
if (move.breaksProtect) {
var broke = false;
for (var i in {kingsshield:1, protect:1, spikyshield:1}) {
if (target.removeVolatile(i)) broke = true;
}
if (this.gen >= 6 || target.side !== pokemon.side) {
for (var i in {craftyshield:1, matblock:1, quickguard:1, wideguard:1}) {
if (target.side.removeSideCondition(i)) broke = true;
}
}
if (broke) {
if (move.id === 'feint') {
this.add('-activate', target, 'move: Feint');
} else {
this.add('-activate', target, 'move: ' + move.name, '[broken]');
}
}
}
var totalDamage = 0;
var damage = 0;
pokemon.lastDamage = 0;
@@ -1187,8 +1210,8 @@ exports.BattleScripts = {
if (!!counter['speedsetup'] || hasMove['encore'] || hasMove['raindance'] || hasMove['roar'] || hasMove['whirlwind']) rejected = true;
if (counter.setupType && hasMove['stormthrow']) rejected = true;
break;
case 'defog': case 'pursuit': case 'haze': case 'healingwish': case 'rapidspin': case 'spikes': case 'toxicspikes': case 'waterspout':
if (counter.setupType || !!counter['speedsetup'] || (hasMove['rest'] && hasMove['sleeptalk'])) rejected = true;
case 'defog': case 'rapidspin':
if (counter.setupType || !!counter['speedsetup'] || (hasMove['rest'] && hasMove['sleeptalk']) || teamDetails.hazardClear > 1) rejected = true;
break;
case 'fakeout':
if (counter.setupType || hasMove['substitute'] || hasMove['switcheroo'] || hasMove['trick']) rejected = true;
@@ -1196,6 +1219,9 @@ exports.BattleScripts = {
case 'foulplay': case 'nightshade': case 'seismictoss': case 'superfang':
if (counter.setupType) rejected = true;
break;
case 'haze': case 'healingwish': case 'pursuit': case 'spikes': case 'toxicspikes': case 'waterspout':
if (counter.setupType || !!counter['speedsetup'] || (hasMove['rest'] && hasMove['sleeptalk'])) rejected = true;
break;
case 'healbell':
if (!!counter['speedsetup']) rejected = true;
break;
@@ -1207,7 +1233,7 @@ exports.BattleScripts = {
if (hasMove['rest'] && hasMove['sleeptalk']) rejected = true;
break;
case 'stealthrock':
if (counter.setupType || !!counter['speedsetup'] || hasMove['rest'] || teamDetails.stealthRock > 2) rejected = true;
if (counter.setupType || !!counter['speedsetup'] || hasMove['rest'] || teamDetails.stealthRock > 1) rejected = true;
break;
case 'switcheroo': case 'trick':
if (counter.setupType || counter.Physical + counter.Special < 2) rejected = true;
@@ -1243,6 +1269,9 @@ exports.BattleScripts = {
case 'dragonpulse': case 'spacialrend':
if (hasMove['dracometeor']) rejected = true;
break;
case 'outrage':
if (hasMove['dracometeor'] && counter.damagingMoves.length < 3) rejected = true;
break;
case 'thunder':
if (hasMove['thunderbolt'] && !hasMove['raindance']) rejected = true;
break;
@@ -1793,7 +1822,7 @@ exports.BattleScripts = {
item = 'Black Sludge';
} else if (this.getEffectiveness('Rock', template) >= 1 || hasMove['dragontail']) {
item = 'Leftovers';
} else if (this.getImmunity('Ground', template) && this.getEffectiveness('Ground', template) >= 1 && ability !== 'Levitate' && ability !== 'Solid Rock' && !hasMove['magnetrise']) {
} else if (this.getImmunity('Ground', template) && this.getEffectiveness('Ground', template) >= 1 && ability !== 'Levitate' && ability !== 'Solid Rock' && !hasMove['magnetrise'] && !hasMove['sleeptalk']) {
item = 'Air Balloon';
} else if (counter.Status <= 1 && ability !== 'Sturdy') {
item = 'Life Orb';
@@ -1829,7 +1858,7 @@ exports.BattleScripts = {
Aegislash: 74, Blaziken: 74, 'Blaziken-Mega': 74, Genesect: 74, 'Genesect-Burn': 74, 'Genesect-Chill': 74, 'Genesect-Douse': 74, 'Genesect-Shock': 74, Greninja: 74, 'Kangaskhan-Mega': 74, 'Lucario-Mega': 74, 'Mawile-Mega': 74,
// Not holding Mega Stone
Banette: 83, Beedrill: 83, Glalie: 83, Lopunny: 83, Pidgeot: 83,
Banette: 83, Beedrill: 83, Glalie: 83, Lopunny: 83,
Altaria: 81, Ampharos: 81, Charizard: 81,
Aerodactyl: 79, Aggron: 79, Blastoise: 79, Gardevoir: 79, Manectric: 79, Sceptile: 79, Venusaur: 79,
Diancie: 77, Metagross: 77, Sableye: 77,
@@ -1915,7 +1944,7 @@ exports.BattleScripts = {
var baseFormes = {};
var uberCount = 0;
var puCount = 0;
var teamDetails = {megaCount: 0, stealthRock: 0};
var teamDetails = {megaCount: 0, stealthRock: 0, hazardClear: 0};
while (pokemonPool.length && pokemonLeft < 6) {
var template = this.getTemplate(this.sampleNoReplace(pokemonPool));
@@ -1960,16 +1989,19 @@ exports.BattleScripts = {
case 'Basculin':
if (this.random(2) >= 1) continue;
break;
case 'Castform':
if (this.random(2) >= 1) continue;
break;
case 'Genesect':
if (this.random(5) >= 1) continue;
break;
case 'Gourgeist':
if (this.random(4) >= 1) continue;
break;
case 'Meloetta':
case 'Hoopa':
if (this.random(2) >= 1) continue;
break;
case 'Castform':
case 'Meloetta':
if (this.random(2) >= 1) continue;
break;
case 'Pikachu':
@@ -2046,6 +2078,7 @@ exports.BattleScripts = {
// Increment mega, stealthrock, and base species counters
if (isMegaSet) teamDetails.megaCount++;
if (set.moves.indexOf('stealthrock') >= 0) teamDetails.stealthRock++;
if (set.moves.indexOf('defog') >= 0 || set.moves.indexOf('rapidspin') >= 0) teamDetails.hazardClear++;
baseFormes[template.baseSpecies] = 1;
}
return pokemon;
@@ -2110,16 +2143,19 @@ exports.BattleScripts = {
case 'Basculin':
if (this.random(2) >= 1) continue;
break;
case 'Castform':
if (this.random(2) >= 1) continue;
break;
case 'Genesect':
if (this.random(5) >= 1) continue;
break;
case 'Gourgeist':
if (this.random(4) >= 1) continue;
break;
case 'Meloetta':
case 'Hoopa':
if (this.random(2) >= 1) continue;
break;
case 'Castform':
case 'Meloetta':
if (this.random(2) >= 1) continue;
break;
case 'Pikachu':
@@ -2460,7 +2496,7 @@ exports.BattleScripts = {
if (hasMove['gunkshot']) rejected = true;
break;
case 'psychic':
if (hasMove['psyshock']) rejected = true;
if (hasMove['psyshock'] || hasMove['hyperspacehole']) rejected = true;
break;
case 'fusionbolt':
if (counter.setupType && hasMove['boltstrike']) rejected = true;
@@ -2531,7 +2567,7 @@ exports.BattleScripts = {
if (hasMove['willowisp']) rejected = true;
break;
case 'trickroom':
if (hasMove['rockpolish'] || hasMove['agility']) rejected = true;
if (hasMove['rockpolish'] || hasMove['agility'] || hasMove['icywind']) rejected = true;
break;
case 'willowisp':
if (hasMove['scald'] || hasMove['yawn'] || hasMove['spore'] || hasMove['sleeppowder']) rejected = true;
@@ -2987,6 +3023,160 @@ exports.BattleScripts = {
shiny: !this.random(template.id === 'missingno' ? 4 : 1024)
};
},
randomRainbowTeam: function () {
var pokemonLeft = 0;
var pokemon = [];
var excludedTiers = {'LC':1, 'LC Uber':1, 'NFE':1};
var allowedNFE = {'Chansey':1, 'Doublade':1, 'Gligar':1, 'Porygon2':1, 'Scyther':1};
var excludedColors = {'Black':1, 'Brown':1, 'Gray':1, 'White':1};
var pokemonPool = [];
for (var id in this.data.FormatsData) {
var template = this.getTemplate(id);
if (!excludedTiers[template.tier] && !excludedColors[template.color] && !template.isMega && !template.isPrimal && !template.isNonstandard && template.randomBattleMoves) {
pokemonPool.push(id);
}
}
var typeCount = {};
var typeComboCount = {};
var colorCount = {};
var baseFormes = {};
var uberCount = 0;
var puCount = 0;
var teamDetails = {megaCount: 0, stealthRock: 0};
while (pokemonPool.length && pokemonLeft < 6) {
var template = this.getTemplate(this.sampleNoReplace(pokemonPool));
if (!template.exists) continue;
// Limit to one of each species (Species Clause)
if (baseFormes[template.baseSpecies]) continue;
// Not available on ORAS
if (template.species === 'Pichu-Spiky-eared') continue;
// Useless in Random Battle without greatly lowering the levels of everything else
if (template.species === 'Unown') continue;
// Only certain NFE Pokemon are allowed
if (template.evos.length && !allowedNFE[template.species]) continue;
var tier = template.tier;
switch (tier) {
case 'PU':
// PUs are limited to 2 but have a 20% chance of being added anyway.
if (puCount > 1 && this.random(5) >= 1) continue;
break;
case 'Uber':
// Ubers are limited to 2 but have a 20% chance of being added anyway.
if (uberCount > 1 && this.random(5) >= 1) continue;
break;
case 'CAP':
// CAPs have 20% the normal rate
if (this.random(5) >= 1) continue;
break;
case 'Unreleased':
// Unreleased Pokémon have 20% the normal rate
if (this.random(5) >= 1) continue;
}
// Adjust rate for species with multiple formes
switch (template.baseSpecies) {
case 'Arceus':
if (this.random(18) >= 1) continue;
break;
case 'Basculin':
if (this.random(2) >= 1) continue;
break;
case 'Genesect':
if (this.random(5) >= 1) continue;
break;
case 'Gourgeist':
if (this.random(4) >= 1) continue;
break;
case 'Meloetta':
if (this.random(2) >= 1) continue;
break;
case 'Castform':
if (this.random(2) >= 1) continue;
break;
case 'Pikachu':
// Pikachu is not a viable NFE Pokemon
continue;
}
// Limit 2 of any type, 1 of any color
var types = template.types;
var colorGroups = {'Red': 'R', 'Pink': 'R', 'Yellow': 'G', 'Green': 'G', 'Blue': 'B', 'Purple': 'B'};
var color = colorGroups[template.color];
var skip = false;
for (var t = 0; t < types.length; t++) {
if (typeCount[types[t]] > 1 && this.random(5) >= 1) {
skip = true;
break;
}
}
if (colorCount[color] > 1 && this.random(8) >= 1) {
skip = true;
}
if (skip) continue;
var set = this.randomSet(template, pokemon.length, teamDetails);
// Illusion shouldn't be on the last pokemon of the team
if (set.ability === 'Illusion' && pokemonLeft > 4) continue;
// Limit 1 of any type combination
var typeCombo = types.join();
if (set.ability === 'Drought' || set.ability === 'Drizzle') {
// Drought and Drizzle don't count towards the type combo limit
typeCombo = set.ability;
}
if (typeCombo in typeComboCount) continue;
// Limit the number of Megas to one
var forme = template.otherFormes && this.getTemplate(template.otherFormes[0]);
var isMegaSet = this.getItem(set.item).megaStone || (forme && forme.isMega && forme.requiredMove && set.moves.indexOf(toId(forme.requiredMove)) >= 0);
if (isMegaSet && teamDetails.megaCount > 0) continue;
// Okay, the set passes, add it to our team
if (template.species !== 'Ditto') set.moves.push('swift');
pokemon.push(set);
// Now that our Pokemon has passed all checks, we can increment our counters
pokemonLeft++;
// Increment type and color counters
for (var t = 0; t < types.length; t++) {
if (types[t] in typeCount) {
typeCount[types[t]]++;
} else {
typeCount[types[t]] = 1;
}
}
typeComboCount[typeCombo] = 1;
if (color in colorCount) {
colorCount[color]++;
} else {
colorCount[color] = 1;
}
// Increment Uber/NU counters
if (tier === 'Uber') {
uberCount++;
} else if (tier === 'PU') {
puCount++;
}
// Increment mega, stealthrock, and base species counters
if (isMegaSet) teamDetails.megaCount++;
if (set.moves.indexOf('stealthrock') >= 0) teamDetails.stealthRock++;
baseFormes[template.baseSpecies] = 1;
}
return pokemon;
},
randomFactorySets: require('./factory-sets.json'),
randomFactorySet: function (template, slot, teamData, tier) {
var speciesId = toId(template.species);

View File

@@ -19,9 +19,9 @@ exports.BattleStatuses = {
onStart: function (target) {
this.add('-status', target, 'par');
},
onModifySpe: function (speMod, pokemon) {
onModifySpe: function (spe, pokemon) {
if (!pokemon.hasAbility('quickfeet')) {
return this.chain(speMod, 0.25);
return this.chainModify(0.25);
}
},
onBeforeMovePriority: 1,