mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-03-22 01:35:31 -05:00
6126 lines
148 KiB
JavaScript
6126 lines
148 KiB
JavaScript
'use strict';
|
|
|
|
exports.BattleItems = {
|
|
"abomasite": {
|
|
id: "abomasite",
|
|
name: "Abomasite",
|
|
spritenum: 575,
|
|
megaStone: "Abomasnow-Mega",
|
|
megaEvolves: "Abomasnow",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 674,
|
|
gen: 6,
|
|
desc: "If holder is an Abomasnow, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"absolite": {
|
|
id: "absolite",
|
|
name: "Absolite",
|
|
spritenum: 576,
|
|
megaStone: "Absol-Mega",
|
|
megaEvolves: "Absol",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 677,
|
|
gen: 6,
|
|
desc: "If holder is an Absol, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"absorbbulb": {
|
|
id: "absorbbulb",
|
|
name: "Absorb Bulb",
|
|
spritenum: 2,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onAfterDamage: function (damage, target, source, move) {
|
|
if (move.type === 'Water' && target.useItem()) {
|
|
this.boost({spa: 1});
|
|
}
|
|
},
|
|
num: 545,
|
|
gen: 5,
|
|
desc: "Raises holder's Sp. Atk by 1 stage if hit by a Water-type attack. Single use.",
|
|
},
|
|
"adamantorb": {
|
|
id: "adamantorb",
|
|
name: "Adamant Orb",
|
|
spritenum: 4,
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && user.baseTemplate.species === 'Dialga' && (move.type === 'Steel' || move.type === 'Dragon')) {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 135,
|
|
gen: 4,
|
|
desc: "If holder is a Dialga, its Steel- and Dragon-type attacks have 1.2x power.",
|
|
},
|
|
"adrenalineorb": {
|
|
id: "adrenalineorb",
|
|
name: "Adrenaline Orb",
|
|
spritenum: 660,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onAfterBoost: function (boost, target, source, effect) {
|
|
if (effect.id === 'intimidate' && target.useItem()) {
|
|
this.boost({spe: 1});
|
|
}
|
|
},
|
|
num: 846,
|
|
gen: 7,
|
|
desc: "Raises holder's Speed by 1 stage if it gets affected by Intimidate. Single use.",
|
|
},
|
|
"aerodactylite": {
|
|
id: "aerodactylite",
|
|
name: "Aerodactylite",
|
|
spritenum: 577,
|
|
megaStone: "Aerodactyl-Mega",
|
|
megaEvolves: "Aerodactyl",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 672,
|
|
gen: 6,
|
|
desc: "If holder is an Aerodactyl, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"aggronite": {
|
|
id: "aggronite",
|
|
name: "Aggronite",
|
|
isUnreleased: true,
|
|
spritenum: 578,
|
|
megaStone: "Aggron-Mega",
|
|
megaEvolves: "Aggron",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 667,
|
|
gen: 6,
|
|
desc: "If holder is an Aggron, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"aguavberry": {
|
|
id: "aguavberry",
|
|
name: "Aguav Berry",
|
|
spritenum: 5,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Dragon",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(pokemon.maxhp / 2);
|
|
if (pokemon.getNature().minus === 'spd') {
|
|
pokemon.addVolatile('confusion');
|
|
}
|
|
},
|
|
num: 162,
|
|
gen: 3,
|
|
desc: "Restores 1/2 max HP at 1/4 max HP or less; confuses if -SpD Nature. Single use.",
|
|
},
|
|
"airballoon": {
|
|
id: "airballoon",
|
|
name: "Air Balloon",
|
|
spritenum: 6,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onStart: function (target) {
|
|
if (!target.ignoringItem() && !this.getPseudoWeather('gravity')) {
|
|
this.add('-item', target, 'Air Balloon');
|
|
}
|
|
},
|
|
// airborneness implemented in sim/pokemon.js:Pokemon#isGrounded
|
|
onAfterDamage: function (damage, target, source, effect) {
|
|
this.debug('effect: ' + effect.id);
|
|
if (effect.effectType === 'Move' && effect.id !== 'confused') {
|
|
this.add('-enditem', target, 'Air Balloon');
|
|
target.item = '';
|
|
this.itemData = {id: '', target: this};
|
|
this.runEvent('AfterUseItem', target, null, null, 'airballoon');
|
|
}
|
|
},
|
|
onAfterSubDamage: function (damage, target, source, effect) {
|
|
this.debug('effect: ' + effect.id);
|
|
if (effect.effectType === 'Move' && effect.id !== 'confused') {
|
|
this.add('-enditem', target, 'Air Balloon');
|
|
target.setItem('');
|
|
}
|
|
},
|
|
num: 541,
|
|
gen: 5,
|
|
desc: "Holder is immune to Ground-type attacks. Pops when holder is hit.",
|
|
},
|
|
"alakazite": {
|
|
id: "alakazite",
|
|
name: "Alakazite",
|
|
spritenum: 579,
|
|
megaStone: "Alakazam-Mega",
|
|
megaEvolves: "Alakazam",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 679,
|
|
gen: 6,
|
|
desc: "If holder is an Alakazam, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"aloraichiumz": {
|
|
id: "aloraichiumz",
|
|
name: "Aloraichium Z",
|
|
spritenum: 655,
|
|
onTakeItem: false,
|
|
zMove: "Stoked Sparksurfer",
|
|
zMoveFrom: "Thunderbolt",
|
|
zMoveUser: ["Raichu-Alola"],
|
|
num: 803,
|
|
gen: 7,
|
|
desc: "If holder is an Alolan Raichu with Thunderbolt, it can use Stoked Sparksurfer.",
|
|
},
|
|
"altarianite": {
|
|
id: "altarianite",
|
|
name: "Altarianite",
|
|
isUnreleased: true,
|
|
spritenum: 615,
|
|
megaStone: "Altaria-Mega",
|
|
megaEvolves: "Altaria",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 755,
|
|
gen: 6,
|
|
desc: "If holder is an Altaria, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"ampharosite": {
|
|
id: "ampharosite",
|
|
name: "Ampharosite",
|
|
isUnreleased: true,
|
|
spritenum: 580,
|
|
megaStone: "Ampharos-Mega",
|
|
megaEvolves: "Ampharos",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 658,
|
|
gen: 6,
|
|
desc: "If holder is an Ampharos, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"apicotberry": {
|
|
id: "apicotberry",
|
|
name: "Apicot Berry",
|
|
spritenum: 10,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Ground",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.boost({spd:1});
|
|
},
|
|
num: 205,
|
|
gen: 3,
|
|
desc: "Raises holder's Sp. Def by 1 stage when at 1/4 max HP or less. Single use.",
|
|
},
|
|
"armorfossil": {
|
|
id: "armorfossil",
|
|
name: "Armor Fossil",
|
|
spritenum: 12,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 104,
|
|
gen: 4,
|
|
desc: "Can be revived into Shieldon.",
|
|
},
|
|
"aspearberry": {
|
|
id: "aspearberry",
|
|
name: "Aspear Berry",
|
|
spritenum: 13,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Ice",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'frz') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'frz') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 153,
|
|
gen: 3,
|
|
desc: "Holder is cured if it is frozen. Single use.",
|
|
},
|
|
"assaultvest": {
|
|
id: "assaultvest",
|
|
name: "Assault Vest",
|
|
spritenum: 581,
|
|
fling: {
|
|
basePower: 80,
|
|
},
|
|
onModifySpDPriority: 1,
|
|
onModifySpD: function (spd) {
|
|
return this.chainModify(1.5);
|
|
},
|
|
onDisableMove: function (pokemon) {
|
|
let moves = pokemon.moveset;
|
|
for (let i = 0; i < moves.length; i++) {
|
|
if (this.getMove(moves[i].move).category === 'Status') {
|
|
pokemon.disableMove(moves[i].id);
|
|
}
|
|
}
|
|
},
|
|
num: 640,
|
|
gen: 6,
|
|
desc: "Holder's Sp. Def is 1.5x, but it can only select damaging moves.",
|
|
},
|
|
"audinite": {
|
|
id: "audinite",
|
|
name: "Audinite",
|
|
spritenum: 617,
|
|
megaStone: "Audino-Mega",
|
|
megaEvolves: "Audino",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 757,
|
|
gen: 6,
|
|
desc: "If holder is an Audino, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"babiriberry": {
|
|
id: "babiriberry",
|
|
name: "Babiri Berry",
|
|
spritenum: 17,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Steel",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Steel' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 199,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Steel-type attack. Single use.",
|
|
},
|
|
"banettite": {
|
|
id: "banettite",
|
|
name: "Banettite",
|
|
isUnreleased: true,
|
|
spritenum: 582,
|
|
megaStone: "Banette-Mega",
|
|
megaEvolves: "Banette",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 668,
|
|
gen: 6,
|
|
desc: "If holder is a Banette, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"beastball": {
|
|
id: "beastball",
|
|
name: "Beast Ball",
|
|
spritenum: 661,
|
|
num: 851,
|
|
gen: 7,
|
|
desc: "A special Poke Ball designed to catch Ultra Beasts.",
|
|
},
|
|
"beedrillite": {
|
|
id: "beedrillite",
|
|
name: "Beedrillite",
|
|
spritenum: 628,
|
|
megaStone: "Beedrill-Mega",
|
|
megaEvolves: "Beedrill",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 770,
|
|
gen: 6,
|
|
desc: "If holder is a Beedrill, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"belueberry": {
|
|
id: "belueberry",
|
|
name: "Belue Berry",
|
|
isUnreleased: true,
|
|
spritenum: 21,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Electric",
|
|
},
|
|
onEat: false,
|
|
num: 183,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"berryjuice": {
|
|
id: "berryjuice",
|
|
name: "Berry Juice",
|
|
spritenum: 22,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 2) {
|
|
if (this.runEvent('TryHeal', pokemon) && pokemon.useItem()) {
|
|
this.heal(20);
|
|
}
|
|
}
|
|
},
|
|
num: 43,
|
|
gen: 2,
|
|
desc: "Restores 20 HP when at 1/2 max HP or less. Single use.",
|
|
},
|
|
"bigroot": {
|
|
id: "bigroot",
|
|
name: "Big Root",
|
|
spritenum: 29,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onTryHealPriority: 1,
|
|
onTryHeal: function (damage, target, source, effect) {
|
|
let heals = {drain: 1, leechseed: 1, ingrain: 1, aquaring: 1, strengthsap: 1};
|
|
if (heals[effect.id]) {
|
|
return Math.ceil((damage * 1.3) - 0.5); // Big Root rounds half down
|
|
}
|
|
},
|
|
num: 296,
|
|
gen: 4,
|
|
desc: "Holder gains 1.3x HP from draining/Aqua Ring/Ingrain/Leech Seed/Strength Sap.",
|
|
},
|
|
"bindingband": {
|
|
id: "bindingband",
|
|
name: "Binding Band",
|
|
spritenum: 31,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
// implemented in statuses
|
|
num: 544,
|
|
gen: 5,
|
|
desc: "Holder's partial-trapping moves deal 1/6 max HP per turn instead of 1/8.",
|
|
},
|
|
"blackbelt": {
|
|
id: "blackbelt",
|
|
name: "Black Belt",
|
|
spritenum: 32,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Fighting') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 241,
|
|
gen: 2,
|
|
desc: "Holder's Fighting-type attacks have 1.2x power.",
|
|
},
|
|
"blacksludge": {
|
|
id: "blacksludge",
|
|
name: "Black Sludge",
|
|
spritenum: 34,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onResidualOrder: 5,
|
|
onResidualSubOrder: 2,
|
|
onResidual: function (pokemon) {
|
|
if (pokemon.hasType('Poison')) {
|
|
this.heal(pokemon.maxhp / 16);
|
|
} else {
|
|
this.damage(pokemon.maxhp / 8);
|
|
}
|
|
},
|
|
num: 281,
|
|
gen: 4,
|
|
desc: "Each turn, if holder is a Poison type, restores 1/16 max HP; loses 1/8 if not.",
|
|
},
|
|
"blackglasses": {
|
|
id: "blackglasses",
|
|
name: "Black Glasses",
|
|
spritenum: 35,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Dark') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 240,
|
|
gen: 2,
|
|
desc: "Holder's Dark-type attacks have 1.2x power.",
|
|
},
|
|
"blastoisinite": {
|
|
id: "blastoisinite",
|
|
name: "Blastoisinite",
|
|
spritenum: 583,
|
|
megaStone: "Blastoise-Mega",
|
|
megaEvolves: "Blastoise",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 661,
|
|
gen: 6,
|
|
desc: "If holder is a Blastoise, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"blazikenite": {
|
|
id: "blazikenite",
|
|
name: "Blazikenite",
|
|
spritenum: 584,
|
|
megaStone: "Blaziken-Mega",
|
|
megaEvolves: "Blaziken",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 664,
|
|
gen: 6,
|
|
desc: "If holder is a Blaziken, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"blueorb": {
|
|
id: "blueorb",
|
|
name: "Blue Orb",
|
|
spritenum: 41,
|
|
onSwitchIn: function (pokemon) {
|
|
if (pokemon.isActive && pokemon.baseTemplate.species === 'Kyogre') {
|
|
this.insertQueue({pokemon: pokemon, choice: 'runPrimal'});
|
|
}
|
|
},
|
|
onPrimal: function (pokemon) {
|
|
let template = this.getTemplate('Kyogre-Primal');
|
|
pokemon.formeChange(template);
|
|
pokemon.baseTemplate = template;
|
|
pokemon.details = template.species + (pokemon.level === 100 ? '' : ', L' + pokemon.level) + (pokemon.gender === '' ? '' : ', ' + pokemon.gender) + (pokemon.set.shiny ? ', shiny' : '');
|
|
if (pokemon.illusion) {
|
|
pokemon.ability = ''; // Don't allow Illusion to wear off
|
|
this.add('-primal', pokemon.illusion);
|
|
} else {
|
|
this.add('detailschange', pokemon, pokemon.details);
|
|
this.add('-primal', pokemon);
|
|
}
|
|
pokemon.setAbility(template.abilities['0']);
|
|
pokemon.baseAbility = pokemon.ability;
|
|
},
|
|
onTakeItem: function (item, source) {
|
|
if (source.baseTemplate.baseSpecies === 'Kyogre') return false;
|
|
return true;
|
|
},
|
|
num: 535,
|
|
gen: 6,
|
|
desc: "If holder is a Kyogre, this item triggers its Primal Reversion in battle.",
|
|
},
|
|
"blukberry": {
|
|
id: "blukberry",
|
|
name: "Bluk Berry",
|
|
spritenum: 44,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Fire",
|
|
},
|
|
onEat: false,
|
|
num: 165,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"brightpowder": {
|
|
id: "brightpowder",
|
|
name: "BrightPowder",
|
|
spritenum: 51,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onModifyAccuracy: function (accuracy) {
|
|
if (typeof accuracy !== 'number') return;
|
|
this.debug('brightpowder - decreasing accuracy');
|
|
return accuracy * 0.9;
|
|
},
|
|
num: 213,
|
|
gen: 2,
|
|
desc: "The accuracy of attacks against the holder is 0.9x.",
|
|
},
|
|
"buggem": {
|
|
id: "buggem",
|
|
name: "Bug Gem",
|
|
isUnreleased: true,
|
|
spritenum: 53,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Bug') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Bug Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 558,
|
|
gen: 5,
|
|
desc: "Holder's first successful Bug-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"bugmemory": {
|
|
id: "bugmemory",
|
|
name: "Bug Memory",
|
|
spritenum: 673,
|
|
onMemory: 'Bug',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Bug",
|
|
num: 909,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Bug type.",
|
|
},
|
|
"buginiumz": {
|
|
id: "buginiumz",
|
|
name: "Buginium Z",
|
|
spritenum: 642,
|
|
onPlate: 'Bug',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Bug",
|
|
forcedForme: "Arceus-Bug",
|
|
num: 787,
|
|
gen: 7,
|
|
desc: "If holder has a Bug move, this item allows it to use a Bug Z-Move.",
|
|
},
|
|
"burndrive": {
|
|
id: "burndrive",
|
|
name: "Burn Drive",
|
|
spritenum: 54,
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 649) || pokemon.baseTemplate.num === 649) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
onDrive: 'Fire',
|
|
forcedForme: "Genesect-Burn",
|
|
num: 118,
|
|
gen: 5,
|
|
desc: "Holder's Techno Blast is Fire type.",
|
|
},
|
|
"cameruptite": {
|
|
id: "cameruptite",
|
|
name: "Cameruptite",
|
|
isUnreleased: true,
|
|
spritenum: 625,
|
|
megaStone: "Camerupt-Mega",
|
|
megaEvolves: "Camerupt",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 767,
|
|
gen: 6,
|
|
desc: "If holder is a Camerupt, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"cellbattery": {
|
|
id: "cellbattery",
|
|
name: "Cell Battery",
|
|
spritenum: 60,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onAfterDamage: function (damage, target, source, move) {
|
|
if (move.type === 'Electric' && target.useItem()) {
|
|
this.boost({atk: 1});
|
|
}
|
|
},
|
|
num: 546,
|
|
gen: 5,
|
|
desc: "Raises holder's Attack by 1 if hit by an Electric-type attack. Single use.",
|
|
},
|
|
"charcoal": {
|
|
id: "charcoal",
|
|
name: "Charcoal",
|
|
spritenum: 61,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Fire') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 249,
|
|
gen: 2,
|
|
desc: "Holder's Fire-type attacks have 1.2x power.",
|
|
},
|
|
"charizarditex": {
|
|
id: "charizarditex",
|
|
name: "Charizardite X",
|
|
spritenum: 585,
|
|
megaStone: "Charizard-Mega-X",
|
|
megaEvolves: "Charizard",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 660,
|
|
gen: 6,
|
|
desc: "If holder is a Charizard, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"charizarditey": {
|
|
id: "charizarditey",
|
|
name: "Charizardite Y",
|
|
spritenum: 586,
|
|
megaStone: "Charizard-Mega-Y",
|
|
megaEvolves: "Charizard",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 678,
|
|
gen: 6,
|
|
desc: "If holder is a Charizard, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"chartiberry": {
|
|
id: "chartiberry",
|
|
name: "Charti Berry",
|
|
spritenum: 62,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Rock",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Rock' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 195,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Rock-type attack. Single use.",
|
|
},
|
|
"cheriberry": {
|
|
id: "cheriberry",
|
|
name: "Cheri Berry",
|
|
spritenum: 63,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Fire",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'par') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'par') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 149,
|
|
gen: 3,
|
|
desc: "Holder cures itself if it is paralyzed. Single use.",
|
|
},
|
|
"cherishball": {
|
|
id: "cherishball",
|
|
name: "Cherish Ball",
|
|
spritenum: 64,
|
|
num: 16,
|
|
gen: 4,
|
|
desc: "A rare Poke Ball that has been crafted to commemorate an occasion.",
|
|
},
|
|
"chestoberry": {
|
|
id: "chestoberry",
|
|
name: "Chesto Berry",
|
|
spritenum: 65,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Water",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'slp') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'slp') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 150,
|
|
gen: 3,
|
|
desc: "Holder wakes up if it is asleep. Single use.",
|
|
},
|
|
"chilanberry": {
|
|
id: "chilanberry",
|
|
name: "Chilan Berry",
|
|
spritenum: 66,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Normal",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Normal' && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 200,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a Normal-type attack. Single use.",
|
|
},
|
|
"chilldrive": {
|
|
id: "chilldrive",
|
|
name: "Chill Drive",
|
|
spritenum: 67,
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 649) || pokemon.baseTemplate.num === 649) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
onDrive: 'Ice',
|
|
forcedForme: "Genesect-Chill",
|
|
num: 119,
|
|
gen: 5,
|
|
desc: "Holder's Techno Blast is Ice type.",
|
|
},
|
|
"choiceband": {
|
|
id: "choiceband",
|
|
name: "Choice Band",
|
|
spritenum: 68,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onStart: function (pokemon) {
|
|
if (pokemon.volatiles['choicelock']) {
|
|
this.debug('removing choicelock: ' + pokemon.volatiles.choicelock);
|
|
}
|
|
pokemon.removeVolatile('choicelock');
|
|
},
|
|
onModifyMove: function (move, pokemon) {
|
|
pokemon.addVolatile('choicelock');
|
|
},
|
|
onModifyAtkPriority: 1,
|
|
onModifyAtk: function (atk) {
|
|
return this.chainModify(1.5);
|
|
},
|
|
isChoice: true,
|
|
num: 220,
|
|
gen: 3,
|
|
desc: "Holder's Attack is 1.5x, but it can only select the first move it executes.",
|
|
},
|
|
"choicescarf": {
|
|
id: "choicescarf",
|
|
name: "Choice Scarf",
|
|
spritenum: 69,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onStart: function (pokemon) {
|
|
if (pokemon.volatiles['choicelock']) {
|
|
this.debug('removing choicelock: ' + pokemon.volatiles.choicelock);
|
|
}
|
|
pokemon.removeVolatile('choicelock');
|
|
},
|
|
onModifyMove: function (move, pokemon) {
|
|
pokemon.addVolatile('choicelock');
|
|
},
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(1.5);
|
|
},
|
|
isChoice: true,
|
|
num: 287,
|
|
gen: 4,
|
|
desc: "Holder's Speed is 1.5x, but it can only select the first move it executes.",
|
|
},
|
|
"choicespecs": {
|
|
id: "choicespecs",
|
|
name: "Choice Specs",
|
|
spritenum: 70,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onStart: function (pokemon) {
|
|
if (pokemon.volatiles['choicelock']) {
|
|
this.debug('removing choicelock: ' + pokemon.volatiles.choicelock);
|
|
}
|
|
pokemon.removeVolatile('choicelock');
|
|
},
|
|
onModifyMove: function (move, pokemon) {
|
|
pokemon.addVolatile('choicelock');
|
|
},
|
|
onModifySpAPriority: 1,
|
|
onModifySpA: function (spa) {
|
|
return this.chainModify(1.5);
|
|
},
|
|
isChoice: true,
|
|
num: 297,
|
|
gen: 4,
|
|
desc: "Holder's Sp. Atk is 1.5x, but it can only select the first move it executes.",
|
|
},
|
|
"chopleberry": {
|
|
id: "chopleberry",
|
|
name: "Chople Berry",
|
|
spritenum: 71,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Fighting",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Fighting' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 189,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Fighting-type attack. Single use.",
|
|
},
|
|
"clawfossil": {
|
|
id: "clawfossil",
|
|
name: "Claw Fossil",
|
|
spritenum: 72,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 100,
|
|
gen: 3,
|
|
desc: "Can be revived into Anorith.",
|
|
},
|
|
"cobaberry": {
|
|
id: "cobaberry",
|
|
name: "Coba Berry",
|
|
spritenum: 76,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Flying",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Flying' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 192,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Flying-type attack. Single use.",
|
|
},
|
|
"colburberry": {
|
|
id: "colburberry",
|
|
name: "Colbur Berry",
|
|
spritenum: 78,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Dark",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Dark' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 198,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Dark-type attack. Single use.",
|
|
},
|
|
"cornnberry": {
|
|
id: "cornnberry",
|
|
name: "Cornn Berry",
|
|
isUnreleased: true,
|
|
spritenum: 81,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Bug",
|
|
},
|
|
onEat: false,
|
|
num: 175,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"coverfossil": {
|
|
id: "coverfossil",
|
|
name: "Cover Fossil",
|
|
spritenum: 85,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 572,
|
|
gen: 5,
|
|
desc: "Can be revived into Tirtouga.",
|
|
},
|
|
"custapberry": {
|
|
id: "custapberry",
|
|
name: "Custap Berry",
|
|
isUnreleased: true,
|
|
spritenum: 86,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Ghost",
|
|
},
|
|
onModifyPriorityPriority: -1,
|
|
onModifyPriority: function (priority, pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
if (pokemon.eatItem()) {
|
|
this.add('-activate', pokemon, 'item: Custap Berry');
|
|
pokemon.removeVolatile('custapberry');
|
|
return Math.round(priority) + 0.1;
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 210,
|
|
gen: 4,
|
|
desc: "Holder moves first in its priority bracket when at 1/4 max HP or less. Single use.",
|
|
},
|
|
"damprock": {
|
|
id: "damprock",
|
|
name: "Damp Rock",
|
|
spritenum: 88,
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
num: 285,
|
|
gen: 4,
|
|
desc: "Holder's use of Rain Dance lasts 8 turns instead of 5.",
|
|
},
|
|
"darkgem": {
|
|
id: "darkgem",
|
|
name: "Dark Gem",
|
|
isUnreleased: true,
|
|
spritenum: 89,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Dark') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Dark Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 562,
|
|
gen: 5,
|
|
desc: "Holder's first successful Dark-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"darkmemory": {
|
|
id: "darkmemory",
|
|
name: "Dark Memory",
|
|
spritenum: 683,
|
|
onMemory: 'Dark',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Dark",
|
|
num: 919,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Dark type.",
|
|
},
|
|
"darkiniumz": {
|
|
id: "darkiniumz",
|
|
name: "Darkinium Z",
|
|
spritenum: 646,
|
|
onPlate: 'Dark',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Dark",
|
|
forcedForme: "Arceus-Dark",
|
|
num: 791,
|
|
gen: 7,
|
|
desc: "If holder has a Dark move, this item allows it to use a Dark Z-Move.",
|
|
},
|
|
"decidiumz": {
|
|
id: "decidiumz",
|
|
name: "Decidium Z",
|
|
spritenum: 650,
|
|
onTakeItem: false,
|
|
zMove: "Sinister Arrow Raid",
|
|
zMoveFrom: "Spirit Shackle",
|
|
zMoveUser: ["Decidueye"],
|
|
num: 798,
|
|
gen: 7,
|
|
desc: "If holder is a Decidueye with Spirit Shackle, it can use Sinister Arrow Raid.",
|
|
},
|
|
"deepseascale": {
|
|
id: "deepseascale",
|
|
name: "Deep Sea Scale",
|
|
spritenum: 93,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onModifySpDPriority: 2,
|
|
onModifySpD: function (spd, pokemon) {
|
|
if (pokemon.baseTemplate.species === 'Clamperl') {
|
|
return this.chainModify(2);
|
|
}
|
|
},
|
|
num: 227,
|
|
gen: 3,
|
|
desc: "If holder is a Clamperl, its Sp. Def is doubled.",
|
|
},
|
|
"deepseatooth": {
|
|
id: "deepseatooth",
|
|
name: "Deep Sea Tooth",
|
|
spritenum: 94,
|
|
fling: {
|
|
basePower: 90,
|
|
},
|
|
onModifySpAPriority: 1,
|
|
onModifySpA: function (spa, pokemon) {
|
|
if (pokemon.baseTemplate.species === 'Clamperl') {
|
|
return this.chainModify(2);
|
|
}
|
|
},
|
|
num: 226,
|
|
gen: 3,
|
|
desc: "If holder is a Clamperl, its Sp. Atk is doubled.",
|
|
},
|
|
"destinyknot": {
|
|
id: "destinyknot",
|
|
name: "Destiny Knot",
|
|
spritenum: 95,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onAttractPriority: -100,
|
|
onAttract: function (target, source) {
|
|
this.debug('attract intercepted: ' + target + ' from ' + source);
|
|
if (!source || source === target) return;
|
|
if (!source.volatiles.attract) source.addVolatile('attract', target);
|
|
},
|
|
num: 280,
|
|
gen: 4,
|
|
desc: "If holder becomes infatuated, the other Pokemon also becomes infatuated.",
|
|
},
|
|
"diancite": {
|
|
id: "diancite",
|
|
name: "Diancite",
|
|
isUnreleased: true,
|
|
spritenum: 624,
|
|
megaStone: "Diancie-Mega",
|
|
megaEvolves: "Diancie",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 764,
|
|
gen: 6,
|
|
desc: "If holder is a Diancie, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"diveball": {
|
|
id: "diveball",
|
|
name: "Dive Ball",
|
|
spritenum: 101,
|
|
num: 7,
|
|
gen: 3,
|
|
desc: "A Poke Ball that works especially well on Pokemon that live underwater.",
|
|
},
|
|
"domefossil": {
|
|
id: "domefossil",
|
|
name: "Dome Fossil",
|
|
spritenum: 102,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 102,
|
|
gen: 3,
|
|
desc: "Can be revived into Kabuto.",
|
|
},
|
|
"dousedrive": {
|
|
id: "dousedrive",
|
|
name: "Douse Drive",
|
|
spritenum: 103,
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 649) || pokemon.baseTemplate.num === 649) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
onDrive: 'Water',
|
|
forcedForme: "Genesect-Douse",
|
|
num: 116,
|
|
gen: 5,
|
|
desc: "Holder's Techno Blast is Water type.",
|
|
},
|
|
"dracoplate": {
|
|
id: "dracoplate",
|
|
name: "Draco Plate",
|
|
spritenum: 105,
|
|
onPlate: 'Dragon',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Dragon') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Dragon",
|
|
num: 311,
|
|
gen: 4,
|
|
desc: "Holder's Dragon-type attacks have 1.2x power. Judgment is Dragon type.",
|
|
},
|
|
"dragonfang": {
|
|
id: "dragonfang",
|
|
name: "Dragon Fang",
|
|
spritenum: 106,
|
|
fling: {
|
|
basePower: 70,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Dragon') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 250,
|
|
gen: 2,
|
|
desc: "Holder's Dragon-type attacks have 1.2x power.",
|
|
},
|
|
"dragongem": {
|
|
id: "dragongem",
|
|
name: "Dragon Gem",
|
|
isUnreleased: true,
|
|
spritenum: 107,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Dragon') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Dragon Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 561,
|
|
gen: 5,
|
|
desc: "Holder's first successful Dragon-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"dragonmemory": {
|
|
id: "dragonmemory",
|
|
name: "Dragon Memory",
|
|
spritenum: 682,
|
|
onMemory: 'Dragon',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Dragon",
|
|
num: 918,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Dragon type.",
|
|
},
|
|
"dragoniumz": {
|
|
id: "dragoniumz",
|
|
name: "Dragonium Z",
|
|
spritenum: 645,
|
|
onPlate: 'Dragon',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Dragon",
|
|
forcedForme: "Arceus-Dragon",
|
|
num: 790,
|
|
gen: 7,
|
|
desc: "If holder has a Dragon move, this item allows it to use a Dragon Z-Move.",
|
|
},
|
|
"dreadplate": {
|
|
id: "dreadplate",
|
|
name: "Dread Plate",
|
|
spritenum: 110,
|
|
onPlate: 'Dark',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Dark') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Dark",
|
|
num: 312,
|
|
gen: 4,
|
|
desc: "Holder's Dark-type attacks have 1.2x power. Judgment is Dark type.",
|
|
},
|
|
"dreamball": {
|
|
id: "dreamball",
|
|
name: "Dream Ball",
|
|
spritenum: 111,
|
|
num: 576,
|
|
gen: 5,
|
|
desc: "A special Poke Ball that appears out of nowhere in a bag at the Entree Forest.",
|
|
},
|
|
"durinberry": {
|
|
id: "durinberry",
|
|
name: "Durin Berry",
|
|
isUnreleased: true,
|
|
spritenum: 114,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Water",
|
|
},
|
|
onEat: false,
|
|
num: 182,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"duskball": {
|
|
id: "duskball",
|
|
name: "Dusk Ball",
|
|
spritenum: 115,
|
|
num: 13,
|
|
gen: 4,
|
|
desc: "A Poke Ball that makes it easier to catch wild Pokemon at night or in caves.",
|
|
},
|
|
"earthplate": {
|
|
id: "earthplate",
|
|
name: "Earth Plate",
|
|
spritenum: 117,
|
|
onPlate: 'Ground',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Ground') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Ground",
|
|
num: 305,
|
|
gen: 4,
|
|
desc: "Holder's Ground-type attacks have 1.2x power. Judgment is Ground type.",
|
|
},
|
|
"eeviumz": {
|
|
id: "eeviumz",
|
|
name: "Eevium Z",
|
|
spritenum: 657,
|
|
onTakeItem: false,
|
|
zMove: "Extreme Evoboost",
|
|
zMoveFrom: "Last Resort",
|
|
zMoveUser: ["Eevee"],
|
|
num: 805,
|
|
gen: 7,
|
|
desc: "If holder is an Eevee with Last Resort, it can use Extreme Evoboost.",
|
|
},
|
|
"ejectbutton": {
|
|
id: "ejectbutton",
|
|
name: "Eject Button",
|
|
spritenum: 118,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onAfterMoveSecondaryPriority: 2,
|
|
onAfterMoveSecondary: function (target, source, move) {
|
|
if (source && source !== target && target.hp && move && move.category !== 'Status') {
|
|
if (!this.canSwitch(target.side) || target.forceSwitchFlag) return;
|
|
if (target.useItem()) {
|
|
target.switchFlag = true;
|
|
source.switchFlag = false;
|
|
}
|
|
}
|
|
},
|
|
num: 547,
|
|
gen: 5,
|
|
desc: "If holder survives a hit, it immediately switches out to a chosen ally. Single use.",
|
|
},
|
|
"electirizer": {
|
|
id: "electirizer",
|
|
name: "Electirizer",
|
|
spritenum: 119,
|
|
fling: {
|
|
basePower: 80,
|
|
},
|
|
num: 322,
|
|
gen: 4,
|
|
desc: "Evolves Electabuzz into Electivire when traded.",
|
|
},
|
|
"electricgem": {
|
|
id: "electricgem",
|
|
name: "Electric Gem",
|
|
isUnreleased: true,
|
|
spritenum: 120,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status' || move.id in {firepledge:1, grasspledge:1, waterpledge:1}) return;
|
|
if (move.type === 'Electric') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Electric Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 550,
|
|
gen: 5,
|
|
desc: "Holder's first successful Electric-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"electricmemory": {
|
|
id: "electricmemory",
|
|
name: "Electric Memory",
|
|
spritenum: 679,
|
|
onMemory: 'Electric',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Electric",
|
|
num: 915,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Electric type.",
|
|
},
|
|
"electricseed": {
|
|
id: "electricseed",
|
|
name: "Electric Seed",
|
|
spritenum: 664,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (this.isTerrain('electricterrain') && pokemon.useItem()) {
|
|
this.boost({def: 1});
|
|
}
|
|
},
|
|
num: 881,
|
|
gen: 7,
|
|
desc: "If the terrain is Electric Terrain, raises holder's Defense by 1 stage. Single use.",
|
|
},
|
|
"electriumz": {
|
|
id: "electriumz",
|
|
name: "Electrium Z",
|
|
spritenum: 634,
|
|
onPlate: 'Electric',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Electric",
|
|
forcedForme: "Arceus-Electric",
|
|
num: 779,
|
|
gen: 7,
|
|
desc: "If holder has an Electric move, this item allows it to use an Electric Z-Move.",
|
|
},
|
|
"energypowder": {
|
|
id: "energypowder",
|
|
name: "Energy Powder",
|
|
spritenum: 123,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
num: 34,
|
|
gen: 2,
|
|
desc: "Restores 50 HP to one Pokemon but lowers Happiness.",
|
|
},
|
|
"enigmaberry": {
|
|
id: "enigmaberry",
|
|
name: "Enigma Berry",
|
|
isUnreleased: true,
|
|
spritenum: 124,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Bug",
|
|
},
|
|
onHit: function (target, source, move) {
|
|
if (move && move.typeMod > 0) {
|
|
if (target.eatItem()) {
|
|
this.heal(target.maxhp / 4);
|
|
}
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function () { },
|
|
num: 208,
|
|
gen: 3,
|
|
desc: "Restores 1/4 max HP after holder is hit by a supereffective move. Single use.",
|
|
},
|
|
"eviolite": {
|
|
id: "eviolite",
|
|
name: "Eviolite",
|
|
spritenum: 130,
|
|
fling: {
|
|
basePower: 40,
|
|
},
|
|
onModifyDefPriority: 2,
|
|
onModifyDef: function (def, pokemon) {
|
|
if (pokemon.baseTemplate.nfe) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onModifySpDPriority: 2,
|
|
onModifySpD: function (spd, pokemon) {
|
|
if (pokemon.baseTemplate.nfe) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
num: 538,
|
|
gen: 5,
|
|
desc: "If holder's species can evolve, its Defense and Sp. Def are 1.5x.",
|
|
},
|
|
"expertbelt": {
|
|
id: "expertbelt",
|
|
name: "Expert Belt",
|
|
spritenum: 132,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onModifyDamage: function (damage, source, target, move) {
|
|
if (move && move.typeMod > 0) {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 268,
|
|
gen: 4,
|
|
desc: "Holder's attacks that are super effective against the target do 1.2x damage.",
|
|
},
|
|
"fairiumz": {
|
|
id: "fairiumz",
|
|
name: "Fairium Z",
|
|
spritenum: 648,
|
|
onPlate: 'Fairy',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Fairy",
|
|
forcedForme: "Arceus-Fairy",
|
|
num: 793,
|
|
gen: 7,
|
|
desc: "If holder has a Fairy move, this item allows it to use a Fairy Z-Move.",
|
|
},
|
|
"fairygem": {
|
|
id: "fairygem",
|
|
name: "Fairy Gem",
|
|
isUnreleased: true,
|
|
spritenum: 611,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Fairy') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Fairy Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 715,
|
|
gen: 6,
|
|
desc: "Holder's first successful Fairy-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"fairymemory": {
|
|
id: "fairymemory",
|
|
name: "Fairy Memory",
|
|
spritenum: 684,
|
|
onMemory: 'Fairy',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Fairy",
|
|
num: 920,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Fairy type.",
|
|
},
|
|
"fastball": {
|
|
id: "fastball",
|
|
name: "Fast Ball",
|
|
spritenum: 137,
|
|
num: 492,
|
|
gen: 2,
|
|
desc: "A Poke Ball that makes it easier to catch Pokemon which are quick to run away.",
|
|
},
|
|
"fightinggem": {
|
|
id: "fightinggem",
|
|
name: "Fighting Gem",
|
|
isUnreleased: true,
|
|
spritenum: 139,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Fighting') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Fighting Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 553,
|
|
gen: 5,
|
|
desc: "Holder's first successful Fighting-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"fightingmemory": {
|
|
id: "fightingmemory",
|
|
name: "Fighting Memory",
|
|
spritenum: 668,
|
|
onMemory: 'Fighting',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Fighting",
|
|
num: 904,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Fighting type.",
|
|
},
|
|
"fightiniumz": {
|
|
id: "fightiniumz",
|
|
name: "Fightinium Z",
|
|
spritenum: 637,
|
|
onPlate: 'Fighting',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Fighting",
|
|
forcedForme: "Arceus-Fighting",
|
|
num: 782,
|
|
gen: 7,
|
|
desc: "If holder has a Fighting move, this item allows it to use a Fighting Z-Move.",
|
|
},
|
|
"figyberry": {
|
|
id: "figyberry",
|
|
name: "Figy Berry",
|
|
spritenum: 140,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Bug",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(pokemon.maxhp / 2);
|
|
if (pokemon.getNature().minus === 'atk') {
|
|
pokemon.addVolatile('confusion');
|
|
}
|
|
},
|
|
num: 159,
|
|
gen: 3,
|
|
desc: "Restores 1/2 max HP at 1/4 max HP or less; confuses if -Atk Nature. Single use.",
|
|
},
|
|
"firegem": {
|
|
id: "firegem",
|
|
name: "Fire Gem",
|
|
isUnreleased: true,
|
|
spritenum: 141,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status' || move.id in {firepledge:1, grasspledge:1, waterpledge:1}) return;
|
|
if (move.type === 'Fire') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Fire Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 548,
|
|
gen: 5,
|
|
desc: "Holder's first successful Fire-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"firememory": {
|
|
id: "firememory",
|
|
name: "Fire Memory",
|
|
spritenum: 676,
|
|
onMemory: 'Fire',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Fire",
|
|
num: 912,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Fire type.",
|
|
},
|
|
"firiumz": {
|
|
id: "firiumz",
|
|
name: "Firium Z",
|
|
spritenum: 632,
|
|
onPlate: 'Fire',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Fire",
|
|
forcedForme: "Arceus-Fire",
|
|
num: 777,
|
|
gen: 7,
|
|
desc: "If holder has a Fire move, this item allows it to use a Fire Z-Move.",
|
|
},
|
|
"fistplate": {
|
|
id: "fistplate",
|
|
name: "Fist Plate",
|
|
spritenum: 143,
|
|
onPlate: 'Fighting',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Fighting') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Fighting",
|
|
num: 303,
|
|
gen: 4,
|
|
desc: "Holder's Fighting-type attacks have 1.2x power. Judgment is Fighting type.",
|
|
},
|
|
"flameorb": {
|
|
id: "flameorb",
|
|
name: "Flame Orb",
|
|
spritenum: 145,
|
|
fling: {
|
|
basePower: 30,
|
|
status: 'brn',
|
|
},
|
|
onResidualOrder: 26,
|
|
onResidualSubOrder: 2,
|
|
onResidual: function (pokemon) {
|
|
pokemon.trySetStatus('brn');
|
|
},
|
|
num: 273,
|
|
gen: 4,
|
|
desc: "At the end of every turn, this item attempts to burn the holder.",
|
|
},
|
|
"flameplate": {
|
|
id: "flameplate",
|
|
name: "Flame Plate",
|
|
spritenum: 146,
|
|
onPlate: 'Fire',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Fire') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Fire",
|
|
num: 298,
|
|
gen: 4,
|
|
desc: "Holder's Fire-type attacks have 1.2x power. Judgment is Fire type.",
|
|
},
|
|
"floatstone": {
|
|
id: "floatstone",
|
|
name: "Float Stone",
|
|
spritenum: 147,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onModifyWeight: function (weight) {
|
|
return weight / 2;
|
|
},
|
|
num: 539,
|
|
gen: 5,
|
|
desc: "Holder's weight is halved.",
|
|
},
|
|
"flyinggem": {
|
|
id: "flyinggem",
|
|
name: "Flying Gem",
|
|
isUnreleased: true,
|
|
spritenum: 149,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Flying') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Flying Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 556,
|
|
gen: 5,
|
|
desc: "Holder's first successful Flying-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"flyingmemory": {
|
|
id: "flyingmemory",
|
|
name: "Flying Memory",
|
|
spritenum: 669,
|
|
onMemory: 'Flying',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Flying",
|
|
num: 905,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Flying type.",
|
|
},
|
|
"flyiniumz": {
|
|
id: "flyiniumz",
|
|
name: "Flyinium Z",
|
|
spritenum: 640,
|
|
onPlate: 'Flying',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Flying",
|
|
forcedForme: "Arceus-Flying",
|
|
num: 785,
|
|
gen: 7,
|
|
desc: "If holder has a Flying move, this item allows it to use a Flying Z-Move.",
|
|
},
|
|
"focusband": {
|
|
id: "focusband",
|
|
name: "Focus Band",
|
|
spritenum: 150,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onDamage: function (damage, target, source, effect) {
|
|
if (this.random(10) === 0 && damage >= target.hp && effect && effect.effectType === 'Move') {
|
|
this.add("-activate", target, "item: Focus Band");
|
|
return target.hp - 1;
|
|
}
|
|
},
|
|
num: 230,
|
|
gen: 2,
|
|
desc: "Holder has a 10% chance to survive an attack that would KO it with 1 HP.",
|
|
},
|
|
"focussash": {
|
|
id: "focussash",
|
|
name: "Focus Sash",
|
|
spritenum: 151,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onDamage: function (damage, target, source, effect) {
|
|
if (target.hp === target.maxhp && damage >= target.hp && effect && effect.effectType === 'Move') {
|
|
if (target.useItem()) {
|
|
return target.hp - 1;
|
|
}
|
|
}
|
|
},
|
|
num: 275,
|
|
gen: 4,
|
|
desc: "If holder's HP is full, will survive an attack that would KO it with 1 HP. Single use.",
|
|
},
|
|
"friendball": {
|
|
id: "friendball",
|
|
name: "Friend Ball",
|
|
spritenum: 153,
|
|
num: 497,
|
|
gen: 2,
|
|
desc: "A Poke Ball that makes caught Pokemon more friendly.",
|
|
},
|
|
"fullincense": {
|
|
id: "fullincense",
|
|
name: "Full Incense",
|
|
spritenum: 155,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onModifyPriority: function (priority, pokemon) {
|
|
return Math.round(priority) - 0.1;
|
|
},
|
|
num: 316,
|
|
gen: 4,
|
|
desc: "Holder moves last in its priority bracket.",
|
|
},
|
|
"galladite": {
|
|
id: "galladite",
|
|
name: "Galladite",
|
|
isUnreleased: true,
|
|
spritenum: 616,
|
|
megaStone: "Gallade-Mega",
|
|
megaEvolves: "Gallade",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 756,
|
|
gen: 6,
|
|
desc: "If holder is a Gallade, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"ganlonberry": {
|
|
id: "ganlonberry",
|
|
name: "Ganlon Berry",
|
|
spritenum: 158,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Ice",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.boost({def:1});
|
|
},
|
|
num: 202,
|
|
gen: 3,
|
|
desc: "Raises holder's Defense by 1 stage when at 1/4 max HP or less. Single use.",
|
|
},
|
|
"garchompite": {
|
|
id: "garchompite",
|
|
name: "Garchompite",
|
|
spritenum: 589,
|
|
megaStone: "Garchomp-Mega",
|
|
megaEvolves: "Garchomp",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 683,
|
|
gen: 6,
|
|
desc: "If holder is a Garchomp, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"gardevoirite": {
|
|
id: "gardevoirite",
|
|
name: "Gardevoirite",
|
|
isUnreleased: true,
|
|
spritenum: 587,
|
|
megaStone: "Gardevoir-Mega",
|
|
megaEvolves: "Gardevoir",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 657,
|
|
gen: 6,
|
|
desc: "If holder is a Gardevoir, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"gengarite": {
|
|
id: "gengarite",
|
|
name: "Gengarite",
|
|
spritenum: 588,
|
|
megaStone: "Gengar-Mega",
|
|
megaEvolves: "Gengar",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 656,
|
|
gen: 6,
|
|
desc: "If holder is a Gengar, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"ghostgem": {
|
|
id: "ghostgem",
|
|
name: "Ghost Gem",
|
|
isUnreleased: true,
|
|
spritenum: 161,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Ghost') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Ghost Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 560,
|
|
gen: 5,
|
|
desc: "Holder's first successful Ghost-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"ghostmemory": {
|
|
id: "ghostmemory",
|
|
name: "Ghost Memory",
|
|
spritenum: 674,
|
|
onMemory: 'Ghost',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Ghost",
|
|
num: 910,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Ghost type.",
|
|
},
|
|
"ghostiumz": {
|
|
id: "ghostiumz",
|
|
name: "Ghostium Z",
|
|
spritenum: 644,
|
|
onPlate: 'Ghost',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Ghost",
|
|
forcedForme: "Arceus-Ghost",
|
|
num: 789,
|
|
gen: 7,
|
|
desc: "If holder has a Ghost move, this item allows it to use a Ghost Z-Move.",
|
|
},
|
|
"glalitite": {
|
|
id: "glalitite",
|
|
name: "Glalitite",
|
|
spritenum: 623,
|
|
megaStone: "Glalie-Mega",
|
|
megaEvolves: "Glalie",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 763,
|
|
gen: 6,
|
|
desc: "If holder is a Glalie, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"grassgem": {
|
|
id: "grassgem",
|
|
name: "Grass Gem",
|
|
isUnreleased: true,
|
|
spritenum: 172,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status' || move.id in {firepledge:1, grasspledge:1, waterpledge:1}) return;
|
|
if (move.type === 'Grass') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Grass Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 551,
|
|
gen: 5,
|
|
desc: "Holder's first successful Grass-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"grassmemory": {
|
|
id: "grassmemory",
|
|
name: "Grass Memory",
|
|
spritenum: 678,
|
|
onMemory: 'Grass',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Grass",
|
|
num: 914,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Grass type.",
|
|
},
|
|
"grassiumz": {
|
|
id: "grassiumz",
|
|
name: "Grassium Z",
|
|
spritenum: 635,
|
|
onPlate: 'Grass',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Grass",
|
|
forcedForme: "Arceus-Grass",
|
|
num: 780,
|
|
gen: 7,
|
|
desc: "If holder has a Grass move, this item allows it to use a Grass Z-Move.",
|
|
},
|
|
"grassyseed": {
|
|
id: "grassyseed",
|
|
name: "Grassy Seed",
|
|
spritenum: 667,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (this.isTerrain('grassyterrain') && pokemon.useItem()) {
|
|
this.boost({def: 1});
|
|
}
|
|
},
|
|
num: 884,
|
|
gen: 7,
|
|
desc: "If the terrain is Grassy Terrain, raises holder's Defense by 1 stage. Single use.",
|
|
},
|
|
"greatball": {
|
|
id: "greatball",
|
|
name: "Great Ball",
|
|
spritenum: 174,
|
|
num: 3,
|
|
gen: 1,
|
|
desc: "A high-performance Ball that provides a higher catch rate than a Poke Ball.",
|
|
},
|
|
"grepaberry": {
|
|
id: "grepaberry",
|
|
name: "Grepa Berry",
|
|
spritenum: 178,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Flying",
|
|
},
|
|
onEat: false,
|
|
num: 173,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"gripclaw": {
|
|
id: "gripclaw",
|
|
name: "Grip Claw",
|
|
spritenum: 179,
|
|
fling: {
|
|
basePower: 90,
|
|
},
|
|
// implemented in statuses
|
|
num: 286,
|
|
gen: 4,
|
|
desc: "Holder's partial-trapping moves always last 7 turns.",
|
|
},
|
|
"griseousorb": {
|
|
id: "griseousorb",
|
|
name: "Griseous Orb",
|
|
spritenum: 180,
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (user.baseTemplate.num === 487 && (move.type === 'Ghost' || move.type === 'Dragon')) {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 487) || pokemon.baseTemplate.num === 487) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Giratina-Origin",
|
|
num: 112,
|
|
gen: 4,
|
|
desc: "If holder is a Giratina, its Ghost- and Dragon-type attacks have 1.2x power.",
|
|
},
|
|
"groundgem": {
|
|
id: "groundgem",
|
|
name: "Ground Gem",
|
|
isUnreleased: true,
|
|
spritenum: 182,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Ground') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Ground Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 555,
|
|
gen: 5,
|
|
desc: "Holder's first successful Ground-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"groundmemory": {
|
|
id: "groundmemory",
|
|
name: "Ground Memory",
|
|
spritenum: 671,
|
|
onMemory: 'Ground',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Ground",
|
|
num: 907,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Ground type.",
|
|
},
|
|
"groundiumz": {
|
|
id: "groundiumz",
|
|
name: "Groundium Z",
|
|
spritenum: 639,
|
|
onPlate: 'Ground',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Ground",
|
|
forcedForme: "Arceus-Ground",
|
|
num: 784,
|
|
gen: 7,
|
|
desc: "If holder has a Ground move, this item allows it to use a Ground Z-Move.",
|
|
},
|
|
"gyaradosite": {
|
|
id: "gyaradosite",
|
|
name: "Gyaradosite",
|
|
spritenum: 589,
|
|
megaStone: "Gyarados-Mega",
|
|
megaEvolves: "Gyarados",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 676,
|
|
gen: 6,
|
|
desc: "If holder is a Gyarados, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"habanberry": {
|
|
id: "habanberry",
|
|
name: "Haban Berry",
|
|
spritenum: 185,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Dragon",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Dragon' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 197,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Dragon-type attack. Single use.",
|
|
},
|
|
"hardstone": {
|
|
id: "hardstone",
|
|
name: "Hard Stone",
|
|
spritenum: 187,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Rock') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 238,
|
|
gen: 2,
|
|
desc: "Holder's Rock-type attacks have 1.2x power.",
|
|
},
|
|
"healball": {
|
|
id: "healball",
|
|
name: "Heal Ball",
|
|
spritenum: 188,
|
|
num: 14,
|
|
gen: 4,
|
|
desc: "A remedial Poke Ball that restores the caught Pokemon's HP and status problem.",
|
|
},
|
|
"heatrock": {
|
|
id: "heatrock",
|
|
name: "Heat Rock",
|
|
spritenum: 193,
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
num: 284,
|
|
gen: 4,
|
|
desc: "Holder's use of Sunny Day lasts 8 turns instead of 5.",
|
|
},
|
|
"heavyball": {
|
|
id: "heavyball",
|
|
name: "Heavy Ball",
|
|
spritenum: 194,
|
|
num: 495,
|
|
gen: 2,
|
|
desc: "A Poke Ball for catching very heavy Pokemon.",
|
|
},
|
|
"helixfossil": {
|
|
id: "helixfossil",
|
|
name: "Helix Fossil",
|
|
spritenum: 195,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 101,
|
|
gen: 3,
|
|
desc: "Can be revived into Omanyte.",
|
|
},
|
|
"heracronite": {
|
|
id: "heracronite",
|
|
name: "Heracronite",
|
|
spritenum: 590,
|
|
megaStone: "Heracross-Mega",
|
|
megaEvolves: "Heracross",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 680,
|
|
gen: 6,
|
|
desc: "If holder is a Heracross, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"hondewberry": {
|
|
id: "hondewberry",
|
|
name: "Hondew Berry",
|
|
spritenum: 213,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Ground",
|
|
},
|
|
onEat: false,
|
|
num: 172,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"houndoominite": {
|
|
id: "houndoominite",
|
|
name: "Houndoominite",
|
|
spritenum: 591,
|
|
megaStone: "Houndoom-Mega",
|
|
megaEvolves: "Houndoom",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 666,
|
|
gen: 6,
|
|
desc: "If holder is a Houndoom, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"iapapaberry": {
|
|
id: "iapapaberry",
|
|
name: "Iapapa Berry",
|
|
spritenum: 217,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Dark",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(pokemon.maxhp / 2);
|
|
if (pokemon.getNature().minus === 'def') {
|
|
pokemon.addVolatile('confusion');
|
|
}
|
|
},
|
|
num: 163,
|
|
gen: 3,
|
|
desc: "Restores 1/2 max HP at 1/4 max HP or less; confuses if -Def Nature. Single use.",
|
|
},
|
|
"icegem": {
|
|
id: "icegem",
|
|
name: "Ice Gem",
|
|
isUnreleased: true,
|
|
spritenum: 218,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Ice') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Ice Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 552,
|
|
gen: 5,
|
|
desc: "Holder's first successful Ice-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"icememory": {
|
|
id: "icememory",
|
|
name: "Ice Memory",
|
|
spritenum: 681,
|
|
onMemory: 'Ice',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Ice",
|
|
num: 917,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Ice type.",
|
|
},
|
|
"icicleplate": {
|
|
id: "icicleplate",
|
|
name: "Icicle Plate",
|
|
spritenum: 220,
|
|
onPlate: 'Ice',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Ice') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Ice",
|
|
num: 302,
|
|
gen: 4,
|
|
desc: "Holder's Ice-type attacks have 1.2x power. Judgment is Ice type.",
|
|
},
|
|
"iciumz": {
|
|
id: "iciumz",
|
|
name: "Icium Z",
|
|
spritenum: 636,
|
|
onPlate: 'Ice',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Ice",
|
|
forcedForme: "Arceus-Ice",
|
|
num: 781,
|
|
gen: 7,
|
|
desc: "If holder has an Ice move, this item allows it to use an Ice Z-Move.",
|
|
},
|
|
"icyrock": {
|
|
id: "icyrock",
|
|
name: "Icy Rock",
|
|
spritenum: 221,
|
|
fling: {
|
|
basePower: 40,
|
|
},
|
|
num: 282,
|
|
gen: 4,
|
|
desc: "Holder's use of Hail lasts 8 turns instead of 5.",
|
|
},
|
|
"inciniumz": {
|
|
id: "inciniumz",
|
|
name: "Incinium Z",
|
|
spritenum: 651,
|
|
onTakeItem: false,
|
|
zMove: "Malicious Moonsault",
|
|
zMoveFrom: "Darkest Lariat",
|
|
zMoveUser: ["Incineroar"],
|
|
num: 799,
|
|
gen: 7,
|
|
desc: "If holder is an Incineroar with Darkest Lariat, it can use Malicious Moonsault.",
|
|
},
|
|
"insectplate": {
|
|
id: "insectplate",
|
|
name: "Insect Plate",
|
|
spritenum: 223,
|
|
onPlate: 'Bug',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Bug') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Bug",
|
|
num: 308,
|
|
gen: 4,
|
|
desc: "Holder's Bug-type attacks have 1.2x power. Judgment is Bug type.",
|
|
},
|
|
"ironball": {
|
|
id: "ironball",
|
|
name: "Iron Ball",
|
|
spritenum: 224,
|
|
fling: {
|
|
basePower: 130,
|
|
},
|
|
onEffectiveness: function (typeMod, target, type, move) {
|
|
if (target.volatiles['ingrain'] || target.volatiles['smackdown'] || this.getPseudoWeather('gravity')) return;
|
|
if (move.type === 'Ground' && target.hasType('Flying')) return 0;
|
|
},
|
|
// airborneness negation implemented in sim/pokemon.js:Pokemon#isGrounded
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(0.5);
|
|
},
|
|
num: 278,
|
|
gen: 4,
|
|
desc: "Holder is grounded, Speed halved. If Flying type, takes neutral Ground damage.",
|
|
},
|
|
"ironplate": {
|
|
id: "ironplate",
|
|
name: "Iron Plate",
|
|
spritenum: 225,
|
|
onPlate: 'Steel',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Steel') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Steel",
|
|
num: 313,
|
|
gen: 4,
|
|
desc: "Holder's Steel-type attacks have 1.2x power. Judgment is Steel type.",
|
|
},
|
|
"jabocaberry": {
|
|
id: "jabocaberry",
|
|
name: "Jaboca Berry",
|
|
isUnreleased: true,
|
|
spritenum: 230,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Dragon",
|
|
},
|
|
onAfterDamage: function (damage, target, source, move) {
|
|
if (source && source !== target && move && move.category === 'Physical') {
|
|
if (target.eatItem()) {
|
|
this.damage(source.maxhp / 8, source, target);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 211,
|
|
gen: 4,
|
|
desc: "If holder is hit by a physical move, attacker loses 1/8 of its max HP. Single use.",
|
|
},
|
|
"kasibberry": {
|
|
id: "kasibberry",
|
|
name: "Kasib Berry",
|
|
spritenum: 233,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Ghost",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Ghost' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 196,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Ghost-type attack. Single use.",
|
|
},
|
|
"kebiaberry": {
|
|
id: "kebiaberry",
|
|
name: "Kebia Berry",
|
|
spritenum: 234,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Poison",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Poison' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 190,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Poison-type attack. Single use.",
|
|
},
|
|
"keeberry": {
|
|
id: "keeberry",
|
|
name: "Kee Berry",
|
|
spritenum: 593,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Fairy",
|
|
},
|
|
onAfterMoveSecondary: function (target, source, move) {
|
|
if (move.category === 'Physical') {
|
|
target.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.boost({def: 1});
|
|
},
|
|
num: 687,
|
|
gen: 6,
|
|
desc: "Raises holder's Defense by 1 stage after it is hit by a physical attack. Single use.",
|
|
},
|
|
"kelpsyberry": {
|
|
id: "kelpsyberry",
|
|
name: "Kelpsy Berry",
|
|
spritenum: 235,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Fighting",
|
|
},
|
|
onEat: false,
|
|
num: 170,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"kangaskhanite": {
|
|
id: "kangaskhanite",
|
|
name: "Kangaskhanite",
|
|
spritenum: 592,
|
|
megaStone: "Kangaskhan-Mega",
|
|
megaEvolves: "Kangaskhan",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 675,
|
|
gen: 6,
|
|
desc: "If holder is a Kangaskhan, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"kingsrock": {
|
|
id: "kingsrock",
|
|
name: "King's Rock",
|
|
spritenum: 236,
|
|
fling: {
|
|
basePower: 30,
|
|
volatileStatus: 'flinch',
|
|
},
|
|
onModifyMovePriority: -1,
|
|
onModifyMove: function (move) {
|
|
if (move.category !== "Status") {
|
|
if (!move.secondaries) move.secondaries = [];
|
|
for (let i = 0; i < move.secondaries.length; i++) {
|
|
if (move.secondaries[i].volatileStatus === 'flinch') return;
|
|
}
|
|
move.secondaries.push({
|
|
chance: 10,
|
|
volatileStatus: 'flinch',
|
|
});
|
|
}
|
|
},
|
|
num: 221,
|
|
gen: 2,
|
|
desc: "Holder's attacks without a chance to flinch gain a 10% chance to flinch.",
|
|
},
|
|
"laggingtail": {
|
|
id: "laggingtail",
|
|
name: "Lagging Tail",
|
|
spritenum: 237,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onModifyPriority: function (priority, pokemon) {
|
|
return Math.round(priority) - 0.1;
|
|
},
|
|
num: 279,
|
|
gen: 4,
|
|
desc: "Holder moves last in its priority bracket.",
|
|
},
|
|
"lansatberry": {
|
|
id: "lansatberry",
|
|
name: "Lansat Berry",
|
|
spritenum: 238,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Flying",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
pokemon.addVolatile('focusenergy');
|
|
},
|
|
num: 206,
|
|
gen: 3,
|
|
desc: "Holder gains the Focus Energy effect when at 1/4 max HP or less. Single use.",
|
|
},
|
|
"latiasite": {
|
|
id: "latiasite",
|
|
name: "Latiasite",
|
|
isUnreleased: true,
|
|
spritenum: 629,
|
|
megaStone: "Latias-Mega",
|
|
megaEvolves: "Latias",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 684,
|
|
gen: 6,
|
|
desc: "If holder is a Latias, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"latiosite": {
|
|
id: "latiosite",
|
|
name: "Latiosite",
|
|
isUnreleased: true,
|
|
spritenum: 630,
|
|
megaStone: "Latios-Mega",
|
|
megaEvolves: "Latios",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 685,
|
|
gen: 6,
|
|
desc: "If holder is a Latios, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"laxincense": {
|
|
id: "laxincense",
|
|
name: "Lax Incense",
|
|
spritenum: 240,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onModifyAccuracy: function (accuracy) {
|
|
if (typeof accuracy !== 'number') return;
|
|
this.debug('lax incense - decreasing accuracy');
|
|
return accuracy * 0.9;
|
|
},
|
|
num: 255,
|
|
gen: 3,
|
|
desc: "The accuracy of attacks against the holder is 0.9x.",
|
|
},
|
|
"leftovers": {
|
|
id: "leftovers",
|
|
name: "Leftovers",
|
|
spritenum: 242,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onResidualOrder: 5,
|
|
onResidualSubOrder: 2,
|
|
onResidual: function (pokemon) {
|
|
this.heal(pokemon.maxhp / 16);
|
|
},
|
|
num: 234,
|
|
gen: 2,
|
|
desc: "At the end of every turn, holder restores 1/16 of its max HP.",
|
|
},
|
|
"leppaberry": {
|
|
id: "leppaberry",
|
|
name: "Leppa Berry",
|
|
spritenum: 244,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Fighting",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (!pokemon.hp) return;
|
|
let move = pokemon.getMoveData(pokemon.lastMove);
|
|
if (move && move.pp === 0) {
|
|
pokemon.addVolatile('leppaberry');
|
|
pokemon.volatiles['leppaberry'].move = move;
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
let move;
|
|
if (pokemon.volatiles['leppaberry']) {
|
|
move = pokemon.volatiles['leppaberry'].move;
|
|
pokemon.removeVolatile('leppaberry');
|
|
} else {
|
|
let pp = 99;
|
|
for (let moveid in pokemon.moveset) {
|
|
if (pokemon.moveset[moveid].pp < pp) {
|
|
move = pokemon.moveset[moveid];
|
|
pp = move.pp;
|
|
}
|
|
}
|
|
}
|
|
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') {
|
|
let foeActive = pokemon.side.foe.active;
|
|
let foeIsStale = false;
|
|
for (let i = 0; i < foeActive.length; i++) {
|
|
if (foeActive[i].hp && foeActive[i].isStale >= 2) {
|
|
foeIsStale = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!foeIsStale) return;
|
|
}
|
|
pokemon.isStale = 2;
|
|
pokemon.isStaleSource = 'useleppa';
|
|
},
|
|
num: 154,
|
|
gen: 3,
|
|
desc: "Restores 10 PP to the first of the holder's moves to reach 0 PP. Single use.",
|
|
},
|
|
"levelball": {
|
|
id: "levelball",
|
|
name: "Level Ball",
|
|
spritenum: 246,
|
|
num: 493,
|
|
gen: 2,
|
|
desc: "A Poke Ball for catching Pokemon that are a lower level than your own.",
|
|
},
|
|
"liechiberry": {
|
|
id: "liechiberry",
|
|
name: "Liechi Berry",
|
|
spritenum: 248,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Grass",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.boost({atk:1});
|
|
},
|
|
num: 201,
|
|
gen: 3,
|
|
desc: "Raises holder's Attack by 1 stage when at 1/4 max HP or less. Single use.",
|
|
},
|
|
"lifeorb": {
|
|
id: "lifeorb",
|
|
name: "Life Orb",
|
|
spritenum: 249,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onModifyDamage: function (damage, source, target, move) {
|
|
return this.chainModify([0x14CC, 0x1000]);
|
|
},
|
|
onAfterMoveSecondarySelf: function (source, target, move) {
|
|
if (source && source !== target && move && move.category !== 'Status' && !move.ohko) {
|
|
this.damage(source.maxhp / 10, source, source, this.getItem('lifeorb'));
|
|
}
|
|
},
|
|
num: 270,
|
|
gen: 4,
|
|
desc: "Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.",
|
|
},
|
|
"lightball": {
|
|
id: "lightball",
|
|
name: "Light Ball",
|
|
spritenum: 251,
|
|
fling: {
|
|
basePower: 30,
|
|
status: 'par',
|
|
},
|
|
onModifyAtkPriority: 1,
|
|
onModifyAtk: function (atk, pokemon) {
|
|
if (pokemon.baseTemplate.baseSpecies === 'Pikachu') {
|
|
return this.chainModify(2);
|
|
}
|
|
},
|
|
onModifySpAPriority: 1,
|
|
onModifySpA: function (spa, pokemon) {
|
|
if (pokemon.baseTemplate.baseSpecies === 'Pikachu') {
|
|
return this.chainModify(2);
|
|
}
|
|
},
|
|
num: 236,
|
|
gen: 2,
|
|
desc: "If holder is a Pikachu, its Attack and Sp. Atk are doubled.",
|
|
},
|
|
"lightclay": {
|
|
id: "lightclay",
|
|
name: "Light Clay",
|
|
spritenum: 252,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
// implemented in the corresponding thing
|
|
num: 269,
|
|
gen: 4,
|
|
desc: "Holder's use of Aurora Veil, Light Screen, or Reflect lasts 8 turns instead of 5.",
|
|
},
|
|
"lopunnite": {
|
|
id: "lopunnite",
|
|
name: "Lopunnite",
|
|
isUnreleased: true,
|
|
spritenum: 626,
|
|
megaStone: "Lopunny-Mega",
|
|
megaEvolves: "Lopunny",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 768,
|
|
gen: 6,
|
|
desc: "If holder is a Lopunny, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"loveball": {
|
|
id: "loveball",
|
|
name: "Love Ball",
|
|
spritenum: 258,
|
|
num: 496,
|
|
gen: 2,
|
|
desc: "Poke Ball for catching Pokemon that are the opposite gender of your Pokemon.",
|
|
},
|
|
"lucarionite": {
|
|
id: "lucarionite",
|
|
name: "Lucarionite",
|
|
spritenum: 594,
|
|
megaStone: "Lucario-Mega",
|
|
megaEvolves: "Lucario",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 673,
|
|
gen: 6,
|
|
desc: "If holder is a Lucario, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"luckypunch": {
|
|
id: "luckypunch",
|
|
name: "Lucky Punch",
|
|
spritenum: 261,
|
|
fling: {
|
|
basePower: 40,
|
|
},
|
|
onModifyCritRatio: function (critRatio, user) {
|
|
if (user.baseTemplate.species === 'Chansey') {
|
|
return critRatio + 2;
|
|
}
|
|
},
|
|
num: 256,
|
|
gen: 2,
|
|
desc: "If holder is a Chansey, its critical hit ratio is raised by 2 stages.",
|
|
},
|
|
"lumberry": {
|
|
id: "lumberry",
|
|
name: "Lum Berry",
|
|
spritenum: 262,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Flying",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status || pokemon.volatiles['confusion']) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
pokemon.cureStatus();
|
|
pokemon.removeVolatile('confusion');
|
|
},
|
|
num: 157,
|
|
gen: 3,
|
|
desc: "Holder cures itself if it is confused or has a major status condition. Single use.",
|
|
},
|
|
"luminousmoss": {
|
|
id: "luminousmoss",
|
|
name: "Luminous Moss",
|
|
spritenum: 595,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onAfterDamage: function (damage, target, source, move) {
|
|
if (move.type === 'Water' && target.useItem()) {
|
|
this.boost({spd: 1});
|
|
}
|
|
},
|
|
num: 648,
|
|
gen: 6,
|
|
desc: "Raises holder's Sp. Def by 1 stage if hit by a Water-type attack. Single use.",
|
|
},
|
|
"lureball": {
|
|
id: "lureball",
|
|
name: "Lure Ball",
|
|
spritenum: 264,
|
|
num: 494,
|
|
gen: 2,
|
|
desc: "A Poke Ball for catching Pokemon hooked by a Rod when fishing.",
|
|
},
|
|
"lustrousorb": {
|
|
id: "lustrousorb",
|
|
name: "Lustrous Orb",
|
|
spritenum: 265,
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && user.baseTemplate.species === 'Palkia' && (move.type === 'Water' || move.type === 'Dragon')) {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 136,
|
|
gen: 4,
|
|
desc: "If holder is a Palkia, its Water- and Dragon-type attacks have 1.2x power.",
|
|
},
|
|
"luxuryball": {
|
|
id: "luxuryball",
|
|
name: "Luxury Ball",
|
|
spritenum: 266,
|
|
num: 11,
|
|
gen: 3,
|
|
desc: "A comfortable Poke Ball that makes a caught wild Pokemon quickly grow friendly.",
|
|
},
|
|
"machobrace": {
|
|
id: "machobrace",
|
|
name: "Macho Brace",
|
|
isUnreleased: true,
|
|
spritenum: 269,
|
|
ignoreKlutz: true,
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(0.5);
|
|
},
|
|
num: 215,
|
|
gen: 3,
|
|
desc: "Holder's Speed is halved. The Ability Klutz does not ignore this effect.",
|
|
},
|
|
"magnet": {
|
|
id: "magnet",
|
|
name: "Magnet",
|
|
spritenum: 273,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Electric') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 242,
|
|
gen: 2,
|
|
desc: "Holder's Electric-type attacks have 1.2x power.",
|
|
},
|
|
"magoberry": {
|
|
id: "magoberry",
|
|
name: "Mago Berry",
|
|
spritenum: 274,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Ghost",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(pokemon.maxhp / 2);
|
|
if (pokemon.getNature().minus === 'spe') {
|
|
pokemon.addVolatile('confusion');
|
|
}
|
|
},
|
|
num: 161,
|
|
gen: 3,
|
|
desc: "Restores 1/2 max HP at 1/4 max HP or less; confuses if -Spe Nature. Single use.",
|
|
},
|
|
"magostberry": {
|
|
id: "magostberry",
|
|
name: "Magost Berry",
|
|
isUnreleased: true,
|
|
spritenum: 275,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Rock",
|
|
},
|
|
onEat: false,
|
|
num: 176,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"mail": {
|
|
id: "mail",
|
|
name: "Mail",
|
|
spritenum: 403,
|
|
onTakeItem: function (item, source) {
|
|
if (!this.activeMove) return false;
|
|
if (this.activeMove.id !== 'knockoff' && this.activeMove.id !== 'thief' && this.activeMove.id !== 'covet') return false;
|
|
},
|
|
isUnreleased: true,
|
|
gen: 2,
|
|
desc: "Cannot be given to or taken from a Pokemon, except by Covet/Knock Off/Thief.",
|
|
},
|
|
"manectite": {
|
|
id: "manectite",
|
|
name: "Manectite",
|
|
spritenum: 596,
|
|
megaStone: "Manectric-Mega",
|
|
megaEvolves: "Manectric",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 682,
|
|
gen: 6,
|
|
desc: "If holder is a Manectric, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"marangaberry": {
|
|
id: "marangaberry",
|
|
name: "Maranga Berry",
|
|
spritenum: 597,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Dark",
|
|
},
|
|
onAfterMoveSecondary: function (target, source, move) {
|
|
if (move.category === 'Special') {
|
|
target.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.boost({spd: 1});
|
|
},
|
|
num: 688,
|
|
gen: 6,
|
|
desc: "Raises holder's Sp. Def by 1 stage after it is hit by a special attack. Single use.",
|
|
},
|
|
"marshadiumz": {
|
|
id: "marshadiumz",
|
|
name: "Marshadium Z",
|
|
isUnreleased: true,
|
|
spritenum: 654,
|
|
onTakeItem: false,
|
|
zMove: "Soul-Stealing 7-Star Strike",
|
|
zMoveFrom: "Spectral Thief",
|
|
zMoveUser: ["Marshadow"],
|
|
num: 802,
|
|
gen: 7,
|
|
desc: "If holder is Marshadow with Spectral Thief, it can use Soul-Stealing 7-Star Strike.",
|
|
},
|
|
"masterball": {
|
|
id: "masterball",
|
|
name: "Master Ball",
|
|
spritenum: 276,
|
|
num: 1,
|
|
gen: 1,
|
|
desc: "The best Ball with the ultimate performance. It will catch any wild Pokemon.",
|
|
},
|
|
"mawilite": {
|
|
id: "mawilite",
|
|
name: "Mawilite",
|
|
spritenum: 598,
|
|
megaStone: "Mawile-Mega",
|
|
megaEvolves: "Mawile",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 681,
|
|
gen: 6,
|
|
desc: "If holder is a Mawile, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"meadowplate": {
|
|
id: "meadowplate",
|
|
name: "Meadow Plate",
|
|
spritenum: 282,
|
|
onPlate: 'Grass',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Grass') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Grass",
|
|
num: 301,
|
|
gen: 4,
|
|
desc: "Holder's Grass-type attacks have 1.2x power. Judgment is Grass type.",
|
|
},
|
|
"medichamite": {
|
|
id: "medichamite",
|
|
name: "Medichamite",
|
|
spritenum: 599,
|
|
megaStone: "Medicham-Mega",
|
|
megaEvolves: "Medicham",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 665,
|
|
gen: 6,
|
|
desc: "If holder is a Medicham, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"mentalherb": {
|
|
id: "mentalherb",
|
|
name: "Mental Herb",
|
|
spritenum: 285,
|
|
fling: {
|
|
basePower: 10,
|
|
effect: function (pokemon) {
|
|
let conditions = ['attract', 'taunt', 'encore', 'torment', 'disable', 'healblock'];
|
|
for (let i = 0; i < conditions.length; i++) {
|
|
if (pokemon.volatiles[conditions[i]]) {
|
|
for (let j = 0; j < conditions.length; j++) {
|
|
pokemon.removeVolatile(conditions[j]);
|
|
if (conditions[i] === 'attract' && conditions[j] === 'attract') {
|
|
this.add('-end', pokemon, 'move: Attract', '[from] item: Mental Herb');
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
let conditions = ['attract', 'taunt', 'encore', 'torment', 'disable', 'healblock'];
|
|
for (let i = 0; i < conditions.length; i++) {
|
|
if (pokemon.volatiles[conditions[i]]) {
|
|
if (!pokemon.useItem()) return;
|
|
for (let j = 0; j < conditions.length; j++) {
|
|
pokemon.removeVolatile(conditions[j]);
|
|
if (conditions[i] === 'attract' && conditions[j] === 'attract') {
|
|
this.add('-end', pokemon, 'move: Attract', '[from] item: Mental Herb');
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
},
|
|
num: 219,
|
|
gen: 3,
|
|
desc: "Cures holder of Attract, Disable, Encore, Heal Block, Taunt, Torment. Single use.",
|
|
},
|
|
"metagrossite": {
|
|
id: "metagrossite",
|
|
name: "Metagrossite",
|
|
spritenum: 618,
|
|
megaStone: "Metagross-Mega",
|
|
megaEvolves: "Metagross",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 758,
|
|
gen: 6,
|
|
desc: "If holder is a Metagross, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"metalcoat": {
|
|
id: "metalcoat",
|
|
name: "Metal Coat",
|
|
spritenum: 286,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Steel') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 233,
|
|
gen: 2,
|
|
desc: "Holder's Steel-type attacks have 1.2x power.",
|
|
},
|
|
"metalpowder": {
|
|
id: "metalpowder",
|
|
name: "Metal Powder",
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
spritenum: 287,
|
|
onModifyDefPriority: 2,
|
|
onModifyDef: function (def, pokemon) {
|
|
if (pokemon.template.species === 'Ditto' && !pokemon.transformed) {
|
|
return this.chainModify(2);
|
|
}
|
|
},
|
|
num: 257,
|
|
gen: 2,
|
|
desc: "If holder is a Ditto that hasn't Transformed, its Defense is doubled.",
|
|
},
|
|
"metronome": {
|
|
id: "metronome",
|
|
name: "Metronome",
|
|
spritenum: 289,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onStart: function (pokemon) {
|
|
pokemon.addVolatile('metronome');
|
|
},
|
|
effect: {
|
|
onStart: function (pokemon) {
|
|
this.effectData.numConsecutive = 0;
|
|
this.effectData.lastMove = '';
|
|
},
|
|
onBeforeMove: function (pokemon, target, move) {
|
|
if (!pokemon.hasItem('metronome')) {
|
|
pokemon.removeVolatile('metronome');
|
|
return;
|
|
}
|
|
if (this.effectData.lastMove === move.id) {
|
|
this.effectData.numConsecutive++;
|
|
} else {
|
|
this.effectData.numConsecutive = 0;
|
|
}
|
|
this.effectData.lastMove = move.id;
|
|
},
|
|
onModifyDamage: function (damage, source, target, move) {
|
|
let numConsecutive = this.effectData.numConsecutive > 5 ? 5 : this.effectData.numConsecutive;
|
|
let dmgMod = [0x1000, 0x1333, 0x1666, 0x1999, 0x1CCC, 0x2000];
|
|
return this.chainModify([dmgMod[numConsecutive], 0x1000]);
|
|
},
|
|
},
|
|
num: 277,
|
|
gen: 4,
|
|
desc: "Damage of moves used on consecutive turns is increased. Max 2x after 5 turns.",
|
|
},
|
|
"mewniumz": {
|
|
id: "mewniumz",
|
|
name: "Mewnium Z",
|
|
spritenum: 658,
|
|
onTakeItem: false,
|
|
zMove: "Genesis Supernova",
|
|
zMoveFrom: "Psychic",
|
|
zMoveUser: ["Mew"],
|
|
num: 806,
|
|
gen: 7,
|
|
desc: "If holder is a Mew with Psychic, it can use Genesis Supernova.",
|
|
},
|
|
"mewtwonitex": {
|
|
id: "mewtwonitex",
|
|
name: "Mewtwonite X",
|
|
spritenum: 600,
|
|
megaStone: "Mewtwo-Mega-X",
|
|
megaEvolves: "Mewtwo",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 662,
|
|
gen: 6,
|
|
desc: "If holder is a Mewtwo, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"mewtwonitey": {
|
|
id: "mewtwonitey",
|
|
name: "Mewtwonite Y",
|
|
spritenum: 601,
|
|
megaStone: "Mewtwo-Mega-Y",
|
|
megaEvolves: "Mewtwo",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 663,
|
|
gen: 6,
|
|
desc: "If holder is a Mewtwo, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"micleberry": {
|
|
id: "micleberry",
|
|
name: "Micle Berry",
|
|
isUnreleased: true,
|
|
spritenum: 290,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Rock",
|
|
},
|
|
onResidual: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
pokemon.addVolatile('micleberry');
|
|
},
|
|
effect: {
|
|
duration: 2,
|
|
onSourceModifyAccuracy: function (accuracy, target, source) {
|
|
this.add('-enditem', source, 'Micle Berry');
|
|
source.removeVolatile('micleberry');
|
|
if (typeof accuracy === 'number') {
|
|
return accuracy * 1.2;
|
|
}
|
|
},
|
|
},
|
|
num: 209,
|
|
gen: 4,
|
|
desc: "Holder's next move has 1.2x accuracy when at 1/4 max HP or less. Single use.",
|
|
},
|
|
"mindplate": {
|
|
id: "mindplate",
|
|
name: "Mind Plate",
|
|
spritenum: 291,
|
|
onPlate: 'Psychic',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Psychic') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Psychic",
|
|
num: 307,
|
|
gen: 4,
|
|
desc: "Holder's Psychic-type attacks have 1.2x power. Judgment is Psychic type.",
|
|
},
|
|
"miracleseed": {
|
|
id: "miracleseed",
|
|
name: "Miracle Seed",
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
spritenum: 292,
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Grass') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 239,
|
|
gen: 2,
|
|
desc: "Holder's Grass-type attacks have 1.2x power.",
|
|
},
|
|
"mistyseed": {
|
|
id: "mistyseed",
|
|
name: "Misty Seed",
|
|
spritenum: 666,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (this.isTerrain('mistyterrain') && pokemon.useItem()) {
|
|
this.boost({spd: 1});
|
|
}
|
|
},
|
|
num: 883,
|
|
gen: 7,
|
|
desc: "If the terrain is Misty Terrain, raises holder's Sp. Def by 1 stage. Single use.",
|
|
},
|
|
"moonball": {
|
|
id: "moonball",
|
|
name: "Moon Ball",
|
|
spritenum: 294,
|
|
num: 498,
|
|
gen: 2,
|
|
desc: "A Poke Ball for catching Pokemon that evolve using the Moon Stone.",
|
|
},
|
|
"muscleband": {
|
|
id: "muscleband",
|
|
name: "Muscle Band",
|
|
spritenum: 297,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.category === 'Physical') {
|
|
return this.chainModify([0x1199, 0x1000]);
|
|
}
|
|
},
|
|
num: 266,
|
|
gen: 4,
|
|
desc: "Holder's physical attacks have 1.1x power.",
|
|
},
|
|
"mysticwater": {
|
|
id: "mysticwater",
|
|
name: "Mystic Water",
|
|
spritenum: 300,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Water') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 243,
|
|
gen: 2,
|
|
desc: "Holder's Water-type attacks have 1.2x power.",
|
|
},
|
|
"nanabberry": {
|
|
id: "nanabberry",
|
|
name: "Nanab Berry",
|
|
isUnreleased: true,
|
|
spritenum: 302,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Water",
|
|
},
|
|
onEat: false,
|
|
num: 166,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"nestball": {
|
|
id: "nestball",
|
|
name: "Nest Ball",
|
|
spritenum: 303,
|
|
num: 8,
|
|
gen: 3,
|
|
desc: "A Poke Ball that works especially well on weaker Pokemon in the wild.",
|
|
},
|
|
"netball": {
|
|
id: "netball",
|
|
name: "Net Ball",
|
|
spritenum: 304,
|
|
num: 6,
|
|
gen: 3,
|
|
desc: "A Poke Ball that works especially well on Water- and Bug-type Pokemon.",
|
|
},
|
|
"nevermeltice": {
|
|
id: "nevermeltice",
|
|
name: "Never-Melt Ice",
|
|
spritenum: 305,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Ice') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 246,
|
|
gen: 2,
|
|
desc: "Holder's Ice-type attacks have 1.2x power.",
|
|
},
|
|
"nomelberry": {
|
|
id: "nomelberry",
|
|
name: "Nomel Berry",
|
|
isUnreleased: true,
|
|
spritenum: 306,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Dragon",
|
|
},
|
|
onEat: false,
|
|
num: 178,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"normalgem": {
|
|
id: "normalgem",
|
|
name: "Normal Gem",
|
|
spritenum: 307,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status' || move.id in {firepledge:1, grasspledge:1, waterpledge:1}) return;
|
|
if (move.type === 'Normal') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Normal Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 564,
|
|
gen: 5,
|
|
desc: "Holder's first successful Normal-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"normaliumz": {
|
|
id: "normaliumz",
|
|
name: "Normalium Z",
|
|
spritenum: 631,
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Normal",
|
|
num: 776,
|
|
gen: 7,
|
|
desc: "If holder has a Normal move, this item allows it to use a Normal Z-Move.",
|
|
},
|
|
"occaberry": {
|
|
id: "occaberry",
|
|
name: "Occa Berry",
|
|
spritenum: 311,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Fire",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Fire' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 184,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Fire-type attack. Single use.",
|
|
},
|
|
"oddincense": {
|
|
id: "oddincense",
|
|
name: "Odd Incense",
|
|
spritenum: 312,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Psychic') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 314,
|
|
gen: 4,
|
|
desc: "Holder's Psychic-type attacks have 1.2x power.",
|
|
},
|
|
"oldamber": {
|
|
id: "oldamber",
|
|
name: "Old Amber",
|
|
spritenum: 314,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 103,
|
|
gen: 3,
|
|
desc: "Can be revived into Aerodactyl.",
|
|
},
|
|
"oranberry": {
|
|
id: "oranberry",
|
|
name: "Oran Berry",
|
|
spritenum: 319,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Poison",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 2) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(10);
|
|
},
|
|
num: 155,
|
|
gen: 3,
|
|
desc: "Restores 10 HP when at 1/2 max HP or less. Single use.",
|
|
},
|
|
"pamtreberry": {
|
|
id: "pamtreberry",
|
|
name: "Pamtre Berry",
|
|
isUnreleased: true,
|
|
spritenum: 323,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Steel",
|
|
},
|
|
onEat: false,
|
|
num: 180,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"parkball": {
|
|
id: "parkball",
|
|
name: "Park Ball",
|
|
spritenum: 325,
|
|
num: 500,
|
|
gen: 4,
|
|
desc: "A special Poke Ball for the Pal Park.",
|
|
},
|
|
"passhoberry": {
|
|
id: "passhoberry",
|
|
name: "Passho Berry",
|
|
spritenum: 329,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Water",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Water' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 185,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Water-type attack. Single use.",
|
|
},
|
|
"payapaberry": {
|
|
id: "payapaberry",
|
|
name: "Payapa Berry",
|
|
spritenum: 330,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Psychic",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Psychic' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 193,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Psychic-type attack. Single use.",
|
|
},
|
|
"pechaberry": {
|
|
id: "pechaberry",
|
|
name: "Pecha Berry",
|
|
spritenum: 333,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Electric",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 151,
|
|
gen: 3,
|
|
desc: "Holder is cured if it is poisoned. Single use.",
|
|
},
|
|
"persimberry": {
|
|
id: "persimberry",
|
|
name: "Persim Berry",
|
|
spritenum: 334,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Ground",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.volatiles['confusion']) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
pokemon.removeVolatile('confusion');
|
|
},
|
|
num: 156,
|
|
gen: 3,
|
|
desc: "Holder is cured if it is confused. Single use.",
|
|
},
|
|
"petayaberry": {
|
|
id: "petayaberry",
|
|
name: "Petaya Berry",
|
|
spritenum: 335,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Poison",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.boost({spa:1});
|
|
},
|
|
num: 204,
|
|
gen: 3,
|
|
desc: "Raises holder's Sp. Atk by 1 stage when at 1/4 max HP or less. Single use.",
|
|
},
|
|
"pidgeotite": {
|
|
id: "pidgeotite",
|
|
name: "Pidgeotite",
|
|
spritenum: 622,
|
|
megaStone: "Pidgeot-Mega",
|
|
megaEvolves: "Pidgeot",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 762,
|
|
gen: 6,
|
|
desc: "If holder is a Pidgeot, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"pikaniumz": {
|
|
id: "pikaniumz",
|
|
name: "Pikanium Z",
|
|
spritenum: 649,
|
|
onTakeItem: false,
|
|
zMove: "Catastropika",
|
|
zMoveFrom: "Volt Tackle",
|
|
zMoveUser: ["Pikachu"],
|
|
num: 794,
|
|
gen: 7,
|
|
desc: "If holder is a Pikachu with Volt Tackle, it can use Catastropika.",
|
|
},
|
|
"pikashuniumz": {
|
|
id: "pikashuniumz",
|
|
name: "Pikashunium Z",
|
|
spritenum: 659,
|
|
onTakeItem: false,
|
|
zMove: "10,000,000 Volt Thunderbolt",
|
|
zMoveFrom: "Thunderbolt",
|
|
zMoveUser: ["Pikachu-Original", "Pikachu-Hoenn", "Pikachu-Sinnoh", "Pikachu-Unova", "Pikachu-Kalos", "Pikachu-Alola"],
|
|
num: 836,
|
|
gen: 7,
|
|
desc: "If holder is cap Pikachu with Thunderbolt, it can use 10,000,000 Volt Thunderbolt.",
|
|
},
|
|
"pinapberry": {
|
|
id: "pinapberry",
|
|
name: "Pinap Berry",
|
|
spritenum: 337,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Grass",
|
|
},
|
|
onEat: false,
|
|
num: 168,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"pinsirite": {
|
|
id: "pinsirite",
|
|
name: "Pinsirite",
|
|
spritenum: 602,
|
|
megaStone: "Pinsir-Mega",
|
|
megaEvolves: "Pinsir",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 671,
|
|
gen: 6,
|
|
desc: "If holder is a Pinsir, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"pixieplate": {
|
|
id: "pixieplate",
|
|
name: "Pixie Plate",
|
|
spritenum: 610,
|
|
onPlate: 'Fairy',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Fairy') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Fairy",
|
|
num: 644,
|
|
gen: 6,
|
|
desc: "Holder's Fairy-type attacks have 1.2x power. Judgment is Fairy type.",
|
|
},
|
|
"plumefossil": {
|
|
id: "plumefossil",
|
|
name: "Plume Fossil",
|
|
spritenum: 339,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 573,
|
|
gen: 5,
|
|
desc: "Can be revived into Archen.",
|
|
},
|
|
"poisonbarb": {
|
|
id: "poisonbarb",
|
|
name: "Poison Barb",
|
|
spritenum: 343,
|
|
fling: {
|
|
basePower: 70,
|
|
status: 'psn',
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Poison') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 245,
|
|
gen: 2,
|
|
desc: "Holder's Poison-type attacks have 1.2x power.",
|
|
},
|
|
"poisongem": {
|
|
id: "poisongem",
|
|
name: "Poison Gem",
|
|
isUnreleased: true,
|
|
spritenum: 344,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Poison') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Poison Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 554,
|
|
gen: 5,
|
|
desc: "Holder's first successful Poison-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"poisonmemory": {
|
|
id: "poisonmemory",
|
|
name: "Poison Memory",
|
|
spritenum: 670,
|
|
onMemory: 'Poison',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Poison",
|
|
num: 906,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Poison type.",
|
|
},
|
|
"poisoniumz": {
|
|
id: "poisoniumz",
|
|
name: "Poisonium Z",
|
|
spritenum: 638,
|
|
onPlate: 'Poison',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Poison",
|
|
forcedForme: "Arceus-Poison",
|
|
num: 783,
|
|
gen: 7,
|
|
desc: "If holder has a Poison move, this item allows it to use a Poison Z-Move.",
|
|
},
|
|
"pokeball": {
|
|
id: "pokeball",
|
|
name: "Poke Ball",
|
|
spritenum: 345,
|
|
num: 4,
|
|
gen: 1,
|
|
desc: "A device for catching wild Pokemon. It is designed as a capsule system.",
|
|
},
|
|
"pomegberry": {
|
|
id: "pomegberry",
|
|
name: "Pomeg Berry",
|
|
spritenum: 351,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Ice",
|
|
},
|
|
onEat: false,
|
|
num: 169,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"poweranklet": {
|
|
id: "poweranklet",
|
|
name: "Power Anklet",
|
|
spritenum: 354,
|
|
ignoreKlutz: true,
|
|
fling: {
|
|
basePower: 70,
|
|
},
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(0.5);
|
|
},
|
|
num: 293,
|
|
gen: 4,
|
|
desc: "Holder's Speed is halved. The Ability Klutz does not ignore this effect.",
|
|
},
|
|
"powerband": {
|
|
id: "powerband",
|
|
name: "Power Band",
|
|
spritenum: 355,
|
|
ignoreKlutz: true,
|
|
fling: {
|
|
basePower: 70,
|
|
},
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(0.5);
|
|
},
|
|
num: 292,
|
|
gen: 4,
|
|
desc: "Holder's Speed is halved. The Ability Klutz does not ignore this effect.",
|
|
},
|
|
"powerbelt": {
|
|
id: "powerbelt",
|
|
name: "Power Belt",
|
|
spritenum: 356,
|
|
ignoreKlutz: true,
|
|
fling: {
|
|
basePower: 70,
|
|
},
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(0.5);
|
|
},
|
|
num: 290,
|
|
gen: 4,
|
|
desc: "Holder's Speed is halved. The Ability Klutz does not ignore this effect.",
|
|
},
|
|
"powerbracer": {
|
|
id: "powerbracer",
|
|
name: "Power Bracer",
|
|
spritenum: 357,
|
|
ignoreKlutz: true,
|
|
fling: {
|
|
basePower: 70,
|
|
},
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(0.5);
|
|
},
|
|
num: 289,
|
|
gen: 4,
|
|
desc: "Holder's Speed is halved. The Ability Klutz does not ignore this effect.",
|
|
},
|
|
"powerherb": {
|
|
id: "powerherb",
|
|
onChargeMove: function (pokemon, target, move) {
|
|
if (pokemon.useItem()) {
|
|
this.debug('power herb - remove charge turn for ' + move.id);
|
|
return false; // skip charge turn
|
|
}
|
|
},
|
|
name: "Power Herb",
|
|
spritenum: 358,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
num: 271,
|
|
gen: 4,
|
|
desc: "Holder's two-turn moves complete in one turn (except Sky Drop). Single use.",
|
|
},
|
|
"powerlens": {
|
|
id: "powerlens",
|
|
name: "Power Lens",
|
|
spritenum: 359,
|
|
ignoreKlutz: true,
|
|
fling: {
|
|
basePower: 70,
|
|
},
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(0.5);
|
|
},
|
|
num: 291,
|
|
gen: 4,
|
|
desc: "Holder's Speed is halved. The Ability Klutz does not ignore this effect.",
|
|
},
|
|
"powerweight": {
|
|
id: "powerweight",
|
|
name: "Power Weight",
|
|
spritenum: 360,
|
|
ignoreKlutz: true,
|
|
fling: {
|
|
basePower: 70,
|
|
},
|
|
onModifySpe: function (spe) {
|
|
return this.chainModify(0.5);
|
|
},
|
|
num: 294,
|
|
gen: 4,
|
|
desc: "Holder's Speed is halved. The Ability Klutz does not ignore this effect.",
|
|
},
|
|
"premierball": {
|
|
id: "premierball",
|
|
name: "Premier Ball",
|
|
spritenum: 363,
|
|
num: 12,
|
|
gen: 3,
|
|
desc: "A rare Poke Ball that has been crafted to commemorate an event.",
|
|
},
|
|
"primariumz": {
|
|
id: "primariumz",
|
|
name: "Primarium Z",
|
|
spritenum: 652,
|
|
onTakeItem: false,
|
|
zMove: "Oceanic Operetta",
|
|
zMoveFrom: "Sparkling Aria",
|
|
zMoveUser: ["Primarina"],
|
|
num: 800,
|
|
gen: 7,
|
|
desc: "If holder is a Primarina with Sparkling Aria, it can use Oceanic Operetta.",
|
|
},
|
|
"protectivepads": {
|
|
id: "protectivepads",
|
|
name: "Protective Pads",
|
|
spritenum: 663,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onModifyMove: function (move) {
|
|
delete move.flags['contact'];
|
|
},
|
|
num: 880,
|
|
gen: 7,
|
|
desc: "Holder's attacks do not make contact with the target.",
|
|
},
|
|
"psychicgem": {
|
|
id: "psychicgem",
|
|
name: "Psychic Gem",
|
|
isUnreleased: true,
|
|
spritenum: 369,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Psychic') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Psychic Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 557,
|
|
gen: 5,
|
|
desc: "Holder's first successful Psychic-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"psychicmemory": {
|
|
id: "psychicmemory",
|
|
name: "Psychic Memory",
|
|
spritenum: 680,
|
|
onMemory: 'Psychic',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Psychic",
|
|
num: 916,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Psychic type.",
|
|
},
|
|
"psychicseed": {
|
|
id: "psychicseed",
|
|
name: "Psychic Seed",
|
|
spritenum: 665,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (this.isTerrain('psychicterrain') && pokemon.useItem()) {
|
|
this.boost({spd: 1});
|
|
}
|
|
},
|
|
num: 882,
|
|
gen: 7,
|
|
desc: "If the terrain is Psychic Terrain, raises holder's Sp. Def by 1 stage. Single use.",
|
|
},
|
|
"psychiumz": {
|
|
id: "psychiumz",
|
|
name: "Psychium Z",
|
|
spritenum: 641,
|
|
onPlate: 'Psychic',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Psychic",
|
|
forcedForme: "Arceus-Psychic",
|
|
num: 786,
|
|
gen: 7,
|
|
desc: "If holder has a Psychic move, this item allows it to use a Psychic Z-Move.",
|
|
},
|
|
"qualotberry": {
|
|
id: "qualotberry",
|
|
name: "Qualot Berry",
|
|
spritenum: 371,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Poison",
|
|
},
|
|
onEat: false,
|
|
num: 171,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"quickball": {
|
|
id: "quickball",
|
|
name: "Quick Ball",
|
|
spritenum: 372,
|
|
num: 15,
|
|
gen: 4,
|
|
desc: "A Poke Ball that provides a better catch rate at the start of a wild encounter.",
|
|
},
|
|
"quickclaw": {
|
|
id: "quickclaw",
|
|
onModifyPriorityPriority: -1,
|
|
onModifyPriority: function (priority, pokemon) {
|
|
if (this.random(5) === 0) {
|
|
this.add('-activate', pokemon, 'item: Quick Claw');
|
|
return Math.round(priority) + 0.1;
|
|
}
|
|
},
|
|
name: "Quick Claw",
|
|
spritenum: 373,
|
|
fling: {
|
|
basePower: 80,
|
|
},
|
|
num: 217,
|
|
gen: 2,
|
|
desc: "Each turn, holder has a 20% chance to move first in its priority bracket.",
|
|
},
|
|
"quickpowder": {
|
|
id: "quickpowder",
|
|
name: "Quick Powder",
|
|
spritenum: 374,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onModifySpe: function (spe, pokemon) {
|
|
if (pokemon.template.species === 'Ditto' && !pokemon.transformed) {
|
|
return this.chainModify(2);
|
|
}
|
|
},
|
|
num: 274,
|
|
gen: 4,
|
|
desc: "If holder is a Ditto that hasn't Transformed, its Speed is doubled.",
|
|
},
|
|
"rabutaberry": {
|
|
id: "rabutaberry",
|
|
name: "Rabuta Berry",
|
|
isUnreleased: true,
|
|
spritenum: 375,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Ghost",
|
|
},
|
|
onEat: false,
|
|
num: 177,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"rarebone": {
|
|
id: "rarebone",
|
|
name: "Rare Bone",
|
|
spritenum: 379,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 106,
|
|
gen: 4,
|
|
desc: "No competitive use other than when used with Fling.",
|
|
},
|
|
"rawstberry": {
|
|
id: "rawstberry",
|
|
name: "Rawst Berry",
|
|
spritenum: 381,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Grass",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'brn') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'brn') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 152,
|
|
gen: 3,
|
|
desc: "Holder is cured if it is burned. Single use.",
|
|
},
|
|
"razorclaw": {
|
|
id: "razorclaw",
|
|
name: "Razor Claw",
|
|
spritenum: 382,
|
|
fling: {
|
|
basePower: 80,
|
|
},
|
|
onModifyCritRatio: function (critRatio) {
|
|
return critRatio + 1;
|
|
},
|
|
num: 326,
|
|
gen: 4,
|
|
desc: "Holder's critical hit ratio is raised by 1 stage.",
|
|
},
|
|
"razorfang": {
|
|
id: "razorfang",
|
|
name: "Razor Fang",
|
|
spritenum: 383,
|
|
fling: {
|
|
basePower: 30,
|
|
volatileStatus: 'flinch',
|
|
},
|
|
onModifyMovePriority: -1,
|
|
onModifyMove: function (move) {
|
|
if (move.category !== "Status") {
|
|
if (!move.secondaries) move.secondaries = [];
|
|
for (let i = 0; i < move.secondaries.length; i++) {
|
|
if (move.secondaries[i].volatileStatus === 'flinch') return;
|
|
}
|
|
move.secondaries.push({
|
|
chance: 10,
|
|
volatileStatus: 'flinch',
|
|
});
|
|
}
|
|
},
|
|
num: 327,
|
|
gen: 4,
|
|
desc: "Holder's attacks without a chance to flinch gain a 10% chance to flinch.",
|
|
},
|
|
"razzberry": {
|
|
id: "razzberry",
|
|
name: "Razz Berry",
|
|
isUnreleased: true,
|
|
spritenum: 384,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Steel",
|
|
},
|
|
onEat: false,
|
|
num: 164,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"redcard": {
|
|
id: "redcard",
|
|
name: "Red Card",
|
|
spritenum: 387,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onAfterMoveSecondary: function (target, source, move) {
|
|
if (source && source !== target && source.hp && target.hp && move && move.category !== 'Status') {
|
|
if (!source.isActive || !this.canSwitch(source.side) || source.forceSwitchFlag || target.forceSwitchFlag) return;
|
|
if (target.useItem(null, source)) { // This order is correct - the item is used up even against a pokemon with Ingrain or that otherwise can't be forced out
|
|
if (this.runEvent('DragOut', source, target, move)) {
|
|
source.forceSwitchFlag = true;
|
|
}
|
|
}
|
|
}
|
|
},
|
|
num: 542,
|
|
gen: 5,
|
|
desc: "If holder survives a hit, attacker is forced to switch to a random ally. Single use.",
|
|
},
|
|
"redorb": {
|
|
id: "redorb",
|
|
name: "Red Orb",
|
|
spritenum: 390,
|
|
onSwitchIn: function (pokemon) {
|
|
if (pokemon.isActive && pokemon.baseTemplate.species === 'Groudon') {
|
|
this.insertQueue({pokemon: pokemon, choice: 'runPrimal'});
|
|
}
|
|
},
|
|
onPrimal: function (pokemon) {
|
|
let template = this.getTemplate('Groudon-Primal');
|
|
pokemon.formeChange(template);
|
|
pokemon.baseTemplate = template;
|
|
pokemon.details = template.species + (pokemon.level === 100 ? '' : ', L' + pokemon.level) + (pokemon.gender === '' ? '' : ', ' + pokemon.gender) + (pokemon.set.shiny ? ', shiny' : '');
|
|
if (pokemon.illusion) {
|
|
pokemon.ability = ''; // Don't allow Illusion to wear off
|
|
this.add('-primal', pokemon.illusion);
|
|
} else {
|
|
this.add('detailschange', pokemon, pokemon.details);
|
|
this.add('-primal', pokemon);
|
|
}
|
|
pokemon.setAbility(template.abilities['0']);
|
|
pokemon.baseAbility = pokemon.ability;
|
|
},
|
|
onTakeItem: function (item, source) {
|
|
if (source.baseTemplate.baseSpecies === 'Groudon') return false;
|
|
return true;
|
|
},
|
|
num: 534,
|
|
gen: 6,
|
|
desc: "If holder is a Groudon, this item triggers its Primal Reversion in battle.",
|
|
},
|
|
"repeatball": {
|
|
id: "repeatball",
|
|
name: "Repeat Ball",
|
|
spritenum: 401,
|
|
num: 9,
|
|
gen: 3,
|
|
desc: "A Poke Ball that works well on Pokemon species that were previously caught.",
|
|
},
|
|
"rindoberry": {
|
|
id: "rindoberry",
|
|
name: "Rindo Berry",
|
|
spritenum: 409,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Grass",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Grass' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 187,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Grass-type attack. Single use.",
|
|
},
|
|
"ringtarget": {
|
|
id: "ringtarget",
|
|
name: "Ring Target",
|
|
spritenum: 410,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onNegateImmunity: false,
|
|
num: 543,
|
|
gen: 5,
|
|
desc: "The holder's type immunities granted solely by its typing are negated.",
|
|
},
|
|
"rockgem": {
|
|
id: "rockgem",
|
|
name: "Rock Gem",
|
|
isUnreleased: true,
|
|
spritenum: 415,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Rock') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Rock Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 559,
|
|
gen: 5,
|
|
desc: "Holder's first successful Rock-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"rockincense": {
|
|
id: "rockincense",
|
|
name: "Rock Incense",
|
|
spritenum: 416,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Rock') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 315,
|
|
gen: 4,
|
|
desc: "Holder's Rock-type attacks have 1.2x power.",
|
|
},
|
|
"rockmemory": {
|
|
id: "rockmemory",
|
|
name: "Rock Memory",
|
|
spritenum: 672,
|
|
onMemory: 'Rock',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Rock",
|
|
num: 908,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Rock type.",
|
|
},
|
|
"rockiumz": {
|
|
id: "rockiumz",
|
|
name: "Rockium Z",
|
|
spritenum: 643,
|
|
onPlate: 'Rock',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Rock",
|
|
forcedForme: "Arceus-Rock",
|
|
num: 788,
|
|
gen: 7,
|
|
desc: "If holder has a Rock move, this item allows it to use a Rock Z-Move.",
|
|
},
|
|
"rockyhelmet": {
|
|
id: "rockyhelmet",
|
|
name: "Rocky Helmet",
|
|
spritenum: 417,
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
onAfterDamageOrder: 2,
|
|
onAfterDamage: function (damage, target, source, move) {
|
|
if (source && source !== target && move && move.flags['contact']) {
|
|
this.damage(source.maxhp / 6, source, target);
|
|
}
|
|
},
|
|
num: 540,
|
|
gen: 5,
|
|
desc: "If holder is hit by a contact move, the attacker loses 1/6 of its max HP.",
|
|
},
|
|
"rootfossil": {
|
|
id: "rootfossil",
|
|
name: "Root Fossil",
|
|
spritenum: 418,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 99,
|
|
gen: 3,
|
|
desc: "Can be revived into Lileep.",
|
|
},
|
|
"roseincense": {
|
|
id: "roseincense",
|
|
name: "Rose Incense",
|
|
spritenum: 419,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Grass') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 318,
|
|
gen: 4,
|
|
desc: "Holder's Grass-type attacks have 1.2x power.",
|
|
},
|
|
"roseliberry": {
|
|
id: "roseliberry",
|
|
name: "Roseli Berry",
|
|
spritenum: 603,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Fairy",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Fairy' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 686,
|
|
gen: 6,
|
|
desc: "Halves damage taken from a supereffective Fairy-type attack. Single use.",
|
|
},
|
|
"rowapberry": {
|
|
id: "rowapberry",
|
|
name: "Rowap Berry",
|
|
isUnreleased: true,
|
|
spritenum: 420,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Dark",
|
|
},
|
|
onAfterDamage: function (damage, target, source, move) {
|
|
if (source && source !== target && move && move.category === 'Special') {
|
|
if (target.eatItem()) {
|
|
this.damage(source.maxhp / 8, source, target);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 212,
|
|
gen: 4,
|
|
desc: "If holder is hit by a special move, attacker loses 1/8 of its max HP. Single use.",
|
|
},
|
|
"sablenite": {
|
|
id: "sablenite",
|
|
name: "Sablenite",
|
|
spritenum: 614,
|
|
megaStone: "Sableye-Mega",
|
|
megaEvolves: "Sableye",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 754,
|
|
gen: 6,
|
|
desc: "If holder is a Sableye, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"safariball": {
|
|
id: "safariball",
|
|
name: "Safari Ball",
|
|
spritenum: 425,
|
|
num: 5,
|
|
gen: 1,
|
|
desc: "A special Poke Ball that is used only in the Safari Zone and Great Marsh.",
|
|
},
|
|
"safetygoggles": {
|
|
id: "safetygoggles",
|
|
name: "Safety Goggles",
|
|
spritenum: 604,
|
|
fling: {
|
|
basePower: 80,
|
|
},
|
|
onImmunity: function (type, pokemon) {
|
|
if (type === 'sandstorm' || type === 'hail' || type === 'powder') return false;
|
|
},
|
|
onTryHit: function (pokemon, source, move) {
|
|
if (move.flags['powder'] && pokemon !== source && this.getImmunity('powder', pokemon)) {
|
|
this.add('-activate', pokemon, 'item: Safety Goggles', move.name);
|
|
return null;
|
|
}
|
|
},
|
|
num: 650,
|
|
gen: 6,
|
|
desc: "Holder is immune to powder moves and damage from Sandstorm or Hail.",
|
|
},
|
|
"salacberry": {
|
|
id: "salacberry",
|
|
name: "Salac Berry",
|
|
spritenum: 426,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Fighting",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.boost({spe:1});
|
|
},
|
|
num: 203,
|
|
gen: 3,
|
|
desc: "Raises holder's Speed by 1 stage when at 1/4 max HP or less. Single use.",
|
|
},
|
|
"salamencite": {
|
|
id: "salamencite",
|
|
name: "Salamencite",
|
|
spritenum: 627,
|
|
megaStone: "Salamence-Mega",
|
|
megaEvolves: "Salamence",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 769,
|
|
gen: 6,
|
|
desc: "If holder is a Salamence, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"sceptilite": {
|
|
id: "sceptilite",
|
|
name: "Sceptilite",
|
|
spritenum: 613,
|
|
megaStone: "Sceptile-Mega",
|
|
megaEvolves: "Sceptile",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 753,
|
|
gen: 6,
|
|
desc: "If holder is a Sceptile, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"scizorite": {
|
|
id: "scizorite",
|
|
name: "Scizorite",
|
|
spritenum: 605,
|
|
megaStone: "Scizor-Mega",
|
|
megaEvolves: "Scizor",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 670,
|
|
gen: 6,
|
|
desc: "If holder is a Scizor, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"scopelens": {
|
|
id: "scopelens",
|
|
name: "Scope Lens",
|
|
spritenum: 429,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onModifyCritRatio: function (critRatio) {
|
|
return critRatio + 1;
|
|
},
|
|
num: 232,
|
|
gen: 2,
|
|
desc: "Holder's critical hit ratio is raised by 1 stage.",
|
|
},
|
|
"seaincense": {
|
|
id: "seaincense",
|
|
name: "Sea Incense",
|
|
spritenum: 430,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Water') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 254,
|
|
gen: 3,
|
|
desc: "Holder's Water-type attacks have 1.2x power.",
|
|
},
|
|
"sharpbeak": {
|
|
id: "sharpbeak",
|
|
name: "Sharp Beak",
|
|
spritenum: 436,
|
|
fling: {
|
|
basePower: 50,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && move.type === 'Flying') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 244,
|
|
gen: 2,
|
|
desc: "Holder's Flying-type attacks have 1.2x power.",
|
|
},
|
|
"sharpedonite": {
|
|
id: "sharpedonite",
|
|
name: "Sharpedonite",
|
|
spritenum: 619,
|
|
megaStone: "Sharpedo-Mega",
|
|
megaEvolves: "Sharpedo",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 759,
|
|
gen: 6,
|
|
desc: "If holder is a Sharpedo, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"shedshell": {
|
|
id: "shedshell",
|
|
name: "Shed Shell",
|
|
spritenum: 437,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onTrapPokemonPriority: -10,
|
|
onTrapPokemon: function (pokemon) {
|
|
pokemon.trapped = pokemon.maybeTrapped = false;
|
|
},
|
|
num: 295,
|
|
gen: 4,
|
|
desc: "Holder may switch out even when trapped by another Pokemon, or by Ingrain.",
|
|
},
|
|
"shellbell": {
|
|
id: "shellbell",
|
|
name: "Shell Bell",
|
|
spritenum: 438,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onAfterMoveSecondarySelfPriority: -1,
|
|
onAfterMoveSecondarySelf: function (pokemon, target, move) {
|
|
if (move.category !== 'Status') {
|
|
this.heal(pokemon.lastDamage / 8, pokemon);
|
|
}
|
|
},
|
|
num: 253,
|
|
gen: 3,
|
|
desc: "After an attack, holder gains 1/8 of the damage in HP dealt to other Pokemon.",
|
|
},
|
|
"shockdrive": {
|
|
id: "shockdrive",
|
|
name: "Shock Drive",
|
|
spritenum: 442,
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 649) || pokemon.baseTemplate.num === 649) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
onDrive: 'Electric',
|
|
forcedForme: "Genesect-Shock",
|
|
num: 117,
|
|
gen: 5,
|
|
desc: "Holder's Techno Blast is Electric type.",
|
|
},
|
|
"shucaberry": {
|
|
id: "shucaberry",
|
|
name: "Shuca Berry",
|
|
spritenum: 443,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Ground",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Ground' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 191,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Ground-type attack. Single use.",
|
|
},
|
|
"silkscarf": {
|
|
id: "silkscarf",
|
|
name: "Silk Scarf",
|
|
spritenum: 444,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Normal') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 251,
|
|
gen: 3,
|
|
desc: "Holder's Normal-type attacks have 1.2x power.",
|
|
},
|
|
"silverpowder": {
|
|
id: "silverpowder",
|
|
name: "SilverPowder",
|
|
spritenum: 447,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Bug') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 222,
|
|
gen: 2,
|
|
desc: "Holder's Bug-type attacks have 1.2x power.",
|
|
},
|
|
"sitrusberry": {
|
|
id: "sitrusberry",
|
|
name: "Sitrus Berry",
|
|
spritenum: 448,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Psychic",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 2) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(pokemon.maxhp / 4);
|
|
},
|
|
num: 158,
|
|
gen: 3,
|
|
desc: "Restores 1/4 max HP when at 1/2 max HP or less. Single use.",
|
|
},
|
|
"skullfossil": {
|
|
id: "skullfossil",
|
|
name: "Skull Fossil",
|
|
spritenum: 449,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
num: 105,
|
|
gen: 4,
|
|
desc: "Can be revived into Cranidos.",
|
|
},
|
|
"skyplate": {
|
|
id: "skyplate",
|
|
name: "Sky Plate",
|
|
spritenum: 450,
|
|
onPlate: 'Flying',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Flying') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Flying",
|
|
num: 306,
|
|
gen: 4,
|
|
desc: "Holder's Flying-type attacks have 1.2x power. Judgment is Flying type.",
|
|
},
|
|
"slowbronite": {
|
|
id: "slowbronite",
|
|
name: "Slowbronite",
|
|
spritenum: 620,
|
|
megaStone: "Slowbro-Mega",
|
|
megaEvolves: "Slowbro",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 760,
|
|
gen: 6,
|
|
desc: "If holder is a Slowbro, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"smoothrock": {
|
|
id: "smoothrock",
|
|
name: "Smooth Rock",
|
|
spritenum: 453,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
num: 283,
|
|
gen: 4,
|
|
desc: "Holder's use of Sandstorm lasts 8 turns instead of 5.",
|
|
},
|
|
"snorliumz": {
|
|
id: "snorliumz",
|
|
name: "Snorlium Z",
|
|
spritenum: 656,
|
|
onTakeItem: false,
|
|
zMove: "Pulverizing Pancake",
|
|
zMoveFrom: "Giga Impact",
|
|
zMoveUser: ["Snorlax"],
|
|
num: 804,
|
|
gen: 7,
|
|
desc: "If holder is a Snorlax with Giga Impact, it can use Pulverizing Pancake.",
|
|
},
|
|
"snowball": {
|
|
id: "snowball",
|
|
name: "Snowball",
|
|
spritenum: 606,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onAfterDamage: function (damage, target, source, move) {
|
|
if (move.type === 'Ice' && target.useItem()) {
|
|
this.boost({atk: 1});
|
|
}
|
|
},
|
|
num: 649,
|
|
gen: 6,
|
|
desc: "Raises holder's Attack by 1 if hit by an Ice-type attack. Single use.",
|
|
},
|
|
"softsand": {
|
|
id: "softsand",
|
|
name: "Soft Sand",
|
|
spritenum: 456,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Ground') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 237,
|
|
gen: 2,
|
|
desc: "Holder's Ground-type attacks have 1.2x power.",
|
|
},
|
|
"souldew": {
|
|
id: "souldew",
|
|
name: "Soul Dew",
|
|
spritenum: 459,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move && (user.baseTemplate.num === 380 || user.baseTemplate.num === 381) && (move.type === 'Psychic' || move.type === 'Dragon')) {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 225,
|
|
gen: 3,
|
|
desc: "If holder's a Latias/Latios, its Dragon- and Psychic-type moves have 1.2x power.",
|
|
},
|
|
"spelltag": {
|
|
id: "spelltag",
|
|
name: "Spell Tag",
|
|
spritenum: 461,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Ghost') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 247,
|
|
gen: 2,
|
|
desc: "Holder's Ghost-type attacks have 1.2x power.",
|
|
},
|
|
"spelonberry": {
|
|
id: "spelonberry",
|
|
name: "Spelon Berry",
|
|
isUnreleased: true,
|
|
spritenum: 462,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Dark",
|
|
},
|
|
onEat: false,
|
|
num: 179,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"splashplate": {
|
|
id: "splashplate",
|
|
name: "Splash Plate",
|
|
spritenum: 463,
|
|
onPlate: 'Water',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Water') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Water",
|
|
num: 299,
|
|
gen: 4,
|
|
desc: "Holder's Water-type attacks have 1.2x power. Judgment is Water type.",
|
|
},
|
|
"spookyplate": {
|
|
id: "spookyplate",
|
|
name: "Spooky Plate",
|
|
spritenum: 464,
|
|
onPlate: 'Ghost',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Ghost') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Ghost",
|
|
num: 310,
|
|
gen: 4,
|
|
desc: "Holder's Ghost-type attacks have 1.2x power. Judgment is Ghost type.",
|
|
},
|
|
"sportball": {
|
|
id: "sportball",
|
|
name: "Sport Ball",
|
|
spritenum: 465,
|
|
num: 499,
|
|
gen: 2,
|
|
desc: "A special Poke Ball for the Bug-Catching Contest.",
|
|
},
|
|
"starfberry": {
|
|
id: "starfberry",
|
|
name: "Starf Berry",
|
|
spritenum: 472,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Psychic",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
let stats = [];
|
|
for (let stat in pokemon.boosts) {
|
|
if (stat !== 'accuracy' && stat !== 'evasion' && pokemon.boosts[stat] < 6) {
|
|
stats.push(stat);
|
|
}
|
|
}
|
|
if (stats.length) {
|
|
let randomStat = stats[this.random(stats.length)];
|
|
let boost = {};
|
|
boost[randomStat] = 2;
|
|
this.boost(boost);
|
|
}
|
|
},
|
|
num: 207,
|
|
gen: 3,
|
|
desc: "Raises a random stat by 2 when at 1/4 max HP or less (not acc/eva). Single use.",
|
|
},
|
|
"steelixite": {
|
|
id: "steelixite",
|
|
name: "Steelixite",
|
|
spritenum: 621,
|
|
megaStone: "Steelix-Mega",
|
|
megaEvolves: "Steelix",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 761,
|
|
gen: 6,
|
|
desc: "If holder is a Steelix, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"steelgem": {
|
|
id: "steelgem",
|
|
name: "Steel Gem",
|
|
isUnreleased: true,
|
|
spritenum: 473,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status') return;
|
|
if (move.type === 'Steel') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Steel Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 563,
|
|
gen: 5,
|
|
desc: "Holder's first successful Steel-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"steelmemory": {
|
|
id: "steelmemory",
|
|
name: "Steel Memory",
|
|
spritenum: 675,
|
|
onMemory: 'Steel',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Steel",
|
|
num: 911,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Steel type.",
|
|
},
|
|
"steeliumz": {
|
|
id: "steeliumz",
|
|
name: "Steelium Z",
|
|
spritenum: 647,
|
|
onPlate: 'Steel',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Steel",
|
|
forcedForme: "Arceus-Steel",
|
|
num: 792,
|
|
gen: 7,
|
|
desc: "If holder has a Steel move, this item allows it to use a Steel Z-Move.",
|
|
},
|
|
"stick": {
|
|
id: "stick",
|
|
name: "Stick",
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
spritenum: 475,
|
|
onModifyCritRatio: function (critRatio, user) {
|
|
if (user.baseTemplate.species === 'Farfetch\'d') {
|
|
return critRatio + 2;
|
|
}
|
|
},
|
|
num: 259,
|
|
gen: 2,
|
|
desc: "If holder is a Farfetch'd, its critical hit ratio is raised by 2 stages.",
|
|
},
|
|
"stickybarb": {
|
|
id: "stickybarb",
|
|
name: "Sticky Barb",
|
|
spritenum: 476,
|
|
fling: {
|
|
basePower: 80,
|
|
},
|
|
onResidualOrder: 26,
|
|
onResidualSubOrder: 2,
|
|
onResidual: function (pokemon) {
|
|
this.damage(pokemon.maxhp / 8);
|
|
},
|
|
onHit: function (target, source, move) {
|
|
if (source && source !== target && !source.item && move && move.flags['contact']) {
|
|
let barb = target.takeItem();
|
|
source.setItem(barb);
|
|
// no message for Sticky Barb changing hands
|
|
}
|
|
},
|
|
num: 288,
|
|
gen: 4,
|
|
desc: "Each turn, holder loses 1/8 max HP. An attacker making contact can receive it.",
|
|
},
|
|
"stoneplate": {
|
|
id: "stoneplate",
|
|
name: "Stone Plate",
|
|
spritenum: 477,
|
|
onPlate: 'Rock',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Rock') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Rock",
|
|
num: 309,
|
|
gen: 4,
|
|
desc: "Holder's Rock-type attacks have 1.2x power. Judgment is Rock type.",
|
|
},
|
|
"swampertite": {
|
|
id: "swampertite",
|
|
name: "Swampertite",
|
|
spritenum: 612,
|
|
megaStone: "Swampert-Mega",
|
|
megaEvolves: "Swampert",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 752,
|
|
gen: 6,
|
|
desc: "If holder is a Swampert, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"tamatoberry": {
|
|
id: "tamatoberry",
|
|
name: "Tamato Berry",
|
|
spritenum: 486,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Psychic",
|
|
},
|
|
onEat: false,
|
|
num: 174,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"tangaberry": {
|
|
id: "tangaberry",
|
|
name: "Tanga Berry",
|
|
spritenum: 487,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Bug",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Bug' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 194,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Bug-type attack. Single use.",
|
|
},
|
|
"tapuniumz": {
|
|
id: "tapuniumz",
|
|
name: "Tapunium Z",
|
|
spritenum: 653,
|
|
onTakeItem: false,
|
|
zMove: "Guardian of Alola",
|
|
zMoveFrom: "Nature's Madness",
|
|
zMoveUser: ["Tapu Koko", "Tapu Lele", "Tapu Bulu", "Tapu Fini"],
|
|
num: 801,
|
|
gen: 7,
|
|
desc: "If holder is a Tapu with Nature's Madness, it can use Guardian of Alola.",
|
|
},
|
|
"terrainextender": {
|
|
id: "terrainextender",
|
|
name: "Terrain Extender",
|
|
spritenum: 662,
|
|
fling: {
|
|
basePower: 60,
|
|
},
|
|
num: 879,
|
|
gen: 7,
|
|
desc: "Holder's use of Electric/Grassy/Misty/Psychic Terrain lasts 8 turns instead of 5.",
|
|
},
|
|
"thickclub": {
|
|
id: "thickclub",
|
|
name: "Thick Club",
|
|
spritenum: 491,
|
|
fling: {
|
|
basePower: 90,
|
|
},
|
|
onModifyAtkPriority: 1,
|
|
onModifyAtk: function (atk, pokemon) {
|
|
if (pokemon.baseTemplate.baseSpecies === 'Cubone' || pokemon.baseTemplate.baseSpecies === 'Marowak') {
|
|
return this.chainModify(2);
|
|
}
|
|
},
|
|
num: 258,
|
|
gen: 2,
|
|
desc: "If holder is a Cubone or a Marowak, its Attack is doubled.",
|
|
},
|
|
"timerball": {
|
|
id: "timerball",
|
|
name: "Timer Ball",
|
|
spritenum: 494,
|
|
num: 10,
|
|
gen: 3,
|
|
desc: "A Poke Ball that becomes better the more turns there are in a battle.",
|
|
},
|
|
"toxicorb": {
|
|
id: "toxicorb",
|
|
name: "Toxic Orb",
|
|
spritenum: 515,
|
|
fling: {
|
|
basePower: 30,
|
|
status: 'tox',
|
|
},
|
|
onResidualOrder: 26,
|
|
onResidualSubOrder: 2,
|
|
onResidual: function (pokemon) {
|
|
pokemon.trySetStatus('tox');
|
|
},
|
|
num: 272,
|
|
gen: 4,
|
|
desc: "At the end of every turn, this item attempts to badly poison the holder.",
|
|
},
|
|
"toxicplate": {
|
|
id: "toxicplate",
|
|
name: "Toxic Plate",
|
|
spritenum: 516,
|
|
onPlate: 'Poison',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Poison') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Poison",
|
|
num: 304,
|
|
gen: 4,
|
|
desc: "Holder's Poison-type attacks have 1.2x power. Judgment is Poison type.",
|
|
},
|
|
"twistedspoon": {
|
|
id: "twistedspoon",
|
|
name: "Twisted Spoon",
|
|
spritenum: 520,
|
|
fling: {
|
|
basePower: 30,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Psychic') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 248,
|
|
gen: 2,
|
|
desc: "Holder's Psychic-type attacks have 1.2x power.",
|
|
},
|
|
"tyranitarite": {
|
|
id: "tyranitarite",
|
|
name: "Tyranitarite",
|
|
spritenum: 607,
|
|
megaStone: "Tyranitar-Mega",
|
|
megaEvolves: "Tyranitar",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 669,
|
|
gen: 6,
|
|
desc: "If holder is a Tyranitar, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"ultraball": {
|
|
id: "ultraball",
|
|
name: "Ultra Ball",
|
|
spritenum: 521,
|
|
num: 2,
|
|
gen: 1,
|
|
desc: "An ultra-performance Ball that provides a higher catch rate than a Great Ball.",
|
|
},
|
|
"venusaurite": {
|
|
id: "venusaurite",
|
|
name: "Venusaurite",
|
|
spritenum: 608,
|
|
megaStone: "Venusaur-Mega",
|
|
megaEvolves: "Venusaur",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: 659,
|
|
gen: 6,
|
|
desc: "If holder is a Venusaur, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
"wacanberry": {
|
|
id: "wacanberry",
|
|
name: "Wacan Berry",
|
|
spritenum: 526,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Electric",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Electric' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 186,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Electric-type attack. Single use.",
|
|
},
|
|
"watergem": {
|
|
id: "watergem",
|
|
name: "Water Gem",
|
|
isUnreleased: true,
|
|
spritenum: 528,
|
|
isGem: true,
|
|
onSourceTryPrimaryHit: function (target, source, move) {
|
|
if (target === source || move.category === 'Status' || move.id in {firepledge:1, grasspledge:1, waterpledge:1}) return;
|
|
if (move.type === 'Water') {
|
|
if (source.useItem()) {
|
|
this.add('-enditem', source, 'Water Gem', '[from] gem', '[move] ' + move.name);
|
|
source.addVolatile('gem');
|
|
}
|
|
}
|
|
},
|
|
num: 549,
|
|
gen: 5,
|
|
desc: "Holder's first successful Water-type attack will have 1.3x power. Single use.",
|
|
},
|
|
"watermemory": {
|
|
id: "watermemory",
|
|
name: "Water Memory",
|
|
spritenum: 677,
|
|
onMemory: 'Water',
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 773) || pokemon.baseTemplate.num === 773) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Silvally-Water",
|
|
num: 913,
|
|
gen: 7,
|
|
desc: "Holder's Multi-Attack is Water type.",
|
|
},
|
|
"wateriumz": {
|
|
id: "wateriumz",
|
|
name: "Waterium Z",
|
|
spritenum: 633,
|
|
onPlate: 'Water',
|
|
onTakeItem: false,
|
|
zMove: true,
|
|
zMoveType: "Water",
|
|
forcedForme: "Arceus-Water",
|
|
num: 778,
|
|
gen: 7,
|
|
desc: "If holder has a Water move, this item allows it to use a Water Z-Move.",
|
|
},
|
|
"watmelberry": {
|
|
id: "watmelberry",
|
|
name: "Watmel Berry",
|
|
isUnreleased: true,
|
|
spritenum: 530,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 100,
|
|
type: "Fire",
|
|
},
|
|
onEat: false,
|
|
num: 181,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"waveincense": {
|
|
id: "waveincense",
|
|
name: "Wave Incense",
|
|
spritenum: 531,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Water') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
num: 317,
|
|
gen: 4,
|
|
desc: "Holder's Water-type attacks have 1.2x power.",
|
|
},
|
|
"weaknesspolicy": {
|
|
id: "weaknesspolicy",
|
|
name: "Weakness Policy",
|
|
spritenum: 609,
|
|
fling: {
|
|
basePower: 80,
|
|
},
|
|
onHit: function (target, source, move) {
|
|
if (target.hp && move.category !== 'Status' && !move.damage && !move.damageCallback && move.typeMod > 0 && target.useItem()) {
|
|
this.boost({atk: 2, spa: 2});
|
|
}
|
|
},
|
|
num: 639,
|
|
gen: 6,
|
|
desc: "If holder is hit super effectively, raises Attack, Sp. Atk by 2 stages. Single use.",
|
|
},
|
|
"wepearberry": {
|
|
id: "wepearberry",
|
|
name: "Wepear Berry",
|
|
isUnreleased: true,
|
|
spritenum: 533,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 90,
|
|
type: "Electric",
|
|
},
|
|
onEat: false,
|
|
num: 167,
|
|
gen: 3,
|
|
desc: "Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.",
|
|
},
|
|
"whiteherb": {
|
|
id: "whiteherb",
|
|
name: "White Herb",
|
|
spritenum: 535,
|
|
fling: {
|
|
basePower: 10,
|
|
effect: function (pokemon) {
|
|
let activate = false;
|
|
let boosts = {};
|
|
for (let i in pokemon.boosts) {
|
|
if (pokemon.boosts[i] < 0) {
|
|
activate = true;
|
|
boosts[i] = 0;
|
|
}
|
|
}
|
|
if (activate) {
|
|
pokemon.setBoost(boosts);
|
|
this.add('-clearnegativeboost', pokemon, '[silent]');
|
|
}
|
|
},
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
let activate = false;
|
|
let boosts = {};
|
|
for (let i in pokemon.boosts) {
|
|
if (pokemon.boosts[i] < 0) {
|
|
activate = true;
|
|
boosts[i] = 0;
|
|
}
|
|
}
|
|
if (activate && pokemon.useItem()) {
|
|
pokemon.setBoost(boosts);
|
|
this.add('-clearnegativeboost', pokemon, '[silent]');
|
|
}
|
|
},
|
|
num: 214,
|
|
gen: 3,
|
|
desc: "Restores all lowered stat stages to 0 when one is less than 0. Single use.",
|
|
},
|
|
"widelens": {
|
|
id: "widelens",
|
|
name: "Wide Lens",
|
|
spritenum: 537,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onSourceModifyAccuracy: function (accuracy) {
|
|
if (typeof accuracy === 'number') {
|
|
return accuracy * 1.1;
|
|
}
|
|
},
|
|
num: 265,
|
|
gen: 4,
|
|
desc: "The accuracy of attacks by the holder is 1.1x.",
|
|
},
|
|
"wikiberry": {
|
|
id: "wikiberry",
|
|
name: "Wiki Berry",
|
|
spritenum: 538,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Rock",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.hasAbility('gluttony'))) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(pokemon.maxhp / 2);
|
|
if (pokemon.getNature().minus === 'spa') {
|
|
pokemon.addVolatile('confusion');
|
|
}
|
|
},
|
|
num: 160,
|
|
gen: 3,
|
|
desc: "Restores 1/2 max HP at 1/4 max HP or less; confuses if -SpA Nature. Single use.",
|
|
},
|
|
"wiseglasses": {
|
|
id: "wiseglasses",
|
|
name: "Wise Glasses",
|
|
spritenum: 539,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.category === 'Special') {
|
|
return this.chainModify([0x1199, 0x1000]);
|
|
}
|
|
},
|
|
num: 267,
|
|
gen: 4,
|
|
desc: "Holder's special attacks have 1.1x power.",
|
|
},
|
|
"yacheberry": {
|
|
id: "yacheberry",
|
|
name: "Yache Berry",
|
|
spritenum: 567,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Ice",
|
|
},
|
|
onSourceModifyDamage: function (damage, source, target, move) {
|
|
if (move.type === 'Ice' && move.typeMod > 0 && (!target.volatiles['substitute'] || move.flags['authentic'] || (move.infiltrates && this.gen >= 6))) {
|
|
if (target.eatItem()) {
|
|
this.debug('-50% reduction');
|
|
this.add('-enditem', target, this.effect, '[weaken]');
|
|
return this.chainModify(0.5);
|
|
}
|
|
}
|
|
},
|
|
onEat: function () { },
|
|
num: 188,
|
|
gen: 4,
|
|
desc: "Halves damage taken from a supereffective Ice-type attack. Single use.",
|
|
},
|
|
"zapplate": {
|
|
id: "zapplate",
|
|
name: "Zap Plate",
|
|
spritenum: 572,
|
|
onPlate: 'Electric',
|
|
onBasePowerPriority: 6,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Electric') {
|
|
return this.chainModify([0x1333, 0x1000]);
|
|
}
|
|
},
|
|
onTakeItem: function (item, pokemon, source) {
|
|
if ((source && source.baseTemplate.num === 493) || pokemon.baseTemplate.num === 493) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
forcedForme: "Arceus-Electric",
|
|
num: 300,
|
|
gen: 4,
|
|
desc: "Holder's Electric-type attacks have 1.2x power. Judgment is Electric type.",
|
|
},
|
|
"zoomlens": {
|
|
id: "zoomlens",
|
|
name: "Zoom Lens",
|
|
spritenum: 574,
|
|
fling: {
|
|
basePower: 10,
|
|
},
|
|
onSourceModifyAccuracy: function (accuracy, target) {
|
|
if (typeof accuracy === 'number' && !this.willMove(target)) {
|
|
this.debug('Zoom Lens boosting accuracy');
|
|
return accuracy * 1.2;
|
|
}
|
|
},
|
|
num: 276,
|
|
gen: 4,
|
|
desc: "The accuracy of attacks by the holder is 1.2x if it moves after its target.",
|
|
},
|
|
|
|
// Gen 2 items
|
|
|
|
"berserkgene": {
|
|
id: "berserkgene",
|
|
name: "Berserk Gene",
|
|
spritenum: 388,
|
|
onUpdate: function (pokemon) {
|
|
this.boost({atk: 2});
|
|
pokemon.addVolatile('confusion');
|
|
pokemon.setItem('');
|
|
},
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) On switch-in, raises holder's Attack by 2 and confuses it. Single use.",
|
|
},
|
|
"berry": {
|
|
id: "berry",
|
|
name: "Berry",
|
|
spritenum: 319,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Poison",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 2) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(10);
|
|
},
|
|
num: 155,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Restores 10 HP when at 1/2 max HP or less. Single use.",
|
|
},
|
|
"bitterberry": {
|
|
id: "bitterberry",
|
|
name: "Bitter Berry",
|
|
spritenum: 334,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Ground",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.volatiles['confusion']) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
pokemon.removeVolatile('confusion');
|
|
},
|
|
num: 156,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder is cured if it is confused. Single use.",
|
|
},
|
|
"burntberry": {
|
|
id: "burntberry",
|
|
name: "Burnt Berry",
|
|
spritenum: 13,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Ice",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'frz') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'frz') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 153,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder is cured if it is frozen. Single use.",
|
|
},
|
|
"dragonscale": {
|
|
id: "dragonscale",
|
|
name: "Dragon Scale",
|
|
spritenum: 108,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Dragon') {
|
|
return basePower * 1.1;
|
|
}
|
|
},
|
|
num: 250,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder's Dragon-type attacks have 1.1x power. Evolves Seadra (trade).",
|
|
},
|
|
"goldberry": {
|
|
id: "goldberry",
|
|
name: "Gold Berry",
|
|
spritenum: 448,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Psychic",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.hp <= pokemon.maxhp / 2) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onTryEatItem: function (item, pokemon) {
|
|
if (!this.runEvent('TryHeal', pokemon)) return false;
|
|
},
|
|
onEat: function (pokemon) {
|
|
this.heal(30);
|
|
},
|
|
num: 158,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Restores 30 HP when at 1/2 max HP or less. Single use.",
|
|
},
|
|
"iceberry": {
|
|
id: "iceberry",
|
|
name: "Ice Berry",
|
|
spritenum: 381,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Grass",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'brn') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'brn') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 152,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder is cured if it is burned. Single use.",
|
|
},
|
|
"mintberry": {
|
|
id: "mintberry",
|
|
name: "Mint Berry",
|
|
spritenum: 65,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Water",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'slp') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'slp') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 150,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder wakes up if it is asleep. Single use.",
|
|
},
|
|
"miracleberry": {
|
|
id: "miracleberry",
|
|
name: "Miracle Berry",
|
|
spritenum: 262,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Flying",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status || pokemon.volatiles['confusion']) {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
pokemon.cureStatus();
|
|
pokemon.removeVolatile('confusion');
|
|
},
|
|
num: 157,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder cures itself if it is confused or has a status condition. Single use.",
|
|
},
|
|
"mysteryberry": {
|
|
id: "mysteryberry",
|
|
name: "Mystery Berry",
|
|
spritenum: 244,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Fighting",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
let move = pokemon.getMoveData(pokemon.lastMove);
|
|
if (move && move.pp === 0) {
|
|
pokemon.addVolatile('leppaberry');
|
|
pokemon.volatiles['leppaberry'].move = move;
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
let move;
|
|
if (pokemon.volatiles['leppaberry']) {
|
|
move = pokemon.volatiles['leppaberry'].move;
|
|
pokemon.removeVolatile('leppaberry');
|
|
} else {
|
|
let pp = 99;
|
|
for (let moveid in pokemon.moveset) {
|
|
if (pokemon.moveset[moveid].pp < pp) {
|
|
move = pokemon.moveset[moveid];
|
|
pp = move.pp;
|
|
}
|
|
}
|
|
}
|
|
move.pp += 5;
|
|
if (move.pp > move.maxpp) move.pp = move.maxpp;
|
|
this.add('-activate', pokemon, 'item: Leppa Berry', move.move);
|
|
if (pokemon.item !== 'leppaberry') {
|
|
let foeActive = pokemon.side.foe.active;
|
|
let foeIsStale = false;
|
|
for (let i = 0; i < 1; i++) {
|
|
if (foeActive.isStale >= 2) {
|
|
foeIsStale = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!foeIsStale) return;
|
|
}
|
|
pokemon.isStale = 2;
|
|
pokemon.isStaleSource = 'useleppa';
|
|
},
|
|
num: 154,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Restores 5 PP to the first of the holder's moves to reach 0 PP. Single use.",
|
|
},
|
|
"pinkbow": {
|
|
id: "pinkbow",
|
|
name: "Pink Bow",
|
|
spritenum: 444,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Normal') {
|
|
return basePower * 1.1;
|
|
}
|
|
},
|
|
num: 251,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder's Normal-type attacks have 1.1x power.",
|
|
},
|
|
"polkadotbow": {
|
|
id: "polkadotbow",
|
|
name: "Polkadot Bow",
|
|
spritenum: 444,
|
|
onBasePower: function (basePower, user, target, move) {
|
|
if (move.type === 'Normal') {
|
|
return basePower * 1.1;
|
|
}
|
|
},
|
|
num: 251,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder's Normal-type attacks have 1.1x power.",
|
|
},
|
|
"przcureberry": {
|
|
id: "przcureberry",
|
|
name: "PRZ Cure Berry",
|
|
spritenum: 63,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Fire",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'par') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'par') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 149,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder cures itself if it is paralyzed. Single use.",
|
|
},
|
|
"psncureberry": {
|
|
id: "psncureberry",
|
|
name: "PSN Cure Berry",
|
|
spritenum: 333,
|
|
isBerry: true,
|
|
naturalGift: {
|
|
basePower: 80,
|
|
type: "Electric",
|
|
},
|
|
onUpdate: function (pokemon) {
|
|
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
|
|
pokemon.eatItem();
|
|
}
|
|
},
|
|
onEat: function (pokemon) {
|
|
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
|
|
pokemon.cureStatus();
|
|
}
|
|
},
|
|
num: 151,
|
|
gen: 2,
|
|
isNonstandard: 'gen2',
|
|
desc: "(Gen 2) Holder is cured if it is poisoned. Single use.",
|
|
},
|
|
|
|
// CAP items
|
|
|
|
"crucibellite": {
|
|
id: "crucibellite",
|
|
name: "Crucibellite",
|
|
spritenum: 577,
|
|
megaStone: "Crucibelle-Mega",
|
|
megaEvolves: "Crucibelle",
|
|
onTakeItem: function (item, source) {
|
|
if (item.megaEvolves === source.baseTemplate.baseSpecies) return false;
|
|
return true;
|
|
},
|
|
num: -1,
|
|
gen: 6,
|
|
isNonstandard: true,
|
|
desc: "If holder is a Crucibelle, this item allows it to Mega Evolve in battle.",
|
|
},
|
|
};
|