mirror of
https://github.com/smogon/pokemon-showdown-client.git
synced 2026-10-02 07:42:12 -05:00
Sync data
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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
@@ -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: {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
214
data/scripts.js
214
data/scripts.js
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user