Sync data

This commit is contained in:
Guangcong Luo
2014-09-18 22:35:42 -05:00
parent 723803b57f
commit e5e8d3d573
5 changed files with 397 additions and 373 deletions

View File

@@ -102,8 +102,8 @@ exports.BattleAbilities = {
num: 76
},
"analytic": {
desc: "If the user moves last, the power of that move is increased by 30%.",
shortDesc: "This Pokemon's attacks do 1.3x damage if it is the last to move in a turn.",
desc: "This Pokemon's attacks do 1.3x damage if it is the last to move in a turn.",
shortDesc: "If the user moves last, the power of that move is increased by 30%.",
onBasePowerPriority: 8,
onBasePower: function (basePower, attacker, defender, move) {
if (!this.willMove(defender)) {
@@ -117,8 +117,8 @@ exports.BattleAbilities = {
num: 148
},
"angerpoint": {
desc: "If this Pokemon, or its Substitute, is struck by a Critical Hit, its Attack is boosted to six stages.",
shortDesc: "If this Pokemon (not a Substitute) is hit by a critical hit, its Attack is boosted by 12.",
desc: "If this Pokemon, and not its Substitute, is struck by a Critical Hit, its Attack is boosted to six stages.",
shortDesc: "If this Pokemon is hit by a critical hit, its Attack is boosted by 12.",
onCriticalHit: function (target) {
if (!target.volatiles['substitute']) {
target.setBoost({atk: 6});
@@ -221,8 +221,8 @@ exports.BattleAbilities = {
num: 123
},
"battlearmor": {
desc: "Critical Hits cannot strike this Pokemon.",
shortDesc: "This Pokemon cannot be struck by a critical hit.",
desc: "This Pokemon cannot be struck by a critical hit.",
shortDesc: "Critical Hits cannot strike this Pokemon.",
onCriticalHit: false,
id: "battlearmor",
name: "Battle Armor",
@@ -230,8 +230,8 @@ exports.BattleAbilities = {
num: 4
},
"bigpecks": {
desc: "Prevents the Pokemon's Defense stat from being reduced.",
shortDesc: "Prevents other Pokemon from lowering this Pokemon's Defense.",
desc: "Prevents other Pokemon from lowering this Pokemon's Defense.",
shortDesc: "Prevents the Pokemon's Defense stat from being reduced.",
onBoost: function (boost, target, source, effect) {
if (source && target === source) return;
if (boost['def'] && boost['def'] < 0) {
@@ -391,8 +391,8 @@ exports.BattleAbilities = {
num: 14
},
"contrary": {
desc: "Stat changes are inverted.",
shortDesc: "If this Pokemon has a stat boosted it is lowered instead, and vice versa.",
desc: "If this Pokemon has a stat boosted it is lowered instead, and vice versa.",
shortDesc: "Stat changes are inverted.",
onBoost: function (boost) {
for (var i in boost) {
boost[i] *= -1;
@@ -472,8 +472,8 @@ exports.BattleAbilities = {
num: 186
},
"defeatist": {
desc: "Attack and Special Attack are halved when HP is less than half.",
shortDesc: "When this Pokemon has 1/2 or less of its max HP, its Attack and Sp. Atk are halved.",
desc: "When this Pokemon has 1/2 or less of its max HP, its Attack and Sp. Atk are halved.",
shortDesc: "Attack and Special Attack are halved when HP is less than half.",
onModifyAtkPriority: 5,
onModifyAtk: function (atk, pokemon) {
if (pokemon.hp < pokemon.maxhp / 2) {
@@ -604,7 +604,7 @@ exports.BattleAbilities = {
desc: "If an opponent directly attacks this Pokemon, there is a 30% chance that the opponent will become either poisoned, paralyzed or put to sleep. There is an equal chance to inflict each status.",
shortDesc: "30% chance of poisoning, paralyzing, or causing sleep on Pokemon making contact.",
onAfterDamage: function (damage, target, source, move) {
if (move && move.isContact && !source.status) {
if (move && move.isContact && !source.status && source.runImmunity('powder')) {
var r = this.random(100);
if (r < 11) source.setStatus('slp', target);
else if (r < 21) source.setStatus('par', target);
@@ -808,8 +808,8 @@ exports.BattleAbilities = {
num: 59
},
"forewarn": {
desc: "The move with the highest Base Power in the opponent's moveset is revealed.",
shortDesc: "On switch-in, this Pokemon is alerted to the foes' move with the highest Base Power.",
desc: "On switch-in, this Pokemon is alerted to the foes' move with the highest Base Power.",
shortDesc: "The move with the highest Base Power in the opponent's moveset is revealed.",
onStart: function (pokemon) {
var targets = pokemon.side.foe.active;
var warnMoves = [];
@@ -913,7 +913,7 @@ exports.BattleAbilities = {
num: 183
},
"grasspelt": {
desc: "This Pokemon's Defense is boosted in Grassy Terrain",
desc: "This Pokemon's Defense is boosted in Grassy Terrain.",
shortDesc: "This Pokemon's Defense is boosted in Grassy Terrain.",
onModifyDefPriority: 6,
onModifyDef: function (pokemon) {
@@ -1105,7 +1105,8 @@ exports.BattleAbilities = {
shortDesc: "This Pokemon appears as the last Pokemon in the party until it takes direct damage.",
onBeforeSwitchIn: function (pokemon) {
pokemon.illusion = null;
for (var i = pokemon.side.pokemon.length - 1; i > pokemon.position; i--) {
var i;
for (i = pokemon.side.pokemon.length - 1; i > pokemon.position; i--) {
if (!pokemon.side.pokemon[i]) continue;
if (!pokemon.side.pokemon[i].fainted) break;
}
@@ -1120,8 +1121,8 @@ exports.BattleAbilities = {
num: 149
},
"immunity": {
desc: "This Pokemon cannot become poisoned nor Toxic poisoned.",
shortDesc: "This Pokemon cannot be poisoned. Gaining this Ability while poisoned cures it.",
desc: "This Pokemon cannot be poisoned. Gaining this Ability while poisoned cures it.",
shortDesc: "This Pokemon cannot become poisoned nor Toxic poisoned.",
onUpdate: function (pokemon) {
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
pokemon.cureStatus();
@@ -1150,8 +1151,8 @@ exports.BattleAbilities = {
num: 150
},
"infiltrator": {
desc: "Ignores Substitute, Reflect, Light Screen, and Safeguard on the target.",
shortDesc: "This Pokemon's moves ignore the foe's Substitute, Reflect, Light Screen, Safeguard, and Mist.",
desc: "This Pokemon's moves ignore the target's Light Screen, Mist, Reflect, Safeguard, and Substitute.",
shortDesc: "Ignores Light Screen, Mist, Reflect, Safeguard, and Substitute.",
onModifyMove: function (move) {
move.notSubBlocked = true;
move.ignoreScreens = true;
@@ -1250,8 +1251,8 @@ exports.BattleAbilities = {
num: 154
},
"keeneye": {
desc: "This Pokemon's Accuracy cannot be lowered.",
shortDesc: "Prevents other Pokemon from lowering this Pokemon's accuracy.",
desc: "Prevents other Pokemon from lowering this Pokemon's accuracy.",
shortDesc: "This Pokemon's Accuracy cannot be lowered.",
onBoost: function (boost, target, source, effect) {
if (source && target === source) return;
if (boost['accuracy'] && boost['accuracy'] < 0) {
@@ -1344,8 +1345,8 @@ exports.BattleAbilities = {
num: 32
},
"limber": {
desc: "This Pokemon cannot become paralyzed.",
shortDesc: "This Pokemon cannot be paralyzed. Gaining this Ability while paralyzed cures it.",
desc: "This Pokemon cannot be paralyzed. Gaining this Ability while paralyzed cures it.",
shortDesc: "This Pokemon cannot become paralyzed.",
onUpdate: function (pokemon) {
if (pokemon.status === 'par') {
pokemon.cureStatus();
@@ -1376,8 +1377,8 @@ exports.BattleAbilities = {
num: 64
},
"magicbounce": {
desc: "Non-damaging moves are reflected back at the user.",
shortDesc: "This Pokemon blocks certain status moves and uses the move itself.",
desc: "This Pokemon blocks certain status moves and uses the move itself.",
shortDesc: "Non-damaging moves are reflected back at the user.",
id: "magicbounce",
name: "Magic Bounce",
onTryHitPriority: 1,
@@ -1414,8 +1415,8 @@ exports.BattleAbilities = {
num: 156
},
"magicguard": {
desc: "Prevents all damage except from direct attacks.",
shortDesc: "This Pokemon can only be damaged by direct attacks.",
desc: "This Pokemon can only be damaged by direct attacks.",
shortDesc: "Prevents all damage except from direct attacks.",
onDamage: function (damage, target, source, effect) {
if (effect.effectType !== 'Move') {
return false;
@@ -1448,8 +1449,8 @@ exports.BattleAbilities = {
num: 170
},
"magmaarmor": {
desc: "This Pokemon cannot become frozen.",
shortDesc: "This Pokemon cannot be frozen. Gaining this Ability while frozen cures it.",
desc: "This Pokemon cannot be frozen. Gaining this Ability while frozen cures it.",
shortDesc: "This Pokemon cannot become frozen.",
onUpdate: function (pokemon) {
if (pokemon.status === 'frz') {
pokemon.cureStatus();
@@ -1969,11 +1970,11 @@ exports.BattleAbilities = {
"protean": {
desc: "Right before this Pokemon uses a move, it changes its type to match that move. Hidden Power is interpreted as its Hidden Power type, rather than Normal.",
shortDesc: "Right before this Pokemon uses a move, it changes its type to match that move.",
onSourceTryPrimaryHit: function (target, source, move) {
if (!move || source.volatiles.mustrecharge) return;
if (source.getTypes().join() !== move.type) {
if (!source.setType(move.type)) return;
this.add('-start', source, 'typechange', move.type, '[from] Protean');
onPrepareHit: function (source, target, move) {
var type = move.type;
if (type && type !== '???' && source.getTypes().join() !== type) {
if (!source.setType(type)) return;
this.add('-start', source, 'typechange', type, '[from] Protean');
}
},
id: "protean",
@@ -2383,7 +2384,7 @@ exports.BattleAbilities = {
},
"sniper": {
desc: "When this Pokemon lands a Critical Hit, the damage is increased to another 1.5x.",
shortDesc: "If this Pokemon strikes with a critical hit, the damage is increased by 50%",
shortDesc: "If this Pokemon strikes with a critical hit, the damage is increased by 50%.",
onModifyDamage: function (damage, source, target, move) {
if (move.crit) {
this.debug('Sniper boost');
@@ -2876,8 +2877,8 @@ exports.BattleAbilities = {
num: 137
},
"toughclaws": {
desc: "This Pokemon's contact attacks do 1.33x damage.",
shortDesc: "This Pokemon's contact attacks do 33% more damage.",
desc: "This Pokemon's contact attacks do 33% more damage.",
shortDesc: "This Pokemon's contact attacks do 1.33x damage.",
onBasePowerPriority: 8,
onBasePower: function (basePower, attacker, defender, move) {
if (move.isContact) {
@@ -2893,15 +2894,24 @@ exports.BattleAbilities = {
desc: "When this Pokemon enters the field, it temporarily copies an opponent's ability. This ability remains with this Pokemon until it leaves the field.",
shortDesc: "On switch-in, or when it can, this Pokemon copies a random adjacent foe's Ability.",
onUpdate: function (pokemon) {
var target = pokemon.side.foe.randomActive();
if (!target) return;
var ability = this.getAbility(target.ability);
var bannedAbilities = {flowergift:1, forecast:1, illusion:1, imposter:1, multitype:1, stancechange:1, trace:1, zenmode:1};
if (bannedAbilities[target.ability]) {
var possibleTargets = [];
for (var i = 0; i < pokemon.side.foe.active.length; i++) {
if (pokemon.side.foe.active[i] && !pokemon.side.foe.active[i].fainted) possibleTargets.push(pokemon.side.foe.active[i]);
}
while (possibleTargets.length) {
var rand = 0;
if (possibleTargets.length > 1) rand = this.random(possibleTargets.length);
var target = possibleTargets[rand];
var ability = this.getAbility(target.ability);
var bannedAbilities = {flowergift:1, forecast:1, illusion:1, imposter:1, multitype:1, stancechange:1, trace:1, zenmode:1};
if (bannedAbilities[target.ability]) {
possibleTargets.splice(rand, 1);
continue;
}
this.add('-ability', pokemon, ability, '[from] ability: Trace', '[of] ' + target);
pokemon.setAbility(ability);
return;
}
this.add('-ability', pokemon, ability, '[from] ability: Trace', '[of] ' + target);
pokemon.setAbility(ability);
},
id: "trace",
name: "Trace",
@@ -3188,8 +3198,8 @@ exports.BattleAbilities = {
// CAP
"mountaineer": {
desc: "This Pokémon avoids all Rock-type attacks and hazards when switching in.",
shortDesc: "On switch-in, this Pokemon avoids all Rock-type attacks and Stealth Rock.",
desc: "On switch-in, this Pokemon avoids all Rock-type attacks and Stealth Rock.",
shortDesc: "This Pokemon avoids all Rock-type attacks and hazards when switching in.",
onDamage: function (damage, target, source, effect) {
if (effect && effect.id === 'stealthrock') {
return false;
@@ -3207,8 +3217,8 @@ exports.BattleAbilities = {
num: -2
},
"rebound": {
desc: "It can reflect the effect of status moves when switching in.",
shortDesc: "On switch-in, this Pokemon blocks certain status moves and uses the move itself.",
desc: "On switch-in, this Pokemon blocks certain status moves and uses the move itself.",
shortDesc: "It can reflect the effect of status moves when switching in.",
id: "rebound",
isNonstandard: true,
name: "Rebound",
@@ -3250,8 +3260,8 @@ exports.BattleAbilities = {
num: -3
},
"persistent": {
desc: "Increases the duration of many field effects by two turns when used by this Pokémon.",
shortDesc: "The duration of certain field effects is increased by 2 turns if used by this Pokemon.",
desc: "The duration of certain field effects is increased by 2 turns if used by this Pokemon.",
shortDesc: "Increases the duration of many field effects by two turns when used by this Pokemon.",
id: "persistent",
isNonstandard: true,
name: "Persistent",

File diff suppressed because it is too large Load Diff

View File

@@ -1454,7 +1454,7 @@ exports.BattleItems = {
spritenum: 153,
num: 497,
gen: 2,
desc: "A Poké Ball that makes caught Pokémon more friendly."
desc: "A Poke Ball that makes caught Pokemon more friendly."
},
"fullincense": {
id: "fullincense",
@@ -1918,7 +1918,7 @@ exports.BattleItems = {
onAfterMoveSecondary: function (target, source, move) {
if (source && source !== target && move && move.category === 'Physical') {
if (target.eatItem()) {
this.damage(source.maxhp / 8, source, target);
this.damage(source.maxhp / 8, source, target, null, true);
}
}
},
@@ -3484,7 +3484,7 @@ exports.BattleItems = {
onAfterDamageOrder: 2,
onAfterDamage: function (damage, target, source, move) {
if (source && source !== target && move && move.isContact) {
this.damage(source.maxhp / 6, source, target);
this.damage(source.maxhp / 6, source, target, null, true);
}
},
num: 540,
@@ -3553,7 +3553,7 @@ exports.BattleItems = {
onAfterMoveSecondary: function (target, source, move) {
if (source && source !== target && move && move.category === 'Special') {
if (target.eatItem()) {
this.damage(source.maxhp / 8, source, target);
this.damage(source.maxhp / 8, source, target, null, true);
}
}
},
@@ -3686,7 +3686,8 @@ exports.BattleItems = {
fling: {
basePower: 30
},
onAfterMoveSelf: function (source, target) {
onAfterMoveSecondarySelfPriority: -1,
onAfterMoveSecondarySelf: function (source, target) {
if (source.lastDamage > 0) {
this.heal(source.lastDamage / 8, source);
}
@@ -4467,6 +4468,6 @@ exports.BattleItems = {
},
num: 276,
gen: 4,
desc: "The accuracy of attacks by the holder is 1.2x if it moves after the target."
desc: "The accuracy of attacks by the holder is 1.2x if it is the last to move in a turn."
}
};

View File

@@ -268,7 +268,7 @@ exports.BattleMovedex = {
var newPosition = (pokemon.position === 0 ? pokemon.side.active.length - 1 : 0);
if (!pokemon.side.active[newPosition]) return false;
if (pokemon.side.active[newPosition].fainted) return false;
this.swapPosition(pokemon, newPosition, 'move: Ally Switch');
this.swapPosition(pokemon, newPosition, '[from] move: Ally Switch');
},
secondary: false,
target: "self",
@@ -1068,8 +1068,8 @@ exports.BattleMovedex = {
pp: 5,
priority: 0,
isBounceable: true,
onHit: function (target) {
if (!target.addVolatile('trapped')) {
onHit: function (target, source, move) {
if (!target.addVolatile('trapped', source, move, 'trapper')) {
this.add('-fail', target);
}
},
@@ -2363,8 +2363,8 @@ exports.BattleMovedex = {
accuracy: 100,
basePower: 80,
category: "Special",
desc: "Deals damage to all adjacent foes.",
shortDesc: "No additional effect. Hits adjacent foes.",
desc: "No additional effect. Hits adjacent foes.",
shortDesc: "Deals damage to all adjacent foes.",
id: "dazzlinggleam",
isViable: true,
name: "Dazzling Gleam",
@@ -2494,7 +2494,7 @@ exports.BattleMovedex = {
priority: 4,
stallingMove: true, // Note: stallingMove is not used anywhere.
volatileStatus: 'protect',
onTryHit: function (pokemon) {
onPrepareHit: function (pokemon) {
return !!this.willAct() && this.runEvent('StallMove', pokemon);
},
onHit: function (pokemon) {
@@ -2509,8 +2509,8 @@ exports.BattleMovedex = {
accuracy: 95,
basePower: 100,
category: "Physical",
desc: "Deals damage to all adjacent Pokemon with a 50% chance to raise the user's Defense by 1 stage.",
shortDesc: "Hits all adjacent Pokemon. 50% chance to boost Def by 1.",
desc: "Deals damage to all adjacent foes with a 50% chance to raise the user's Defense by 1 stage.",
shortDesc: "Hits all adjacent foes. 50% chance to boost Def by 1.",
id: "diamondstorm",
name: "Diamond Storm",
pp: 5,
@@ -2523,7 +2523,7 @@ exports.BattleMovedex = {
}
}
},
target: "allAdjacent",
target: "allAdjacentFoes",
type: "Rock"
},
"dig": {
@@ -3981,10 +3981,10 @@ exports.BattleMovedex = {
name: "Fire Pledge",
pp: 10,
priority: 0,
onTryHit: function (target, source, move) {
onPrepareHit: function (target, source, move) {
for (var i = 0; i < this.queue.length; i++) {
var decision = this.queue[i];
if (!decision.pokemon || !decision.move) continue;
if (!decision.move || !decision.pokemon || !decision.pokemon.isActive || decision.pokemon.fainted) continue;
if (decision.pokemon.side === source.side && decision.move.id in {grasspledge:1, waterpledge:1}) {
this.prioritizeQueue(decision);
this.add('-waiting', source, decision.pokemon);
@@ -4308,7 +4308,7 @@ exports.BattleMovedex = {
pokemon.setItem('');
}
},
onTryHit: function (target, source, move) {
onPrepareHit: function (target, source, move) {
if (!source.volatiles['fling']) return false;
var item = this.getItem(source.volatiles['fling'].item);
this.add("-enditem", source, item.name, '[from] move: Fling');
@@ -4613,7 +4613,7 @@ exports.BattleMovedex = {
onHit: function (target) {
if (target.hasType('Grass')) return false;
if (!target.addType('Grass')) return false;
this.add('-start', target, 'typechange', target.getTypes(true).join('/'), '[from] move: Forest\'s Curse');
this.add('-start', target, 'typeadd', 'Grass', '[from] move: Forest\'s Curse');
},
secondary: false,
target: "normal",
@@ -4929,7 +4929,7 @@ exports.BattleMovedex = {
basePower: 0,
category: "Status",
desc: "Causes one adjacent target's Ability to be rendered ineffective as long as it remains active. If the target uses Baton Pass, the replacement will remain under this effect. Fails if the target's Ability is Multitype or Stance Change. Pokemon protected by Magic Coat or the Ability Magic Bounce are unaffected and instead use this move themselves.",
shortDesc: "Nullifies the target's Ability",
shortDesc: "Nullifies the target's Ability.",
id: "gastroacid",
name: "Gastro Acid",
pp: 10,
@@ -5139,10 +5139,10 @@ exports.BattleMovedex = {
name: "Grass Pledge",
pp: 10,
priority: 0,
onTryHit: function (target, source, move) {
onPrepareHit: function (target, source, move) {
for (var i = 0; i < this.queue.length; i++) {
var decision = this.queue[i];
if (!decision.pokemon || !decision.move) continue;
if (!decision.move || !decision.pokemon || !decision.pokemon.isActive || decision.pokemon.fainted) continue;
if (decision.pokemon.side === source.side && decision.move.id in {waterpledge:1, firepledge:1}) {
this.prioritizeQueue(decision);
this.add('-waiting', source, decision.pokemon);
@@ -5206,7 +5206,7 @@ exports.BattleMovedex = {
accuracy: true,
basePower: 0,
category: "Status",
desc: "For five turns, Pokemon on the ground restore 1/16 of their HP each turn. Their Grass-type moves are powered up by 50%.",
desc: "For five turns, Pokemon on the ground restore 1/16 of their HP each turn. Their Grass-type moves are powered up by 50%. Damage caused by Earthquake, Bulldoze or Magnitude is halved.",
shortDesc: "If on ground, restore HP + Grass moves stronger.",
id: "grassyterrain",
name: "Grassy Terrain",
@@ -5216,6 +5216,11 @@ exports.BattleMovedex = {
effect: {
duration: 5,
onBasePower: function (basePower, attacker, defender, move) {
var weakenedMoves = {'earthquake':1, 'bulldoze':1, 'magnitude':1};
if (move.id in weakenedMoves) {
this.debug('move weakened by grassy terrain');
return this.chainModify(0.5);
}
if (move.type === 'Grass' && attacker.runImmunity('Ground')) {
this.debug('grassy terrain boost');
return this.chainModify(1.5);
@@ -5231,7 +5236,7 @@ exports.BattleMovedex = {
for (var s in battle.sides) {
for (var p in battle.sides[s].active) {
if (battle.sides[s].active[p].runImmunity('Ground')) {
this.debug('Pokémon is grounded, healing through Grassy Terrain.');
this.debug('Pokémon is grounded, healing through Grassy Terrain.');
this.heal(battle.sides[s].active[p].maxhp / 16, battle.sides[s].active[p], battle.sides[s].active[p]);
}
}
@@ -5726,16 +5731,16 @@ exports.BattleMovedex = {
},
onModifyPokemon: function (pokemon) {
var disabledMoves = {healingwish:1, lunardance:1, rest:1, swallow:1, wish:1};
var moves = pokemon.moveset;
for (var i = 0; i < moves.length; i++) {
if (disabledMoves[moves[i].id] || this.getMove(moves[i].id).heal) {
pokemon.disabledMoves[moves[i].id] = true;
var move;
for (var i = 0; i < pokemon.moveset.length; i++) {
if (disabledMoves[pokemon.moveset[i].id] || (move = this.getMove(pokemon.moveset[i].id)).heal || move.drain) {
pokemon.disabledMoves[pokemon.moveset[i].id] = true;
}
}
},
onBeforeMove: function (pokemon, target, move) {
var disabledMoves = {healingwish:1, lunardance:1, rest:1, swallow:1, wish:1};
if (disabledMoves[move.id] || move.heal) {
if (disabledMoves[move.id] || move.heal || move.drain) {
this.add('cant', pokemon, 'move: Heal Block', move);
return false;
}
@@ -7076,7 +7081,7 @@ exports.BattleMovedex = {
accuracy: true,
basePower: 0,
category: "Status",
desc: "Protects the user from attacks. Contactors get their Attack lowered by 2 stages. Priority +4",
desc: "Protects the user from attacks. Contactors get their Attack lowered by 2 stages. Priority +4.",
shortDesc: "Protects user from attacks. Contactors get -Atk.",
id: "kingsshield",
isViable: true,
@@ -7799,7 +7804,7 @@ exports.BattleMovedex = {
accuracy: true,
basePower: 0,
category: "Status",
desc: "Raises the Defense and Sp. Def stats of ally Pokémon with the Plus or Minus Ability.",
desc: "Raises the Defense and Sp. Def stats of ally Pokémon with the Plus or Minus Ability.",
shortDesc: "Raises defenses of ally Pokemon with Plus/Minus.",
id: "magneticflux",
name: "Magnetic Flux",
@@ -7991,8 +7996,8 @@ exports.BattleMovedex = {
pp: 5,
priority: 0,
isBounceable: true,
onHit: function (target) {
if (!target.addVolatile('trapped')) {
onHit: function (target, source, move) {
if (!target.addVolatile('trapped', source, move, 'trapper')) {
this.add('-fail', target);
}
},
@@ -8834,7 +8839,7 @@ exports.BattleMovedex = {
pokemon.setItem('');
}
},
onTryHit: function (target, source) {
onPrepareHit: function (target, source) {
if (!source.volatiles['naturalgift']) return false;
},
onModifyMove: function (move, pokemon) {
@@ -8962,7 +8967,6 @@ exports.BattleMovedex = {
priority: 0,
volatileStatus: 'nightmare',
effect: {
onResidualOrder: 9,
onStart: function (pokemon) {
if (pokemon.status !== 'slp') {
return false;
@@ -9771,7 +9775,7 @@ exports.BattleMovedex = {
basePower: 40,
category: "Physical",
desc: "Hitting a target raises Attack by 1 stage. Damage is boosted to 1.2x by the Ability Iron Fist.",
shortDesc: "Hitting a target raises Attack by 1",
shortDesc: "Hitting a target raises Attack by 1.",
id: "poweruppunch",
name: "Power-Up Punch",
pp: 20,
@@ -9847,7 +9851,7 @@ exports.BattleMovedex = {
priority: 4,
stallingMove: true, // Note: stallingMove is not used anywhere.
volatileStatus: 'protect',
onTryHit: function (pokemon) {
onPrepareHit: function (pokemon) {
return !!this.willAct() && this.runEvent('StallMove', pokemon);
},
onHit: function (pokemon) {
@@ -10461,7 +10465,7 @@ exports.BattleMovedex = {
onHit: function (pokemon) {
if (!pokemon.item && pokemon.lastItem) {
pokemon.setItem(pokemon.lastItem);
this.add("-item", pokemon, pokemon.item, '[from] move: Recycle');
this.add("-item", pokemon, pokemon.getItem(), '[from] move: Recycle');
} else return false;
},
secondary: false,
@@ -11020,7 +11024,7 @@ exports.BattleMovedex = {
isSnatchable: true,
heal: [1, 2],
self: {
volatileStatus: 'roost',
volatileStatus: 'roost'
},
effect: {
duration: 1,
@@ -11267,6 +11271,7 @@ exports.BattleMovedex = {
pp: 15,
priority: 0,
thawsUser: true,
thawsTarget: true,
secondary: {
chance: 30,
status: 'brn'
@@ -11353,7 +11358,7 @@ exports.BattleMovedex = {
basePower: 70,
category: "Physical",
desc: "Deals damage to one adjacent target with a 30% chance to cause a secondary effect on the target based on the battle terrain. Lowers accuracy by 1 stage in Wi-Fi battles. (In-game: Causes sleeping in grass, lowers Speed by 1 stage in puddles, lowers Attack by 1 stage on water, flinching in caves, lowers accuracy by 1 stage on rocky ground and sand, freezing on snow and ice, and causes paralysis everywhere else.) 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% accuracy lower 1.)",
id: "secretpower",
name: "Secret Power",
pp: 20,
@@ -11814,10 +11819,10 @@ exports.BattleMovedex = {
return false;
}
},
onHit: function (target, source) {
onHit: function (target, source, move) {
var targetAbility = target.ability;
var sourceAbility = source.ability;
if (!target.setAbility(sourceAbility) || !source.setAbility(targetAbility)) {
if (!target.setAbility(sourceAbility, source, move, true) || !source.setAbility(targetAbility, source, move, true)) {
target.ability = targetAbility;
source.ability = sourceAbility;
return false;
@@ -11846,13 +11851,13 @@ exports.BattleMovedex = {
return;
}
this.add('-prepare', attacker, move.name, defender);
this.boost({def:1}, attacker, attacker, this.getMove('skullbash'));
if (!this.runEvent('ChargeMove', attacker, defender, move)) {
this.add('-anim', attacker, move.name, defender);
attacker.removeVolatile(move.id);
return;
}
attacker.addVolatile('twoturnmove', defender);
this.boost({def:1}, attacker, attacker, this.getMove('skullbash'));
return null;
},
secondary: false,
@@ -11928,7 +11933,8 @@ exports.BattleMovedex = {
attacker.addVolatile('twoturnmove', defender);
return null;
},
onTryHit: function (target) {
onTryHit: function (target, source) {
if (target !== source.volatiles['twoturnmove'].source) return false;
if (target.hasType('Flying')) {
this.add('-immune', target, '[msg]');
return null;
@@ -12531,8 +12537,8 @@ exports.BattleMovedex = {
pp: 10,
priority: 0,
isBounceable: true,
onHit: function (target) {
if (!target.addVolatile('trapped')) {
onHit: function (target, source, move) {
if (!target.addVolatile('trapped', source, move, 'trapper')) {
this.add('-fail', target);
}
},
@@ -12977,7 +12983,7 @@ exports.BattleMovedex = {
}
},
secondary: false,
target: "normal",
target: "randomNormal",
type: "Normal"
},
"strugglebug": {
@@ -13745,8 +13751,8 @@ exports.BattleMovedex = {
pp: 10,
priority: 0,
isUnreleased: true,
onHit: function (target) {
target.addVolatile('trapped');
onHit: function (target, source, move) {
target.addVolatile('trapped', source, move, 'trapper');
},
secondary: false,
target: "normal",
@@ -14134,7 +14140,7 @@ exports.BattleMovedex = {
onHit: function (target) {
if (target.hasType('Ghost')) return false;
if (!target.addType('Ghost')) return false;
this.add('-start', target, 'typechange', target.getTypes(true).join('/'), '[from] move: Trick-or-Treat');
this.add('-start', target, 'typeadd', 'Ghost', '[from] move: Trick-or-Treat');
},
secondary: false,
target: "normal",
@@ -14327,16 +14333,14 @@ exports.BattleMovedex = {
},
effect: {
duration: 3,
onStart: function (target) {
this.add('-start', target, 'Uproar');
},
onResidual: function (target) {
if (target.lastMove === 'struggle') {
// don't lock
delete target.volatiles['uproar'];
}
},
onStart: function (target) {
this.add('-start', target, 'Uproar');
},
onResidual: function (target) {
this.add('-start', target, 'Uproar', '[upkeep]');
},
onEnd: function (target) {
@@ -14587,10 +14591,10 @@ exports.BattleMovedex = {
name: "Water Pledge",
pp: 10,
priority: 0,
onTryHit: function (target, source, move) {
onPrepareHit: function (target, source, move) {
for (var i = 0; i < this.queue.length; i++) {
var decision = this.queue[i];
if (!decision.pokemon || !decision.move) continue;
if (!decision.move || !decision.pokemon || !decision.pokemon.isActive || decision.pokemon.fainted) continue;
if (decision.pokemon.side === source.side && decision.move.id in {firepledge:1, grasspledge:1}) {
this.prioritizeQueue(decision);
this.add('-waiting', source, decision.pokemon);

View File

@@ -743,7 +743,7 @@ scatterbug:{num:664,species:"Scatterbug",types:["Bug"],baseStats:{hp:38,atk:35,d
spewpa:{num:665,species:"Spewpa",types:["Bug"],baseStats:{hp:45,atk:22,def:60,spa:27,spd:30,spe:29},abilities:{0:"Shed Skin",H:"Friend Guard"},heightm:0.3,weightkg:8.4,color:"Black",prevo:"scatterbug",evos:["vivillon"],evoLevel:9,eggGroups:["Bug"]},
vivillon:{num:666,species:"Vivillon",types:["Bug","Flying"],baseStats:{hp:80,atk:52,def:50,spa:90,spd:50,spe:89},abilities:{0:"Shield Dust",1:"Compound Eyes",H:"Friend Guard"},heightm:1.2,weightkg:17,color:"Black",prevo:"spewpa",evoLevel:12,eggGroups:["Bug"]},
litleo:{num:667,species:"Litleo",types:["Fire","Normal"],baseStats:{hp:62,atk:50,def:58,spa:73,spd:54,spe:72},abilities:{0:"Rivalry",1:"Unnerve",H:"Moxie"},heightm:0.6,weightkg:13.5,color:"Brown",evos:["pyroar"],eggGroups:["Field"]},
pyroar:{num:668,species:"Pyroar",baseForme:"M",types:["Fire","Normal"],baseStats:{hp:86,atk:68,def:72,spa:109,spd:66,spe:106},abilities:{0:"Rivalry",1:"Unnerve",H:"Moxie"},heightm:1.5,weightkg:81.5,color:"Brown",prevo:"litleo",evoLevel:35,eggGroups:["Field"],otherFormes:["pyroarf"]},
pyroar:{num:668,species:"Pyroar",types:["Fire","Normal"],genderRatio:{M:0.25,F:0.75},baseStats:{hp:86,atk:68,def:72,spa:109,spd:66,spe:106},abilities:{0:"Rivalry",1:"Unnerve",H:"Moxie"},heightm:1.5,weightkg:81.5,color:"Brown",prevo:"litleo",evoLevel:35,eggGroups:["Field"]},
flabebe:{num:669,species:"Flabebe",types:["Fairy"],gender:"F",baseStats:{hp:44,atk:38,def:39,spa:61,spd:79,spe:42},abilities:{0:"Flower Veil",H:"Symbiosis"},heightm:0.1,weightkg:0.1,color:"White",evos:["floette"],eggGroups:["Fairy"]},
floette:{num:670,species:"Floette",baseForme:"Red-Flower",types:["Fairy"],gender:"F",baseStats:{hp:54,atk:45,def:47,spa:75,spd:98,spe:52},abilities:{0:"Flower Veil",H:"Symbiosis"},heightm:0.2,weightkg:0.9,color:"White",prevo:"flabebe",evos:["florges"],evoLevel:19,eggGroups:["Fairy"],otherForms:["floetteeternalflower"]},
floetteeternalflower:{num:670,species:"Floette-Eternal-Flower",baseSpecies:"Floette",forme:"Eternal-Flower",formeLetter:"E",types:["Fairy"],gender:"F",baseStats:{hp:74,atk:65,def:67,spa:125,spd:128,spe:92},abilities:{0:"Flower Veil"},heightm:0.2,weightkg:0.9,color:"White",prevo:"flabebe",evoLevel:19,eggGroups:["Fairy"]},
@@ -807,22 +807,22 @@ diancie:{num:719,species:"Diancie",types:["Rock","Fairy"],gender:"N",baseStats:{
hoopa:{num:720,species:"Hoopa",types:["Psychic","Ghost"],gender:"N",baseStats:{hp:80,atk:110,def:60,spa:150,spd:130,spe:70},abilities:{0:"Magician"},heightm:0.5,weightkg:9,color:"Pink",eggGroups:["Undiscovered"]},
volcanion:{num:721,species:"Volcanion",types:["Fire","Water"],gender:"N",baseStats:{hp:80,atk:110,def:120,spa:130,spd:90,spe:70},abilities:{0:"Water Absorb"},heightm:1.7,weightkg:195,color:"Red",eggGroups:["Undiscovered"]},
missingno:{num:0,species:"Missingno.",types:["Bird","Normal"],baseStats:{hp:33,atk:136,def:0,spa:6,spd:6,spe:29},abilities:{0:"",H:""},heightm:3,weightkg:1590.8,color:"Gray",eggGroups:["Undiscovered"]},
tomohawk:{num:-1,species:"Tomohawk",types:["Flying","Fighting"],baseStats:{hp:105,atk:60,def:90,spa:115,spd:80,spe:85},abilities:{0:"Intimidate",1:"Prankster",H:"Justified"},heightm:1.27,weightkg:37.2,color:"",eggGroups:["Field","Flying"]},
tomohawk:{num:-1,species:"Tomohawk",types:["Flying","Fighting"],baseStats:{hp:105,atk:60,def:90,spa:115,spd:80,spe:85},abilities:{0:"Intimidate",1:"Prankster",H:"Justified"},heightm:1.27,weightkg:37.2,color:"Red",eggGroups:["Field","Flying"]},
necturna:{num:-2,species:"Necturna",types:["Grass","Ghost"],gender:"F",baseStats:{hp:64,atk:120,def:100,spa:85,spd:120,spe:81},abilities:{0:"Forewarn",H:"Telepathy"},heightm:1.65,weightkg:49.6,color:"Black",eggGroups:["Grass","Field"]},
mollux:{num:-3,species:"Mollux",types:["Fire","Poison"],baseStats:{hp:95,atk:45,def:83,spa:131,spd:105,spe:76},abilities:{0:"Dry Skin",H:"Illuminate"},heightm:1.2,weightkg:41,color:"Pink",eggGroups:["Fairy","Field"]},
aurumoth:{num:-4,species:"Aurumoth",types:["Bug","Psychic"],baseStats:{hp:110,atk:120,def:99,spa:117,spd:60,spe:94},abilities:{0:"Weak Armor",1:"No Guard",H:"Illusion"},heightm:2.1,weightkg:193,color:"Purple",eggGroups:["Bug"]},
malaconda:{num:-5,species:"Malaconda",types:["Dark","Grass"],baseStats:{hp:115,atk:100,def:60,spa:40,spd:130,spe:55},abilities:{0:"Harvest",1:"Infiltrator"},heightm:5.5,weightkg:108.8,color:"",eggGroups:["Grass","Dragon"]},
cawmodore:{num:-6,species:"Cawmodore",types:["Steel","Flying"],baseStats:{hp:50,atk:92,def:130,spa:65,spd:75,spe:118},abilities:{0:"Intimidate",1:"Volt Absorb",H:"Big Pecks"},heightm:1.7,weightkg:37.0,color:"",eggGroups:["Flying"]},
volkraken:{num:-7,species:"Volkraken",types:["Water","Fire"],baseStats:{hp:100,atk:45,def:80,spa:135,spd:100,spe:95},abilities:{0:"Analytic",1:"Infiltrator",H:"Pressure"},heightm:1.3,weightkg:44.5,color:"",eggGroups:["Water 1","Water 2"]},
syclant:{num:-51,species:"Syclant",types:["Ice","Bug"],baseStats:{hp:70,atk:116,def:70,spa:114,spd:64,spe:121},abilities:{0:"Compound Eyes",1:"Mountaineer"},heightm:1.7,weightkg:52,color:"",eggGroups:["Bug"]},
revenankh:{num:-52,species:"Revenankh",types:["Ghost","Fighting"],baseStats:{hp:90,atk:105,def:90,spa:65,spd:110,spe:65},abilities:{0:"Shed Skin",1:"Air Lock"},heightm:1.8,weightkg:44,color:"",eggGroups:["Amorphous","Human-Like"]},
pyroak:{num:-53,species:"Pyroak",types:["Fire","Grass"],baseStats:{hp:120,atk:70,def:105,spa:95,spd:90,spe:60},abilities:{0:"Rock Head",1:"Battle Armor"},heightm:2.1,weightkg:168,color:"",eggGroups:["Monster","Dragon"]},
fidgit:{num:-54,species:"Fidgit",types:["Poison","Ground"],baseStats:{hp:95,atk:76,def:109,spa:90,spd:80,spe:105},abilities:{0:"Persistent",1:"Vital Spirit"},heightm:0.9,weightkg:53,color:"",eggGroups:["Field"]},
stratagem:{num:-55,species:"Stratagem",types:["Rock"],gender:"N",baseStats:{hp:90,atk:60,def:65,spa:120,spd:70,spe:130},abilities:{0:"Levitate",1:"Technician"},heightm:0.9,weightkg:45,color:"",eggGroups:["Undiscovered"]},
arghonaut:{num:-56,species:"Arghonaut",types:["Water","Fighting"],baseStats:{hp:105,atk:110,def:95,spa:70,spd:100,spe:75},abilities:{0:"Unaware"},heightm:1.7,weightkg:151,color:"",eggGroups:["Water 1","Water 3"]},
kitsunoh:{num:-57,species:"Kitsunoh",types:["Steel","Ghost"],baseStats:{hp:80,atk:103,def:85,spa:55,spd:80,spe:110},abilities:{0:"Frisk",1:"Limber"},heightm:1.1,weightkg:51,color:"",eggGroups:["Field"]},
cyclohm:{num:-58,species:"Cyclohm",types:["Electric","Dragon"],baseStats:{hp:108,atk:60,def:118,spa:112,spd:70,spe:80},abilities:{0:"Shield Dust",1:"Static"},heightm:1.6,weightkg:59,color:"",eggGroups:["Dragon","Monster"]},
colossoil:{num:-59,species:"Colossoil",types:["Dark","Ground"],baseStats:{hp:133,atk:122,def:72,spa:71,spd:72,spe:95},abilities:{0:"Rebound",1:"Guts"},heightm:2.6,weightkg:683.6,color:"",eggGroups:["Water 2","Field"]},
krilowatt:{num:-60,species:"Krilowatt",types:["Electric","Water"],baseStats:{hp:151,atk:84,def:73,spa:83,spd:74,spe:105},abilities:{0:"Trace",1:"Magic Guard"},heightm:0.7,weightkg:10.6,color:"",eggGroups:["Water 1","Fairy"]},
voodoom:{num:-61,species:"Voodoom",types:["Fighting","Dark"],baseStats:{hp:90,atk:85,def:80,spa:105,spd:80,spe:110},abilities:{0:"Volt Absorb",1:"Lightningrod"},heightm:2,weightkg:75.5,color:"",eggGroups:["Human-Like","Ground"]}
malaconda:{num:-5,species:"Malaconda",types:["Dark","Grass"],baseStats:{hp:115,atk:100,def:60,spa:40,spd:130,spe:55},abilities:{0:"Harvest",1:"Infiltrator"},heightm:5.5,weightkg:108.8,color:"Brown",eggGroups:["Grass","Dragon"]},
cawmodore:{num:-6,species:"Cawmodore",types:["Steel","Flying"],baseStats:{hp:50,atk:92,def:130,spa:65,spd:75,spe:118},abilities:{0:"Intimidate",1:"Volt Absorb",H:"Big Pecks"},heightm:1.7,weightkg:37.0,color:"Black",eggGroups:["Flying"]},
volkraken:{num:-7,species:"Volkraken",types:["Water","Fire"],baseStats:{hp:100,atk:45,def:80,spa:135,spd:100,spe:95},abilities:{0:"Analytic",1:"Infiltrator",H:"Pressure"},heightm:1.3,weightkg:44.5,color:"Red",eggGroups:["Water 1","Water 2"]},
syclant:{num:-51,species:"Syclant",types:["Ice","Bug"],baseStats:{hp:70,atk:116,def:70,spa:114,spd:64,spe:121},abilities:{0:"Compound Eyes",1:"Mountaineer"},heightm:1.7,weightkg:52,color:"Blue",eggGroups:["Bug"]},
revenankh:{num:-52,species:"Revenankh",types:["Ghost","Fighting"],baseStats:{hp:90,atk:105,def:90,spa:65,spd:110,spe:65},abilities:{0:"Shed Skin",1:"Air Lock"},heightm:1.8,weightkg:44,color:"White",eggGroups:["Amorphous","Human-Like"]},
pyroak:{num:-53,species:"Pyroak",types:["Fire","Grass"],baseStats:{hp:120,atk:70,def:105,spa:95,spd:90,spe:60},abilities:{0:"Rock Head",1:"Battle Armor"},heightm:2.1,weightkg:168,color:"Brown",eggGroups:["Monster","Dragon"]},
fidgit:{num:-54,species:"Fidgit",types:["Poison","Ground"],baseStats:{hp:95,atk:76,def:109,spa:90,spd:80,spe:105},abilities:{0:"Persistent",1:"Vital Spirit"},heightm:0.9,weightkg:53,color:"Purple",eggGroups:["Field"]},
stratagem:{num:-55,species:"Stratagem",types:["Rock"],gender:"N",baseStats:{hp:90,atk:60,def:65,spa:120,spd:70,spe:130},abilities:{0:"Levitate",1:"Technician"},heightm:0.9,weightkg:45,color:"Gray",eggGroups:["Undiscovered"]},
arghonaut:{num:-56,species:"Arghonaut",types:["Water","Fighting"],baseStats:{hp:105,atk:110,def:95,spa:70,spd:100,spe:75},abilities:{0:"Unaware"},heightm:1.7,weightkg:151,color:"Green",eggGroups:["Water 1","Water 3"]},
kitsunoh:{num:-57,species:"Kitsunoh",types:["Steel","Ghost"],baseStats:{hp:80,atk:103,def:85,spa:55,spd:80,spe:110},abilities:{0:"Frisk",1:"Limber"},heightm:1.1,weightkg:51,color:"Gray",eggGroups:["Field"]},
cyclohm:{num:-58,species:"Cyclohm",types:["Electric","Dragon"],baseStats:{hp:108,atk:60,def:118,spa:112,spd:70,spe:80},abilities:{0:"Shield Dust",1:"Static"},heightm:1.6,weightkg:59,color:"Yellow",eggGroups:["Dragon","Monster"]},
colossoil:{num:-59,species:"Colossoil",types:["Dark","Ground"],baseStats:{hp:133,atk:122,def:72,spa:71,spd:72,spe:95},abilities:{0:"Rebound",1:"Guts"},heightm:2.6,weightkg:683.6,color:"Brown",eggGroups:["Water 2","Field"]},
krilowatt:{num:-60,species:"Krilowatt",types:["Electric","Water"],baseStats:{hp:151,atk:84,def:73,spa:83,spd:74,spe:105},abilities:{0:"Trace",1:"Magic Guard"},heightm:0.7,weightkg:10.6,color:"Red",eggGroups:["Water 1","Fairy"]},
voodoom:{num:-61,species:"Voodoom",types:["Fighting","Dark"],baseStats:{hp:90,atk:85,def:80,spa:105,spd:80,spe:110},abilities:{0:"Volt Absorb",1:"Lightningrod"},heightm:2,weightkg:75.5,color:"Brown",eggGroups:["Human-Like","Ground"]}
};