Pokemon_server / data /items.ts
Jofthomas's picture
Jofthomas HF staff
Upload 4781 files
5c2ed06 verified
export const Items: import('../sim/dex-items').ItemDataTable = {
abilityshield: {
name: "Ability Shield",
spritenum: 746,
fling: {
basePower: 30,
},
ignoreKlutz: true,
// Neutralizing Gas protection implemented in Pokemon.ignoringAbility() within sim/pokemon.ts
// and in Neutralizing Gas itself within data/abilities.ts
onSetAbility(ability, target, source, effect) {
if (effect && effect.effectType === 'Ability' && effect.name !== 'Trace') {
this.add('-ability', source, effect);
}
this.add('-block', target, 'item: Ability Shield');
return null;
},
// Mold Breaker protection implemented in Battle.suppressingAbility() within sim/battle.ts
num: 1881,
gen: 9,
},
abomasite: {
name: "Abomasite",
spritenum: 575,
megaStone: "Abomasnow-Mega",
megaEvolves: "Abomasnow",
itemUser: ["Abomasnow"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 674,
gen: 6,
isNonstandard: "Past",
},
absolite: {
name: "Absolite",
spritenum: 576,
megaStone: "Absol-Mega",
megaEvolves: "Absol",
itemUser: ["Absol"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 677,
gen: 6,
isNonstandard: "Past",
},
absorbbulb: {
name: "Absorb Bulb",
spritenum: 2,
fling: {
basePower: 30,
},
onDamagingHit(damage, target, source, move) {
if (move.type === 'Water') {
target.useItem();
}
},
boosts: {
spa: 1,
},
num: 545,
gen: 5,
},
adamantcrystal: {
name: "Adamant Crystal",
spritenum: 741,
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.num === 483 && (move.type === 'Steel' || move.type === 'Dragon')) {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if (source?.baseSpecies.num === 483 || pokemon.baseSpecies.num === 483) {
return false;
}
return true;
},
forcedForme: "Dialga-Origin",
itemUser: ["Dialga-Origin"],
num: 1777,
gen: 8,
},
adamantorb: {
name: "Adamant Orb",
spritenum: 4,
fling: {
basePower: 60,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.num === 483 && (move.type === 'Steel' || move.type === 'Dragon')) {
return this.chainModify([4915, 4096]);
}
},
itemUser: ["Dialga"],
num: 135,
gen: 4,
},
adrenalineorb: {
name: "Adrenaline Orb",
spritenum: 660,
fling: {
basePower: 30,
},
onAfterBoost(boost, target, source, effect) {
// Adrenaline Orb activates if Intimidate is blocked by an ability like Hyper Cutter,
// which deletes boost.atk,
// but not if the holder's attack is already at -6 (or +6 if it has Contrary),
// which sets boost.atk to 0
if (target.boosts['spe'] === 6 || boost.atk === 0) {
return;
}
if (effect.name === 'Intimidate') {
target.useItem();
}
},
boosts: {
spe: 1,
},
num: 846,
gen: 7,
},
aerodactylite: {
name: "Aerodactylite",
spritenum: 577,
megaStone: "Aerodactyl-Mega",
megaEvolves: "Aerodactyl",
itemUser: ["Aerodactyl"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 672,
gen: 6,
isNonstandard: "Past",
},
aggronite: {
name: "Aggronite",
spritenum: 578,
megaStone: "Aggron-Mega",
megaEvolves: "Aggron",
itemUser: ["Aggron"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 667,
gen: 6,
isNonstandard: "Past",
},
aguavberry: {
name: "Aguav Berry",
spritenum: 5,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Dragon",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, pokemon.baseMaxhp / 3)) return false;
},
onEat(pokemon) {
this.heal(pokemon.baseMaxhp / 3);
if (pokemon.getNature().minus === 'spd') {
pokemon.addVolatile('confusion');
}
},
num: 162,
gen: 3,
},
airballoon: {
name: "Air Balloon",
spritenum: 6,
fling: {
basePower: 10,
},
onStart(target) {
if (!target.ignoringItem() && !this.field.getPseudoWeather('gravity')) {
this.add('-item', target, 'Air Balloon');
}
},
// airborneness implemented in sim/pokemon.js:Pokemon#isGrounded
onDamagingHit(damage, target, source, move) {
this.add('-enditem', target, 'Air Balloon');
target.item = '';
this.clearEffectState(target.itemState);
this.runEvent('AfterUseItem', target, null, null, this.dex.items.get('airballoon'));
},
onAfterSubDamage(damage, target, source, effect) {
this.debug('effect: ' + effect.id);
if (effect.effectType === 'Move') {
this.add('-enditem', target, 'Air Balloon');
target.item = '';
this.clearEffectState(target.itemState);
this.runEvent('AfterUseItem', target, null, null, this.dex.items.get('airballoon'));
}
},
num: 541,
gen: 5,
},
alakazite: {
name: "Alakazite",
spritenum: 579,
megaStone: "Alakazam-Mega",
megaEvolves: "Alakazam",
itemUser: ["Alakazam"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 679,
gen: 6,
isNonstandard: "Past",
},
aloraichiumz: {
name: "Aloraichium Z",
spritenum: 655,
onTakeItem: false,
zMove: "Stoked Sparksurfer",
zMoveFrom: "Thunderbolt",
itemUser: ["Raichu-Alola"],
num: 803,
gen: 7,
isNonstandard: "Past",
},
altarianite: {
name: "Altarianite",
spritenum: 615,
megaStone: "Altaria-Mega",
megaEvolves: "Altaria",
itemUser: ["Altaria"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 755,
gen: 6,
isNonstandard: "Past",
},
ampharosite: {
name: "Ampharosite",
spritenum: 580,
megaStone: "Ampharos-Mega",
megaEvolves: "Ampharos",
itemUser: ["Ampharos"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 658,
gen: 6,
isNonstandard: "Past",
},
apicotberry: {
name: "Apicot Berry",
spritenum: 10,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Ground",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
this.boost({ spd: 1 });
},
num: 205,
gen: 3,
},
armorfossil: {
name: "Armor Fossil",
spritenum: 12,
fling: {
basePower: 100,
},
num: 104,
gen: 4,
isNonstandard: "Past",
},
aspearberry: {
name: "Aspear Berry",
spritenum: 13,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Ice",
},
onUpdate(pokemon) {
if (pokemon.status === 'frz') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'frz') {
pokemon.cureStatus();
}
},
num: 153,
gen: 3,
},
assaultvest: {
name: "Assault Vest",
spritenum: 581,
fling: {
basePower: 80,
},
onModifySpDPriority: 1,
onModifySpD(spd) {
return this.chainModify(1.5);
},
onDisableMove(pokemon) {
for (const moveSlot of pokemon.moveSlots) {
const move = this.dex.moves.get(moveSlot.id);
if (move.category === 'Status' && move.id !== 'mefirst') {
pokemon.disableMove(moveSlot.id);
}
}
},
num: 640,
gen: 6,
},
audinite: {
name: "Audinite",
spritenum: 617,
megaStone: "Audino-Mega",
megaEvolves: "Audino",
itemUser: ["Audino"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 757,
gen: 6,
isNonstandard: "Past",
},
auspiciousarmor: {
name: "Auspicious Armor",
spritenum: 753,
fling: {
basePower: 30,
},
num: 2344,
gen: 9,
},
babiriberry: {
name: "Babiri Berry",
spritenum: 17,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Steel",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Steel' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 199,
gen: 4,
},
banettite: {
name: "Banettite",
spritenum: 582,
megaStone: "Banette-Mega",
megaEvolves: "Banette",
itemUser: ["Banette"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 668,
gen: 6,
isNonstandard: "Past",
},
beastball: {
name: "Beast Ball",
spritenum: 661,
num: 851,
gen: 7,
isPokeball: true,
},
beedrillite: {
name: "Beedrillite",
spritenum: 628,
megaStone: "Beedrill-Mega",
megaEvolves: "Beedrill",
itemUser: ["Beedrill"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 770,
gen: 6,
isNonstandard: "Past",
},
belueberry: {
name: "Belue Berry",
spritenum: 21,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Electric",
},
onEat: false,
num: 183,
gen: 3,
isNonstandard: "Past",
},
berryjuice: {
name: "Berry Juice",
spritenum: 22,
fling: {
basePower: 30,
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 2) {
if (this.runEvent('TryHeal', pokemon, null, this.effect, 20) && pokemon.useItem()) {
this.heal(20);
}
}
},
num: 43,
gen: 2,
isNonstandard: "Past",
},
berrysweet: {
name: "Berry Sweet",
spritenum: 706,
fling: {
basePower: 10,
},
num: 1111,
gen: 8,
},
bignugget: {
name: "Big Nugget",
spritenum: 27,
fling: {
basePower: 130,
},
num: 581,
gen: 5,
},
bigroot: {
name: "Big Root",
spritenum: 29,
fling: {
basePower: 10,
},
onTryHealPriority: 1,
onTryHeal(damage, target, source, effect) {
const heals = ['drain', 'leechseed', 'ingrain', 'aquaring', 'strengthsap'];
if (heals.includes(effect.id)) {
return this.chainModify([5324, 4096]);
}
},
num: 296,
gen: 4,
},
bindingband: {
name: "Binding Band",
spritenum: 31,
fling: {
basePower: 30,
},
// implemented in statuses
num: 544,
gen: 5,
},
blackbelt: {
name: "Black Belt",
spritenum: 32,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Fighting') {
return this.chainModify([4915, 4096]);
}
},
num: 241,
gen: 2,
},
blackglasses: {
name: "Black Glasses",
spritenum: 35,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Dark') {
return this.chainModify([4915, 4096]);
}
},
num: 240,
gen: 2,
},
blacksludge: {
name: "Black Sludge",
spritenum: 34,
fling: {
basePower: 30,
},
onResidualOrder: 5,
onResidualSubOrder: 4,
onResidual(pokemon) {
if (pokemon.hasType('Poison')) {
this.heal(pokemon.baseMaxhp / 16);
} else {
this.damage(pokemon.baseMaxhp / 8);
}
},
num: 281,
gen: 4,
},
blastoisinite: {
name: "Blastoisinite",
spritenum: 583,
megaStone: "Blastoise-Mega",
megaEvolves: "Blastoise",
itemUser: ["Blastoise"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 661,
gen: 6,
isNonstandard: "Past",
},
blazikenite: {
name: "Blazikenite",
spritenum: 584,
megaStone: "Blaziken-Mega",
megaEvolves: "Blaziken",
itemUser: ["Blaziken"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 664,
gen: 6,
isNonstandard: "Past",
},
blueorb: {
name: "Blue Orb",
spritenum: 41,
onSwitchInPriority: -1,
onSwitchIn(pokemon) {
if (pokemon.isActive && pokemon.baseSpecies.name === 'Kyogre' && !pokemon.transformed) {
pokemon.formeChange('Kyogre-Primal', this.effect, true);
}
},
onTakeItem(item, source) {
if (source.baseSpecies.baseSpecies === 'Kyogre') return false;
return true;
},
itemUser: ["Kyogre"],
isPrimalOrb: true,
num: 535,
gen: 6,
isNonstandard: "Past",
},
blukberry: {
name: "Bluk Berry",
spritenum: 44,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Fire",
},
onEat: false,
num: 165,
gen: 3,
isNonstandard: "Past",
},
blunderpolicy: {
name: "Blunder Policy",
spritenum: 716,
fling: {
basePower: 80,
},
// Item activation located in scripts.js
num: 1121,
gen: 8,
},
boosterenergy: {
name: "Booster Energy",
spritenum: 745,
fling: {
basePower: 30,
},
onSwitchInPriority: -2,
onStart(pokemon) {
this.effectState.started = true;
((this.effect as any).onUpdate as (p: Pokemon) => void).call(this, pokemon);
},
onUpdate(pokemon) {
if (!this.effectState.started || pokemon.transformed) return;
if (pokemon.hasAbility('protosynthesis') && !this.field.isWeather('sunnyday') && pokemon.useItem()) {
pokemon.addVolatile('protosynthesis');
}
if (pokemon.hasAbility('quarkdrive') && !this.field.isTerrain('electricterrain') && pokemon.useItem()) {
pokemon.addVolatile('quarkdrive');
}
},
onTakeItem(item, source) {
if (source.baseSpecies.tags.includes("Paradox")) return false;
return true;
},
num: 1880,
gen: 9,
},
bottlecap: {
name: "Bottle Cap",
spritenum: 696,
fling: {
basePower: 30,
},
num: 795,
gen: 7,
},
brightpowder: {
name: "Bright Powder",
spritenum: 51,
fling: {
basePower: 10,
},
onModifyAccuracyPriority: -2,
onModifyAccuracy(accuracy) {
if (typeof accuracy !== 'number') return;
this.debug('brightpowder - decreasing accuracy');
return this.chainModify([3686, 4096]);
},
num: 213,
gen: 2,
},
buggem: {
name: "Bug Gem",
spritenum: 53,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Bug' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 558,
gen: 5,
isNonstandard: "Past",
},
bugmemory: {
name: "Bug Memory",
spritenum: 673,
onMemory: 'Bug',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Bug",
itemUser: ["Silvally-Bug"],
num: 909,
gen: 7,
isNonstandard: "Past",
},
buginiumz: {
name: "Buginium Z",
spritenum: 642,
onPlate: 'Bug',
onTakeItem: false,
zMove: true,
zMoveType: "Bug",
forcedForme: "Arceus-Bug",
num: 787,
gen: 7,
isNonstandard: "Past",
},
burndrive: {
name: "Burn Drive",
spritenum: 54,
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 649) || pokemon.baseSpecies.num === 649) {
return false;
}
return true;
},
onDrive: 'Fire',
forcedForme: "Genesect-Burn",
itemUser: ["Genesect-Burn"],
num: 118,
gen: 5,
isNonstandard: "Past",
},
cameruptite: {
name: "Cameruptite",
spritenum: 625,
megaStone: "Camerupt-Mega",
megaEvolves: "Camerupt",
itemUser: ["Camerupt"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 767,
gen: 6,
isNonstandard: "Past",
},
cellbattery: {
name: "Cell Battery",
spritenum: 60,
fling: {
basePower: 30,
},
onDamagingHit(damage, target, source, move) {
if (move.type === 'Electric') {
target.useItem();
}
},
boosts: {
atk: 1,
},
num: 546,
gen: 5,
},
charcoal: {
name: "Charcoal",
spritenum: 61,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Fire') {
return this.chainModify([4915, 4096]);
}
},
num: 249,
gen: 2,
},
charizarditex: {
name: "Charizardite X",
spritenum: 585,
megaStone: "Charizard-Mega-X",
megaEvolves: "Charizard",
itemUser: ["Charizard"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 660,
gen: 6,
isNonstandard: "Past",
},
charizarditey: {
name: "Charizardite Y",
spritenum: 586,
megaStone: "Charizard-Mega-Y",
megaEvolves: "Charizard",
itemUser: ["Charizard"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 678,
gen: 6,
isNonstandard: "Past",
},
chartiberry: {
name: "Charti Berry",
spritenum: 62,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Rock",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Rock' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 195,
gen: 4,
},
cheriberry: {
name: "Cheri Berry",
spritenum: 63,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Fire",
},
onUpdate(pokemon) {
if (pokemon.status === 'par') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'par') {
pokemon.cureStatus();
}
},
num: 149,
gen: 3,
},
cherishball: {
name: "Cherish Ball",
spritenum: 64,
num: 16,
gen: 4,
isPokeball: true,
isNonstandard: "Unobtainable",
},
chestoberry: {
name: "Chesto Berry",
spritenum: 65,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Water",
},
onUpdate(pokemon) {
if (pokemon.status === 'slp') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'slp') {
pokemon.cureStatus();
}
},
num: 150,
gen: 3,
},
chilanberry: {
name: "Chilan Berry",
spritenum: 66,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Normal",
},
onSourceModifyDamage(damage, source, target, move) {
if (
move.type === 'Normal' &&
(!target.volatiles['substitute'] || move.flags['bypasssub'] || (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() { },
num: 200,
gen: 4,
},
chilldrive: {
name: "Chill Drive",
spritenum: 67,
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 649) || pokemon.baseSpecies.num === 649) {
return false;
}
return true;
},
onDrive: 'Ice',
forcedForme: "Genesect-Chill",
itemUser: ["Genesect-Chill"],
num: 119,
gen: 5,
isNonstandard: "Past",
},
chippedpot: {
name: "Chipped Pot",
spritenum: 720,
fling: {
basePower: 80,
},
num: 1254,
gen: 8,
},
choiceband: {
name: "Choice Band",
spritenum: 68,
fling: {
basePower: 10,
},
onStart(pokemon) {
if (pokemon.volatiles['choicelock']) {
this.debug('removing choicelock');
}
pokemon.removeVolatile('choicelock');
},
onModifyMove(move, pokemon) {
pokemon.addVolatile('choicelock');
},
onModifyAtkPriority: 1,
onModifyAtk(atk, pokemon) {
if (pokemon.volatiles['dynamax']) return;
return this.chainModify(1.5);
},
isChoice: true,
num: 220,
gen: 3,
},
choicescarf: {
name: "Choice Scarf",
spritenum: 69,
fling: {
basePower: 10,
},
onStart(pokemon) {
if (pokemon.volatiles['choicelock']) {
this.debug('removing choicelock');
}
pokemon.removeVolatile('choicelock');
},
onModifyMove(move, pokemon) {
pokemon.addVolatile('choicelock');
},
onModifySpe(spe, pokemon) {
if (pokemon.volatiles['dynamax']) return;
return this.chainModify(1.5);
},
isChoice: true,
num: 287,
gen: 4,
},
choicespecs: {
name: "Choice Specs",
spritenum: 70,
fling: {
basePower: 10,
},
onStart(pokemon) {
if (pokemon.volatiles['choicelock']) {
this.debug('removing choicelock');
}
pokemon.removeVolatile('choicelock');
},
onModifyMove(move, pokemon) {
pokemon.addVolatile('choicelock');
},
onModifySpAPriority: 1,
onModifySpA(spa, pokemon) {
if (pokemon.volatiles['dynamax']) return;
return this.chainModify(1.5);
},
isChoice: true,
num: 297,
gen: 4,
},
chopleberry: {
name: "Chople Berry",
spritenum: 71,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Fighting",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Fighting' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 189,
gen: 4,
},
clawfossil: {
name: "Claw Fossil",
spritenum: 72,
fling: {
basePower: 100,
},
num: 100,
gen: 3,
isNonstandard: "Past",
},
clearamulet: {
name: "Clear Amulet",
spritenum: 747,
fling: {
basePower: 30,
},
onTryBoostPriority: 1,
onTryBoost(boost, target, source, effect) {
if (source && target === source) return;
let showMsg = false;
let i: BoostID;
for (i in boost) {
if (boost[i]! < 0) {
delete boost[i];
showMsg = true;
}
}
if (showMsg && !(effect as ActiveMove).secondaries && effect.id !== 'octolock') {
this.add('-fail', target, 'unboost', '[from] item: Clear Amulet', `[of] ${target}`);
}
},
num: 1882,
gen: 9,
},
cloversweet: {
name: "Clover Sweet",
spritenum: 707,
fling: {
basePower: 10,
},
num: 1112,
gen: 8,
},
cobaberry: {
name: "Coba Berry",
spritenum: 76,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Flying",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Flying' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 192,
gen: 4,
},
colburberry: {
name: "Colbur Berry",
spritenum: 78,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Dark",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Dark' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 198,
gen: 4,
},
cornerstonemask: {
name: "Cornerstone Mask",
spritenum: 758,
fling: {
basePower: 60,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.name.startsWith('Ogerpon-Cornerstone')) {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, source) {
if (source.baseSpecies.baseSpecies === 'Ogerpon') return false;
return true;
},
forcedForme: "Ogerpon-Cornerstone",
itemUser: ["Ogerpon-Cornerstone"],
num: 2406,
gen: 9,
},
cornnberry: {
name: "Cornn Berry",
spritenum: 81,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Bug",
},
onEat: false,
num: 175,
gen: 3,
isNonstandard: "Past",
},
coverfossil: {
name: "Cover Fossil",
spritenum: 85,
fling: {
basePower: 100,
},
num: 572,
gen: 5,
isNonstandard: "Past",
},
covertcloak: {
name: "Covert Cloak",
spritenum: 750,
fling: {
basePower: 30,
},
onModifySecondaries(secondaries) {
this.debug('Covert Cloak prevent secondary');
return secondaries.filter(effect => !!(effect.self || effect.dustproof));
},
num: 1885,
gen: 9,
},
crackedpot: {
name: "Cracked Pot",
spritenum: 719,
fling: {
basePower: 80,
},
num: 1253,
gen: 8,
},
custapberry: {
name: "Custap Berry",
spritenum: 86,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Ghost",
},
onFractionalPriorityPriority: -2,
onFractionalPriority(priority, pokemon) {
if (
priority <= 0 &&
(pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony))
) {
if (pokemon.eatItem()) {
this.add('-activate', pokemon, 'item: Custap Berry', '[consumed]');
return 0.1;
}
}
},
onEat() { },
num: 210,
gen: 4,
},
damprock: {
name: "Damp Rock",
spritenum: 88,
fling: {
basePower: 60,
},
num: 285,
gen: 4,
},
darkgem: {
name: "Dark Gem",
spritenum: 89,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Dark' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 562,
gen: 5,
isNonstandard: "Past",
},
darkmemory: {
name: "Dark Memory",
spritenum: 683,
onMemory: 'Dark',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Dark",
itemUser: ["Silvally-Dark"],
num: 919,
gen: 7,
isNonstandard: "Past",
},
darkiniumz: {
name: "Darkinium Z",
spritenum: 646,
onPlate: 'Dark',
onTakeItem: false,
zMove: true,
zMoveType: "Dark",
forcedForme: "Arceus-Dark",
num: 791,
gen: 7,
isNonstandard: "Past",
},
dawnstone: {
name: "Dawn Stone",
spritenum: 92,
fling: {
basePower: 80,
},
num: 109,
gen: 4,
},
decidiumz: {
name: "Decidium Z",
spritenum: 650,
onTakeItem: false,
zMove: "Sinister Arrow Raid",
zMoveFrom: "Spirit Shackle",
itemUser: ["Decidueye"],
num: 798,
gen: 7,
isNonstandard: "Past",
},
deepseascale: {
name: "Deep Sea Scale",
spritenum: 93,
fling: {
basePower: 30,
},
onModifySpDPriority: 2,
onModifySpD(spd, pokemon) {
if (pokemon.baseSpecies.name === 'Clamperl') {
return this.chainModify(2);
}
},
itemUser: ["Clamperl"],
num: 227,
gen: 3,
isNonstandard: "Past",
},
deepseatooth: {
name: "Deep Sea Tooth",
spritenum: 94,
fling: {
basePower: 90,
},
onModifySpAPriority: 1,
onModifySpA(spa, pokemon) {
if (pokemon.baseSpecies.name === 'Clamperl') {
return this.chainModify(2);
}
},
itemUser: ["Clamperl"],
num: 226,
gen: 3,
isNonstandard: "Past",
},
destinyknot: {
name: "Destiny Knot",
spritenum: 95,
fling: {
basePower: 10,
},
onAttractPriority: -100,
onAttract(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,
},
diancite: {
name: "Diancite",
spritenum: 624,
megaStone: "Diancie-Mega",
megaEvolves: "Diancie",
itemUser: ["Diancie"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 764,
gen: 6,
isNonstandard: "Past",
},
diveball: {
name: "Dive Ball",
spritenum: 101,
num: 7,
gen: 3,
isPokeball: true,
},
domefossil: {
name: "Dome Fossil",
spritenum: 102,
fling: {
basePower: 100,
},
num: 102,
gen: 3,
isNonstandard: "Past",
},
dousedrive: {
name: "Douse Drive",
spritenum: 103,
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 649) || pokemon.baseSpecies.num === 649) {
return false;
}
return true;
},
onDrive: 'Water',
forcedForme: "Genesect-Douse",
itemUser: ["Genesect-Douse"],
num: 116,
gen: 5,
isNonstandard: "Past",
},
dracoplate: {
name: "Draco Plate",
spritenum: 105,
onPlate: 'Dragon',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Dragon') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Dragon",
num: 311,
gen: 4,
},
dragonfang: {
name: "Dragon Fang",
spritenum: 106,
fling: {
basePower: 70,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Dragon') {
return this.chainModify([4915, 4096]);
}
},
num: 250,
gen: 2,
},
dragongem: {
name: "Dragon Gem",
spritenum: 107,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Dragon' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 561,
gen: 5,
isNonstandard: "Past",
},
dragonmemory: {
name: "Dragon Memory",
spritenum: 682,
onMemory: 'Dragon',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Dragon",
itemUser: ["Silvally-Dragon"],
num: 918,
gen: 7,
isNonstandard: "Past",
},
dragonscale: {
name: "Dragon Scale",
spritenum: 108,
fling: {
basePower: 30,
},
num: 235,
gen: 2,
},
dragoniumz: {
name: "Dragonium Z",
spritenum: 645,
onPlate: 'Dragon',
onTakeItem: false,
zMove: true,
zMoveType: "Dragon",
forcedForme: "Arceus-Dragon",
num: 790,
gen: 7,
isNonstandard: "Past",
},
dreadplate: {
name: "Dread Plate",
spritenum: 110,
onPlate: 'Dark',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Dark') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Dark",
num: 312,
gen: 4,
},
dreamball: {
name: "Dream Ball",
spritenum: 111,
num: 576,
gen: 5,
isPokeball: true,
},
dubiousdisc: {
name: "Dubious Disc",
spritenum: 113,
fling: {
basePower: 50,
},
num: 324,
gen: 4,
},
durinberry: {
name: "Durin Berry",
spritenum: 114,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Water",
},
onEat: false,
num: 182,
gen: 3,
isNonstandard: "Past",
},
duskball: {
name: "Dusk Ball",
spritenum: 115,
num: 13,
gen: 4,
isPokeball: true,
},
duskstone: {
name: "Dusk Stone",
spritenum: 116,
fling: {
basePower: 80,
},
num: 108,
gen: 4,
},
earthplate: {
name: "Earth Plate",
spritenum: 117,
onPlate: 'Ground',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Ground') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Ground",
num: 305,
gen: 4,
},
eeviumz: {
name: "Eevium Z",
spritenum: 657,
onTakeItem: false,
zMove: "Extreme Evoboost",
zMoveFrom: "Last Resort",
itemUser: ["Eevee"],
num: 805,
gen: 7,
isNonstandard: "Past",
},
ejectbutton: {
name: "Eject Button",
spritenum: 118,
fling: {
basePower: 30,
},
onAfterMoveSecondaryPriority: 2,
onAfterMoveSecondary(target, source, move) {
if (source && source !== target && target.hp && move && move.category !== 'Status' && !move.flags['futuremove']) {
if (!this.canSwitch(target.side) || target.forceSwitchFlag || target.beingCalledBack || target.isSkyDropped()) return;
if (target.volatiles['commanding'] || target.volatiles['commanded']) return;
for (const pokemon of this.getAllActive()) {
if (pokemon.switchFlag === true) return;
}
target.switchFlag = true;
if (target.useItem()) {
source.switchFlag = false;
} else {
target.switchFlag = false;
}
}
},
num: 547,
gen: 5,
},
ejectpack: {
name: "Eject Pack",
spritenum: 714,
fling: {
basePower: 50,
},
onAfterBoost(boost, target, source, effect) {
if (this.activeMove?.id === 'partingshot') return;
let eject = false;
let i: BoostID;
for (i in boost) {
if (boost[i]! < 0) {
eject = true;
}
}
if (eject) {
if (target.hp) {
if (!this.canSwitch(target.side)) return;
if (target.volatiles['commanding'] || target.volatiles['commanded']) return;
for (const pokemon of this.getAllActive()) {
if (pokemon.switchFlag === true) return;
}
if (target.useItem()) target.switchFlag = true;
}
}
},
num: 1119,
gen: 8,
},
electirizer: {
name: "Electirizer",
spritenum: 119,
fling: {
basePower: 80,
},
num: 322,
gen: 4,
},
electricgem: {
name: "Electric Gem",
spritenum: 120,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status' || move.flags['pledgecombo']) return;
if (move.type === 'Electric' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 550,
gen: 5,
isNonstandard: "Past",
},
electricmemory: {
name: "Electric Memory",
spritenum: 679,
onMemory: 'Electric',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Electric",
itemUser: ["Silvally-Electric"],
num: 915,
gen: 7,
isNonstandard: "Past",
},
electricseed: {
name: "Electric Seed",
spritenum: 664,
fling: {
basePower: 10,
},
onSwitchInPriority: -1,
onStart(pokemon) {
if (!pokemon.ignoringItem() && this.field.isTerrain('electricterrain')) {
pokemon.useItem();
}
},
onTerrainChange(pokemon) {
if (this.field.isTerrain('electricterrain')) {
pokemon.useItem();
}
},
boosts: {
def: 1,
},
num: 881,
gen: 7,
},
electriumz: {
name: "Electrium Z",
spritenum: 634,
onPlate: 'Electric',
onTakeItem: false,
zMove: true,
zMoveType: "Electric",
forcedForme: "Arceus-Electric",
num: 779,
gen: 7,
isNonstandard: "Past",
},
enigmaberry: {
name: "Enigma Berry",
spritenum: 124,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Bug",
},
onHit(target, source, move) {
if (move && target.getMoveHitData(move).typeMod > 0) {
if (target.eatItem()) {
this.heal(target.baseMaxhp / 4);
}
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, pokemon.baseMaxhp / 4)) return false;
},
onEat() { },
num: 208,
gen: 3,
},
eviolite: {
name: "Eviolite",
spritenum: 130,
fling: {
basePower: 40,
},
onModifyDefPriority: 2,
onModifyDef(def, pokemon) {
if (pokemon.baseSpecies.nfe) {
return this.chainModify(1.5);
}
},
onModifySpDPriority: 2,
onModifySpD(spd, pokemon) {
if (pokemon.baseSpecies.nfe) {
return this.chainModify(1.5);
}
},
num: 538,
gen: 5,
},
expertbelt: {
name: "Expert Belt",
spritenum: 132,
fling: {
basePower: 10,
},
onModifyDamage(damage, source, target, move) {
if (move && target.getMoveHitData(move).typeMod > 0) {
return this.chainModify([4915, 4096]);
}
},
num: 268,
gen: 4,
},
fairiumz: {
name: "Fairium Z",
spritenum: 648,
onPlate: 'Fairy',
onTakeItem: false,
zMove: true,
zMoveType: "Fairy",
forcedForme: "Arceus-Fairy",
num: 793,
gen: 7,
isNonstandard: "Past",
},
fairyfeather: {
name: "Fairy Feather",
spritenum: 754,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Fairy') {
return this.chainModify([4915, 4096]);
}
},
num: 2401,
gen: 9,
},
fairygem: {
name: "Fairy Gem",
spritenum: 611,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Fairy' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 715,
gen: 6,
isNonstandard: "Past",
},
fairymemory: {
name: "Fairy Memory",
spritenum: 684,
onMemory: 'Fairy',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Fairy",
itemUser: ["Silvally-Fairy"],
num: 920,
gen: 7,
isNonstandard: "Past",
},
fastball: {
name: "Fast Ball",
spritenum: 137,
num: 492,
gen: 2,
isPokeball: true,
},
fightinggem: {
name: "Fighting Gem",
spritenum: 139,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Fighting' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 553,
gen: 5,
isNonstandard: "Past",
},
fightingmemory: {
name: "Fighting Memory",
spritenum: 668,
onMemory: 'Fighting',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Fighting",
itemUser: ["Silvally-Fighting"],
num: 904,
gen: 7,
isNonstandard: "Past",
},
fightiniumz: {
name: "Fightinium Z",
spritenum: 637,
onPlate: 'Fighting',
onTakeItem: false,
zMove: true,
zMoveType: "Fighting",
forcedForme: "Arceus-Fighting",
num: 782,
gen: 7,
isNonstandard: "Past",
},
figyberry: {
name: "Figy Berry",
spritenum: 140,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Bug",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, pokemon.baseMaxhp / 3)) return false;
},
onEat(pokemon) {
this.heal(pokemon.baseMaxhp / 3);
if (pokemon.getNature().minus === 'atk') {
pokemon.addVolatile('confusion');
}
},
num: 159,
gen: 3,
},
firegem: {
name: "Fire Gem",
spritenum: 141,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status' || move.flags['pledgecombo']) return;
if (move.type === 'Fire' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 548,
gen: 5,
isNonstandard: "Past",
},
firememory: {
name: "Fire Memory",
spritenum: 676,
onMemory: 'Fire',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Fire",
itemUser: ["Silvally-Fire"],
num: 912,
gen: 7,
isNonstandard: "Past",
},
firestone: {
name: "Fire Stone",
spritenum: 142,
fling: {
basePower: 30,
},
num: 82,
gen: 1,
},
firiumz: {
name: "Firium Z",
spritenum: 632,
onPlate: 'Fire',
onTakeItem: false,
zMove: true,
zMoveType: "Fire",
forcedForme: "Arceus-Fire",
num: 777,
gen: 7,
isNonstandard: "Past",
},
fistplate: {
name: "Fist Plate",
spritenum: 143,
onPlate: 'Fighting',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Fighting') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Fighting",
num: 303,
gen: 4,
},
flameorb: {
name: "Flame Orb",
spritenum: 145,
fling: {
basePower: 30,
status: 'brn',
},
onResidualOrder: 28,
onResidualSubOrder: 3,
onResidual(pokemon) {
pokemon.trySetStatus('brn', pokemon);
},
num: 273,
gen: 4,
},
flameplate: {
name: "Flame Plate",
spritenum: 146,
onPlate: 'Fire',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Fire') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Fire",
num: 298,
gen: 4,
},
floatstone: {
name: "Float Stone",
spritenum: 147,
fling: {
basePower: 30,
},
onModifyWeight(weighthg) {
return this.trunc(weighthg / 2);
},
num: 539,
gen: 5,
},
flowersweet: {
name: "Flower Sweet",
spritenum: 708,
fling: {
basePower: 0,
},
num: 1113,
gen: 8,
},
flyinggem: {
name: "Flying Gem",
spritenum: 149,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Flying' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 556,
gen: 5,
isNonstandard: "Past",
},
flyingmemory: {
name: "Flying Memory",
spritenum: 669,
onMemory: 'Flying',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Flying",
itemUser: ["Silvally-Flying"],
num: 905,
gen: 7,
isNonstandard: "Past",
},
flyiniumz: {
name: "Flyinium Z",
spritenum: 640,
onPlate: 'Flying',
onTakeItem: false,
zMove: true,
zMoveType: "Flying",
forcedForme: "Arceus-Flying",
num: 785,
gen: 7,
isNonstandard: "Past",
},
focusband: {
name: "Focus Band",
spritenum: 150,
fling: {
basePower: 10,
},
onDamagePriority: -40,
onDamage(damage, target, source, effect) {
if (this.randomChance(1, 10) && damage >= target.hp && effect && effect.effectType === 'Move') {
this.add("-activate", target, "item: Focus Band");
return target.hp - 1;
}
},
num: 230,
gen: 2,
},
focussash: {
name: "Focus Sash",
spritenum: 151,
fling: {
basePower: 10,
},
onDamagePriority: -40,
onDamage(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,
},
fossilizedbird: {
name: "Fossilized Bird",
spritenum: 700,
fling: {
basePower: 100,
},
num: 1105,
gen: 8,
isNonstandard: "Past",
},
fossilizeddino: {
name: "Fossilized Dino",
spritenum: 703,
fling: {
basePower: 100,
},
num: 1108,
gen: 8,
isNonstandard: "Past",
},
fossilizeddrake: {
name: "Fossilized Drake",
spritenum: 702,
fling: {
basePower: 100,
},
num: 1107,
gen: 8,
isNonstandard: "Past",
},
fossilizedfish: {
name: "Fossilized Fish",
spritenum: 701,
fling: {
basePower: 100,
},
num: 1106,
gen: 8,
isNonstandard: "Past",
},
friendball: {
name: "Friend Ball",
spritenum: 153,
num: 497,
gen: 2,
isPokeball: true,
},
fullincense: {
name: "Full Incense",
spritenum: 155,
fling: {
basePower: 10,
},
onFractionalPriority: -0.1,
num: 316,
gen: 4,
isNonstandard: "Past",
},
galaricacuff: {
name: "Galarica Cuff",
spritenum: 739,
fling: {
basePower: 30,
},
num: 1582,
gen: 8,
},
galaricawreath: {
name: "Galarica Wreath",
spritenum: 740,
fling: {
basePower: 30,
},
num: 1592,
gen: 8,
},
galladite: {
name: "Galladite",
spritenum: 616,
megaStone: "Gallade-Mega",
megaEvolves: "Gallade",
itemUser: ["Gallade"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 756,
gen: 6,
isNonstandard: "Past",
},
ganlonberry: {
name: "Ganlon Berry",
spritenum: 158,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Ice",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
this.boost({ def: 1 });
},
num: 202,
gen: 3,
},
garchompite: {
name: "Garchompite",
spritenum: 589,
megaStone: "Garchomp-Mega",
megaEvolves: "Garchomp",
itemUser: ["Garchomp"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 683,
gen: 6,
isNonstandard: "Past",
},
gardevoirite: {
name: "Gardevoirite",
spritenum: 587,
megaStone: "Gardevoir-Mega",
megaEvolves: "Gardevoir",
itemUser: ["Gardevoir"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 657,
gen: 6,
isNonstandard: "Past",
},
gengarite: {
name: "Gengarite",
spritenum: 588,
megaStone: "Gengar-Mega",
megaEvolves: "Gengar",
itemUser: ["Gengar"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 656,
gen: 6,
isNonstandard: "Past",
},
ghostgem: {
name: "Ghost Gem",
spritenum: 161,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Ghost' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 560,
gen: 5,
isNonstandard: "Past",
},
ghostmemory: {
name: "Ghost Memory",
spritenum: 674,
onMemory: 'Ghost',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Ghost",
itemUser: ["Silvally-Ghost"],
num: 910,
gen: 7,
isNonstandard: "Past",
},
ghostiumz: {
name: "Ghostium Z",
spritenum: 644,
onPlate: 'Ghost',
onTakeItem: false,
zMove: true,
zMoveType: "Ghost",
forcedForme: "Arceus-Ghost",
num: 789,
gen: 7,
isNonstandard: "Past",
},
glalitite: {
name: "Glalitite",
spritenum: 623,
megaStone: "Glalie-Mega",
megaEvolves: "Glalie",
itemUser: ["Glalie"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 763,
gen: 6,
isNonstandard: "Past",
},
goldbottlecap: {
name: "Gold Bottle Cap",
spritenum: 697,
fling: {
basePower: 30,
},
num: 796,
gen: 7,
},
grassgem: {
name: "Grass Gem",
spritenum: 172,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status' || move.flags['pledgecombo']) return;
if (move.type === 'Grass' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 551,
gen: 5,
isNonstandard: "Past",
},
grassmemory: {
name: "Grass Memory",
spritenum: 678,
onMemory: 'Grass',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Grass",
itemUser: ["Silvally-Grass"],
num: 914,
gen: 7,
isNonstandard: "Past",
},
grassiumz: {
name: "Grassium Z",
spritenum: 635,
onPlate: 'Grass',
onTakeItem: false,
zMove: true,
zMoveType: "Grass",
forcedForme: "Arceus-Grass",
num: 780,
gen: 7,
isNonstandard: "Past",
},
grassyseed: {
name: "Grassy Seed",
spritenum: 667,
fling: {
basePower: 10,
},
onSwitchInPriority: -1,
onStart(pokemon) {
if (!pokemon.ignoringItem() && this.field.isTerrain('grassyterrain')) {
pokemon.useItem();
}
},
onTerrainChange(pokemon) {
if (this.field.isTerrain('grassyterrain')) {
pokemon.useItem();
}
},
boosts: {
def: 1,
},
num: 884,
gen: 7,
},
greatball: {
name: "Great Ball",
spritenum: 174,
num: 3,
gen: 1,
isPokeball: true,
},
grepaberry: {
name: "Grepa Berry",
spritenum: 178,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Flying",
},
onEat: false,
num: 173,
gen: 3,
},
gripclaw: {
name: "Grip Claw",
spritenum: 179,
fling: {
basePower: 90,
},
// implemented in statuses
num: 286,
gen: 4,
},
griseouscore: {
name: "Griseous Core",
spritenum: 743,
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.num === 487 && (move.type === 'Ghost' || move.type === 'Dragon')) {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if (source?.baseSpecies.num === 487 || pokemon.baseSpecies.num === 487) {
return false;
}
return true;
},
forcedForme: "Giratina-Origin",
itemUser: ["Giratina-Origin"],
num: 1779,
gen: 8,
},
griseousorb: {
name: "Griseous Orb",
spritenum: 180,
fling: {
basePower: 60,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.num === 487 && (move.type === 'Ghost' || move.type === 'Dragon')) {
return this.chainModify([4915, 4096]);
}
},
itemUser: ["Giratina"],
num: 112,
gen: 4,
},
groundgem: {
name: "Ground Gem",
spritenum: 182,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Ground' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 555,
gen: 5,
isNonstandard: "Past",
},
groundmemory: {
name: "Ground Memory",
spritenum: 671,
onMemory: 'Ground',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Ground",
itemUser: ["Silvally-Ground"],
num: 907,
gen: 7,
isNonstandard: "Past",
},
groundiumz: {
name: "Groundium Z",
spritenum: 639,
onPlate: 'Ground',
onTakeItem: false,
zMove: true,
zMoveType: "Ground",
forcedForme: "Arceus-Ground",
num: 784,
gen: 7,
isNonstandard: "Past",
},
gyaradosite: {
name: "Gyaradosite",
spritenum: 589,
megaStone: "Gyarados-Mega",
megaEvolves: "Gyarados",
itemUser: ["Gyarados"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 676,
gen: 6,
isNonstandard: "Past",
},
habanberry: {
name: "Haban Berry",
spritenum: 185,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Dragon",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Dragon' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 197,
gen: 4,
},
hardstone: {
name: "Hard Stone",
spritenum: 187,
fling: {
basePower: 100,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Rock') {
return this.chainModify([4915, 4096]);
}
},
num: 238,
gen: 2,
},
healball: {
name: "Heal Ball",
spritenum: 188,
num: 14,
gen: 4,
isPokeball: true,
},
hearthflamemask: {
name: "Hearthflame Mask",
spritenum: 760,
fling: {
basePower: 60,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.name.startsWith('Ogerpon-Hearthflame')) {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, source) {
if (source.baseSpecies.baseSpecies === 'Ogerpon') return false;
return true;
},
forcedForme: "Ogerpon-Hearthflame",
itemUser: ["Ogerpon-Hearthflame"],
num: 2408,
gen: 9,
},
heatrock: {
name: "Heat Rock",
spritenum: 193,
fling: {
basePower: 60,
},
num: 284,
gen: 4,
},
heavyball: {
name: "Heavy Ball",
spritenum: 194,
num: 495,
gen: 2,
isPokeball: true,
},
heavydutyboots: {
name: "Heavy-Duty Boots",
spritenum: 715,
fling: {
basePower: 80,
},
num: 1120,
gen: 8,
// Hazard Immunity implemented in moves.ts
},
helixfossil: {
name: "Helix Fossil",
spritenum: 195,
fling: {
basePower: 100,
},
num: 101,
gen: 3,
isNonstandard: "Past",
},
heracronite: {
name: "Heracronite",
spritenum: 590,
megaStone: "Heracross-Mega",
megaEvolves: "Heracross",
itemUser: ["Heracross"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 680,
gen: 6,
isNonstandard: "Past",
},
hondewberry: {
name: "Hondew Berry",
spritenum: 213,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Ground",
},
onEat: false,
num: 172,
gen: 3,
},
houndoominite: {
name: "Houndoominite",
spritenum: 591,
megaStone: "Houndoom-Mega",
megaEvolves: "Houndoom",
itemUser: ["Houndoom"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 666,
gen: 6,
isNonstandard: "Past",
},
iapapaberry: {
name: "Iapapa Berry",
spritenum: 217,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Dark",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, pokemon.baseMaxhp / 3)) return false;
},
onEat(pokemon) {
this.heal(pokemon.baseMaxhp / 3);
if (pokemon.getNature().minus === 'def') {
pokemon.addVolatile('confusion');
}
},
num: 163,
gen: 3,
},
icegem: {
name: "Ice Gem",
spritenum: 218,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Ice' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 552,
gen: 5,
isNonstandard: "Past",
},
icememory: {
name: "Ice Memory",
spritenum: 681,
onMemory: 'Ice',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Ice",
itemUser: ["Silvally-Ice"],
num: 917,
gen: 7,
isNonstandard: "Past",
},
icestone: {
name: "Ice Stone",
spritenum: 693,
fling: {
basePower: 30,
},
num: 849,
gen: 7,
},
icicleplate: {
name: "Icicle Plate",
spritenum: 220,
onPlate: 'Ice',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Ice') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Ice",
num: 302,
gen: 4,
},
iciumz: {
name: "Icium Z",
spritenum: 636,
onPlate: 'Ice',
onTakeItem: false,
zMove: true,
zMoveType: "Ice",
forcedForme: "Arceus-Ice",
num: 781,
gen: 7,
isNonstandard: "Past",
},
icyrock: {
name: "Icy Rock",
spritenum: 221,
fling: {
basePower: 40,
},
num: 282,
gen: 4,
},
inciniumz: {
name: "Incinium Z",
spritenum: 651,
onTakeItem: false,
zMove: "Malicious Moonsault",
zMoveFrom: "Darkest Lariat",
itemUser: ["Incineroar"],
num: 799,
gen: 7,
isNonstandard: "Past",
},
insectplate: {
name: "Insect Plate",
spritenum: 223,
onPlate: 'Bug',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Bug') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Bug",
num: 308,
gen: 4,
},
ironball: {
name: "Iron Ball",
spritenum: 224,
fling: {
basePower: 130,
},
onEffectiveness(typeMod, target, type, move) {
if (!target) return;
if (target.volatiles['ingrain'] || target.volatiles['smackdown'] || this.field.getPseudoWeather('gravity')) return;
if (move.type === 'Ground' && target.hasType('Flying')) return 0;
},
// airborneness negation implemented in sim/pokemon.js:Pokemon#isGrounded
onModifySpe(spe) {
return this.chainModify(0.5);
},
num: 278,
gen: 4,
},
ironplate: {
name: "Iron Plate",
spritenum: 225,
onPlate: 'Steel',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Steel') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Steel",
num: 313,
gen: 4,
},
jabocaberry: {
name: "Jaboca Berry",
spritenum: 230,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Dragon",
},
onDamagingHit(damage, target, source, move) {
if (move.category === 'Physical' && source.hp && source.isActive && !source.hasAbility('magicguard')) {
if (target.eatItem()) {
this.damage(source.baseMaxhp / (target.hasAbility('ripen') ? 4 : 8), source, target);
}
}
},
onEat() { },
num: 211,
gen: 4,
},
jawfossil: {
name: "Jaw Fossil",
spritenum: 694,
fling: {
basePower: 100,
},
num: 710,
gen: 6,
isNonstandard: "Past",
},
kasibberry: {
name: "Kasib Berry",
spritenum: 233,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Ghost",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Ghost' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 196,
gen: 4,
},
kebiaberry: {
name: "Kebia Berry",
spritenum: 234,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Poison",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Poison' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 190,
gen: 4,
},
keeberry: {
name: "Kee Berry",
spritenum: 593,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Fairy",
},
onAfterMoveSecondary(target, source, move) {
if (move.category === 'Physical') {
if (move.id === 'present' && move.heal) return;
target.eatItem();
}
},
onEat(pokemon) {
this.boost({ def: 1 });
},
num: 687,
gen: 6,
},
kelpsyberry: {
name: "Kelpsy Berry",
spritenum: 235,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Fighting",
},
onEat: false,
num: 170,
gen: 3,
},
kangaskhanite: {
name: "Kangaskhanite",
spritenum: 592,
megaStone: "Kangaskhan-Mega",
megaEvolves: "Kangaskhan",
itemUser: ["Kangaskhan"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 675,
gen: 6,
isNonstandard: "Past",
},
kingsrock: {
name: "King's Rock",
spritenum: 236,
fling: {
basePower: 30,
volatileStatus: 'flinch',
},
onModifyMovePriority: -1,
onModifyMove(move) {
if (move.category !== "Status") {
if (!move.secondaries) move.secondaries = [];
for (const secondary of move.secondaries) {
if (secondary.volatileStatus === 'flinch') return;
}
move.secondaries.push({
chance: 10,
volatileStatus: 'flinch',
});
}
},
num: 221,
gen: 2,
},
kommoniumz: {
name: "Kommonium Z",
spritenum: 690,
onTakeItem: false,
zMove: "Clangorous Soulblaze",
zMoveFrom: "Clanging Scales",
itemUser: ["Kommo-o", "Kommo-o-Totem"],
num: 926,
gen: 7,
isNonstandard: "Past",
},
laggingtail: {
name: "Lagging Tail",
spritenum: 237,
fling: {
basePower: 10,
},
onFractionalPriority: -0.1,
num: 279,
gen: 4,
},
lansatberry: {
name: "Lansat Berry",
spritenum: 238,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Flying",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
pokemon.addVolatile('focusenergy');
},
num: 206,
gen: 3,
},
latiasite: {
name: "Latiasite",
spritenum: 629,
megaStone: "Latias-Mega",
megaEvolves: "Latias",
itemUser: ["Latias"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 684,
gen: 6,
isNonstandard: "Past",
},
latiosite: {
name: "Latiosite",
spritenum: 630,
megaStone: "Latios-Mega",
megaEvolves: "Latios",
itemUser: ["Latios"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 685,
gen: 6,
isNonstandard: "Past",
},
laxincense: {
name: "Lax Incense",
spritenum: 240,
fling: {
basePower: 10,
},
onModifyAccuracyPriority: -2,
onModifyAccuracy(accuracy) {
if (typeof accuracy !== 'number') return;
this.debug('lax incense - decreasing accuracy');
return this.chainModify([3686, 4096]);
},
num: 255,
gen: 3,
isNonstandard: "Past",
},
leafstone: {
name: "Leaf Stone",
spritenum: 241,
fling: {
basePower: 30,
},
num: 85,
gen: 1,
},
leek: {
name: "Leek",
fling: {
basePower: 60,
},
spritenum: 475,
onModifyCritRatio(critRatio, user) {
if (["farfetchd", "sirfetchd"].includes(this.toID(user.baseSpecies.baseSpecies))) {
return critRatio + 2;
}
},
itemUser: ["Farfetch\u2019d", "Farfetch\u2019d-Galar", "Sirfetch\u2019d"],
num: 259,
gen: 8,
isNonstandard: "Past",
},
leftovers: {
name: "Leftovers",
spritenum: 242,
fling: {
basePower: 10,
},
onResidualOrder: 5,
onResidualSubOrder: 4,
onResidual(pokemon) {
this.heal(pokemon.baseMaxhp / 16);
},
num: 234,
gen: 2,
},
leppaberry: {
name: "Leppa Berry",
spritenum: 244,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Fighting",
},
onUpdate(pokemon) {
if (!pokemon.hp) return;
if (pokemon.moveSlots.some(move => move.pp === 0)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
const moveSlot = pokemon.moveSlots.find(move => move.pp === 0) ||
pokemon.moveSlots.find(move => move.pp < move.maxpp);
if (!moveSlot) return;
moveSlot.pp += 10;
if (moveSlot.pp > moveSlot.maxpp) moveSlot.pp = moveSlot.maxpp;
this.add('-activate', pokemon, 'item: Leppa Berry', moveSlot.move, '[consumed]');
},
num: 154,
gen: 3,
},
levelball: {
name: "Level Ball",
spritenum: 246,
num: 493,
gen: 2,
isPokeball: true,
},
liechiberry: {
name: "Liechi Berry",
spritenum: 248,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Grass",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
this.boost({ atk: 1 });
},
num: 201,
gen: 3,
},
lifeorb: {
name: "Life Orb",
spritenum: 249,
fling: {
basePower: 30,
},
onModifyDamage(damage, source, target, move) {
return this.chainModify([5324, 4096]);
},
onAfterMoveSecondarySelf(source, target, move) {
if (source && source !== target && move && move.category !== 'Status' && !source.forceSwitchFlag) {
this.damage(source.baseMaxhp / 10, source, source, this.dex.items.get('lifeorb'));
}
},
num: 270,
gen: 4,
},
lightball: {
name: "Light Ball",
spritenum: 251,
fling: {
basePower: 30,
status: 'par',
},
onModifyAtkPriority: 1,
onModifyAtk(atk, pokemon) {
if (pokemon.baseSpecies.baseSpecies === 'Pikachu') {
return this.chainModify(2);
}
},
onModifySpAPriority: 1,
onModifySpA(spa, pokemon) {
if (pokemon.baseSpecies.baseSpecies === 'Pikachu') {
return this.chainModify(2);
}
},
itemUser: ["Pikachu", "Pikachu-Cosplay", "Pikachu-Rock-Star", "Pikachu-Belle", "Pikachu-Pop-Star", "Pikachu-PhD", "Pikachu-Libre", "Pikachu-Original", "Pikachu-Hoenn", "Pikachu-Sinnoh", "Pikachu-Unova", "Pikachu-Kalos", "Pikachu-Alola", "Pikachu-Partner", "Pikachu-Starter", "Pikachu-World"],
num: 236,
gen: 2,
},
lightclay: {
name: "Light Clay",
spritenum: 252,
fling: {
basePower: 30,
},
// implemented in the corresponding thing
num: 269,
gen: 4,
},
loadeddice: {
name: "Loaded Dice",
spritenum: 751,
fling: {
basePower: 30,
},
// partially implemented in sim/battle-actions.ts:BattleActions#hitStepMoveHitLoop
onModifyMove(move) {
if (move.multiaccuracy) {
delete move.multiaccuracy;
}
},
num: 1886,
gen: 9,
},
lopunnite: {
name: "Lopunnite",
spritenum: 626,
megaStone: "Lopunny-Mega",
megaEvolves: "Lopunny",
itemUser: ["Lopunny"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 768,
gen: 6,
isNonstandard: "Past",
},
loveball: {
name: "Love Ball",
spritenum: 258,
num: 496,
gen: 2,
isPokeball: true,
},
lovesweet: {
name: "Love Sweet",
spritenum: 705,
fling: {
basePower: 10,
},
num: 1110,
gen: 8,
},
lucarionite: {
name: "Lucarionite",
spritenum: 594,
megaStone: "Lucario-Mega",
megaEvolves: "Lucario",
itemUser: ["Lucario"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 673,
gen: 6,
isNonstandard: "Past",
},
luckypunch: {
name: "Lucky Punch",
spritenum: 261,
fling: {
basePower: 40,
},
onModifyCritRatio(critRatio, user) {
if (user.baseSpecies.name === 'Chansey') {
return critRatio + 2;
}
},
itemUser: ["Chansey"],
num: 256,
gen: 2,
isNonstandard: "Past",
},
lumberry: {
name: "Lum Berry",
spritenum: 262,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Flying",
},
onAfterSetStatusPriority: -1,
onAfterSetStatus(status, pokemon) {
pokemon.eatItem();
},
onUpdate(pokemon) {
if (pokemon.status || pokemon.volatiles['confusion']) {
pokemon.eatItem();
}
},
onEat(pokemon) {
pokemon.cureStatus();
pokemon.removeVolatile('confusion');
},
num: 157,
gen: 3,
},
luminousmoss: {
name: "Luminous Moss",
spritenum: 595,
fling: {
basePower: 30,
},
onDamagingHit(damage, target, source, move) {
if (move.type === 'Water') {
target.useItem();
}
},
boosts: {
spd: 1,
},
num: 648,
gen: 6,
},
lunaliumz: {
name: "Lunalium Z",
spritenum: 686,
onTakeItem: false,
zMove: "Menacing Moonraze Maelstrom",
zMoveFrom: "Moongeist Beam",
itemUser: ["Lunala", "Necrozma-Dawn-Wings"],
num: 922,
gen: 7,
isNonstandard: "Past",
},
lureball: {
name: "Lure Ball",
spritenum: 264,
num: 494,
gen: 2,
isPokeball: true,
},
lustrousglobe: {
name: "Lustrous Globe",
spritenum: 742,
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.num === 484 && (move.type === 'Water' || move.type === 'Dragon')) {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if (source?.baseSpecies.num === 484 || pokemon.baseSpecies.num === 484) {
return false;
}
return true;
},
forcedForme: "Palkia-Origin",
itemUser: ["Palkia-Origin"],
num: 1778,
gen: 8,
},
lustrousorb: {
name: "Lustrous Orb",
spritenum: 265,
fling: {
basePower: 60,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.num === 484 && (move.type === 'Water' || move.type === 'Dragon')) {
return this.chainModify([4915, 4096]);
}
},
itemUser: ["Palkia"],
num: 136,
gen: 4,
},
luxuryball: {
name: "Luxury Ball",
spritenum: 266,
num: 11,
gen: 3,
isPokeball: true,
},
lycaniumz: {
name: "Lycanium Z",
spritenum: 689,
onTakeItem: false,
zMove: "Splintered Stormshards",
zMoveFrom: "Stone Edge",
itemUser: ["Lycanroc", "Lycanroc-Midnight", "Lycanroc-Dusk"],
num: 925,
gen: 7,
isNonstandard: "Past",
},
machobrace: {
name: "Macho Brace",
spritenum: 269,
ignoreKlutz: true,
fling: {
basePower: 60,
},
onModifySpe(spe) {
return this.chainModify(0.5);
},
num: 215,
gen: 3,
isNonstandard: "Past",
},
magmarizer: {
name: "Magmarizer",
spritenum: 272,
fling: {
basePower: 80,
},
num: 323,
gen: 4,
},
magnet: {
name: "Magnet",
spritenum: 273,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Electric') {
return this.chainModify([4915, 4096]);
}
},
num: 242,
gen: 2,
},
magoberry: {
name: "Mago Berry",
spritenum: 274,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Ghost",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, pokemon.baseMaxhp / 3)) return false;
},
onEat(pokemon) {
this.heal(pokemon.baseMaxhp / 3);
if (pokemon.getNature().minus === 'spe') {
pokemon.addVolatile('confusion');
}
},
num: 161,
gen: 3,
},
magostberry: {
name: "Magost Berry",
spritenum: 275,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Rock",
},
onEat: false,
num: 176,
gen: 3,
isNonstandard: "Past",
},
mail: {
name: "Mail",
spritenum: 403,
onTakeItem(item, source) {
if (!this.activeMove) return false;
if (this.activeMove.id !== 'knockoff' && this.activeMove.id !== 'thief' && this.activeMove.id !== 'covet') return false;
},
num: 137,
gen: 2,
isNonstandard: "Past",
},
maliciousarmor: {
name: "Malicious Armor",
spritenum: 744,
fling: {
basePower: 30,
},
num: 1861,
gen: 9,
},
manectite: {
name: "Manectite",
spritenum: 596,
megaStone: "Manectric-Mega",
megaEvolves: "Manectric",
itemUser: ["Manectric"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 682,
gen: 6,
isNonstandard: "Past",
},
marangaberry: {
name: "Maranga Berry",
spritenum: 597,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Dark",
},
onAfterMoveSecondary(target, source, move) {
if (move.category === 'Special') {
target.eatItem();
}
},
onEat(pokemon) {
this.boost({ spd: 1 });
},
num: 688,
gen: 6,
},
marshadiumz: {
name: "Marshadium Z",
spritenum: 654,
onTakeItem: false,
zMove: "Soul-Stealing 7-Star Strike",
zMoveFrom: "Spectral Thief",
itemUser: ["Marshadow"],
num: 802,
gen: 7,
isNonstandard: "Past",
},
masterball: {
name: "Master Ball",
spritenum: 276,
num: 1,
gen: 1,
isPokeball: true,
},
masterpieceteacup: {
name: "Masterpiece Teacup",
spritenum: 757,
fling: {
basePower: 80,
},
num: 2404,
gen: 9,
},
mawilite: {
name: "Mawilite",
spritenum: 598,
megaStone: "Mawile-Mega",
megaEvolves: "Mawile",
itemUser: ["Mawile"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 681,
gen: 6,
isNonstandard: "Past",
},
meadowplate: {
name: "Meadow Plate",
spritenum: 282,
onPlate: 'Grass',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Grass') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Grass",
num: 301,
gen: 4,
},
medichamite: {
name: "Medichamite",
spritenum: 599,
megaStone: "Medicham-Mega",
megaEvolves: "Medicham",
itemUser: ["Medicham"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 665,
gen: 6,
isNonstandard: "Past",
},
mentalherb: {
name: "Mental Herb",
spritenum: 285,
fling: {
basePower: 10,
effect(pokemon) {
const conditions = ['attract', 'taunt', 'encore', 'torment', 'disable', 'healblock'];
for (const firstCondition of conditions) {
if (pokemon.volatiles[firstCondition]) {
for (const secondCondition of conditions) {
pokemon.removeVolatile(secondCondition);
if (firstCondition === 'attract' && secondCondition === 'attract') {
this.add('-end', pokemon, 'move: Attract', '[from] item: Mental Herb');
}
}
return;
}
}
},
},
onUpdate(pokemon) {
const conditions = ['attract', 'taunt', 'encore', 'torment', 'disable', 'healblock'];
for (const firstCondition of conditions) {
if (pokemon.volatiles[firstCondition]) {
if (!pokemon.useItem()) return;
for (const secondCondition of conditions) {
pokemon.removeVolatile(secondCondition);
if (firstCondition === 'attract' && secondCondition === 'attract') {
this.add('-end', pokemon, 'move: Attract', '[from] item: Mental Herb');
}
}
return;
}
}
},
num: 219,
gen: 3,
},
metagrossite: {
name: "Metagrossite",
spritenum: 618,
megaStone: "Metagross-Mega",
megaEvolves: "Metagross",
itemUser: ["Metagross"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 758,
gen: 6,
isNonstandard: "Past",
},
metalalloy: {
name: "Metal Alloy",
spritenum: 761,
num: 2482,
gen: 9,
},
metalcoat: {
name: "Metal Coat",
spritenum: 286,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Steel') {
return this.chainModify([4915, 4096]);
}
},
num: 233,
gen: 2,
},
metalpowder: {
name: "Metal Powder",
fling: {
basePower: 10,
},
spritenum: 287,
onModifyDefPriority: 2,
onModifyDef(def, pokemon) {
if (pokemon.species.name === 'Ditto' && !pokemon.transformed) {
return this.chainModify(2);
}
},
itemUser: ["Ditto"],
num: 257,
gen: 2,
isNonstandard: "Past",
},
metronome: {
name: "Metronome",
spritenum: 289,
fling: {
basePower: 30,
},
onStart(pokemon) {
pokemon.addVolatile('metronome');
},
condition: {
onStart(pokemon) {
this.effectState.lastMove = '';
this.effectState.numConsecutive = 0;
},
onTryMovePriority: -2,
onTryMove(pokemon, target, move) {
if (!pokemon.hasItem('metronome')) {
pokemon.removeVolatile('metronome');
return;
}
if (move.callsMove) return;
if (this.effectState.lastMove === move.id && pokemon.moveLastTurnResult) {
this.effectState.numConsecutive++;
} else if (pokemon.volatiles['twoturnmove']) {
if (this.effectState.lastMove !== move.id) {
this.effectState.numConsecutive = 1;
} else {
this.effectState.numConsecutive++;
}
} else {
this.effectState.numConsecutive = 0;
}
this.effectState.lastMove = move.id;
},
onModifyDamage(damage, source, target, move) {
const dmgMod = [4096, 4915, 5734, 6553, 7372, 8192];
const numConsecutive = this.effectState.numConsecutive > 5 ? 5 : this.effectState.numConsecutive;
this.debug(`Current Metronome boost: ${dmgMod[numConsecutive]}/4096`);
return this.chainModify([dmgMod[numConsecutive], 4096]);
},
},
num: 277,
gen: 4,
},
mewniumz: {
name: "Mewnium Z",
spritenum: 658,
onTakeItem: false,
zMove: "Genesis Supernova",
zMoveFrom: "Psychic",
itemUser: ["Mew"],
num: 806,
gen: 7,
isNonstandard: "Past",
},
mewtwonitex: {
name: "Mewtwonite X",
spritenum: 600,
megaStone: "Mewtwo-Mega-X",
megaEvolves: "Mewtwo",
itemUser: ["Mewtwo"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 662,
gen: 6,
isNonstandard: "Past",
},
mewtwonitey: {
name: "Mewtwonite Y",
spritenum: 601,
megaStone: "Mewtwo-Mega-Y",
megaEvolves: "Mewtwo",
itemUser: ["Mewtwo"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 663,
gen: 6,
isNonstandard: "Past",
},
micleberry: {
name: "Micle Berry",
spritenum: 290,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Rock",
},
onResidual(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
pokemon.addVolatile('micleberry');
},
condition: {
duration: 2,
onSourceAccuracy(accuracy, target, source, move) {
if (!move.ohko) {
this.add('-enditem', source, 'Micle Berry');
source.removeVolatile('micleberry');
if (typeof accuracy === 'number') {
return this.chainModify([4915, 4096]);
}
}
},
},
num: 209,
gen: 4,
},
mimikiumz: {
name: "Mimikium Z",
spritenum: 688,
onTakeItem: false,
zMove: "Let's Snuggle Forever",
zMoveFrom: "Play Rough",
itemUser: ["Mimikyu", "Mimikyu-Busted", "Mimikyu-Totem", "Mimikyu-Busted-Totem"],
num: 924,
isNonstandard: "Past",
gen: 7,
},
mindplate: {
name: "Mind Plate",
spritenum: 291,
onPlate: 'Psychic',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Psychic') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Psychic",
num: 307,
gen: 4,
},
miracleseed: {
name: "Miracle Seed",
fling: {
basePower: 30,
},
spritenum: 292,
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Grass') {
return this.chainModify([4915, 4096]);
}
},
num: 239,
gen: 2,
},
mirrorherb: {
name: "Mirror Herb",
spritenum: 748,
fling: {
basePower: 30,
},
onFoeAfterBoost(boost, target, source, effect) {
if (effect?.name === 'Opportunist' || effect?.name === 'Mirror Herb') return;
if (!this.effectState.boosts) this.effectState.boosts = {} as SparseBoostsTable;
const boostPlus = this.effectState.boosts;
let i: BoostID;
for (i in boost) {
if (boost[i]! > 0) {
boostPlus[i] = (boostPlus[i] || 0) + boost[i]!;
this.effectState.ready = true;
}
}
},
onAnySwitchInPriority: -3,
onAnySwitchIn() {
if (!this.effectState.ready || !this.effectState.boosts) return;
(this.effectState.target as Pokemon).useItem();
},
onAnyAfterMove() {
if (!this.effectState.ready || !this.effectState.boosts) return;
(this.effectState.target as Pokemon).useItem();
},
onResidualOrder: 29,
onResidual(pokemon) {
if (!this.effectState.ready || !this.effectState.boosts) return;
(this.effectState.target as Pokemon).useItem();
},
onUse(pokemon) {
this.boost(this.effectState.boosts, pokemon);
},
onEnd() {
delete this.effectState.boosts;
delete this.effectState.ready;
},
num: 1883,
gen: 9,
},
mistyseed: {
name: "Misty Seed",
spritenum: 666,
fling: {
basePower: 10,
},
onSwitchInPriority: -1,
onStart(pokemon) {
if (!pokemon.ignoringItem() && this.field.isTerrain('mistyterrain')) {
pokemon.useItem();
}
},
onTerrainChange(pokemon) {
if (this.field.isTerrain('mistyterrain')) {
pokemon.useItem();
}
},
boosts: {
spd: 1,
},
num: 883,
gen: 7,
},
moonball: {
name: "Moon Ball",
spritenum: 294,
num: 498,
gen: 2,
isPokeball: true,
},
moonstone: {
name: "Moon Stone",
spritenum: 295,
fling: {
basePower: 30,
},
num: 81,
gen: 1,
},
muscleband: {
name: "Muscle Band",
spritenum: 297,
fling: {
basePower: 10,
},
onBasePowerPriority: 16,
onBasePower(basePower, user, target, move) {
if (move.category === 'Physical') {
return this.chainModify([4505, 4096]);
}
},
num: 266,
gen: 4,
},
mysticwater: {
name: "Mystic Water",
spritenum: 300,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Water') {
return this.chainModify([4915, 4096]);
}
},
num: 243,
gen: 2,
},
nanabberry: {
name: "Nanab Berry",
spritenum: 302,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Water",
},
onEat: false,
num: 166,
gen: 3,
isNonstandard: "Past",
},
nestball: {
name: "Nest Ball",
spritenum: 303,
num: 8,
gen: 3,
isPokeball: true,
},
netball: {
name: "Net Ball",
spritenum: 304,
num: 6,
gen: 3,
isPokeball: true,
},
nevermeltice: {
name: "Never-Melt Ice",
spritenum: 305,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Ice') {
return this.chainModify([4915, 4096]);
}
},
num: 246,
gen: 2,
},
nomelberry: {
name: "Nomel Berry",
spritenum: 306,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Dragon",
},
onEat: false,
num: 178,
gen: 3,
isNonstandard: "Past",
},
normalgem: {
name: "Normal Gem",
spritenum: 307,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status' || move.flags['pledgecombo']) return;
if (move.type === 'Normal' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 564,
gen: 5,
},
normaliumz: {
name: "Normalium Z",
spritenum: 631,
onTakeItem: false,
zMove: true,
zMoveType: "Normal",
num: 776,
gen: 7,
isNonstandard: "Past",
},
occaberry: {
name: "Occa Berry",
spritenum: 311,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Fire",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Fire' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 184,
gen: 4,
},
oddincense: {
name: "Odd Incense",
spritenum: 312,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Psychic') {
return this.chainModify([4915, 4096]);
}
},
num: 314,
gen: 4,
isNonstandard: "Past",
},
oldamber: {
name: "Old Amber",
spritenum: 314,
fling: {
basePower: 100,
},
num: 103,
gen: 3,
isNonstandard: "Past",
},
oranberry: {
name: "Oran Berry",
spritenum: 319,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Poison",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 2) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, 10)) return false;
},
onEat(pokemon) {
this.heal(10);
},
num: 155,
gen: 3,
},
ovalstone: {
name: "Oval Stone",
spritenum: 321,
fling: {
basePower: 80,
},
num: 110,
gen: 4,
},
pamtreberry: {
name: "Pamtre Berry",
spritenum: 323,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Steel",
},
onEat: false,
num: 180,
gen: 3,
isNonstandard: "Past",
},
parkball: {
name: "Park Ball",
spritenum: 325,
num: 500,
gen: 4,
isPokeball: true,
isNonstandard: "Unobtainable",
},
passhoberry: {
name: "Passho Berry",
spritenum: 329,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Water",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Water' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 185,
gen: 4,
},
payapaberry: {
name: "Payapa Berry",
spritenum: 330,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Psychic",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Psychic' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 193,
gen: 4,
},
pechaberry: {
name: "Pecha Berry",
spritenum: 333,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Electric",
},
onUpdate(pokemon) {
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
pokemon.cureStatus();
}
},
num: 151,
gen: 3,
},
persimberry: {
name: "Persim Berry",
spritenum: 334,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Ground",
},
onUpdate(pokemon) {
if (pokemon.volatiles['confusion']) {
pokemon.eatItem();
}
},
onEat(pokemon) {
pokemon.removeVolatile('confusion');
},
num: 156,
gen: 3,
},
petayaberry: {
name: "Petaya Berry",
spritenum: 335,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Poison",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
this.boost({ spa: 1 });
},
num: 204,
gen: 3,
},
pidgeotite: {
name: "Pidgeotite",
spritenum: 622,
megaStone: "Pidgeot-Mega",
megaEvolves: "Pidgeot",
itemUser: ["Pidgeot"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 762,
gen: 6,
isNonstandard: "Past",
},
pikaniumz: {
name: "Pikanium Z",
spritenum: 649,
onTakeItem: false,
zMove: "Catastropika",
zMoveFrom: "Volt Tackle",
itemUser: ["Pikachu"],
num: 794,
gen: 7,
isNonstandard: "Past",
},
pikashuniumz: {
name: "Pikashunium Z",
spritenum: 659,
onTakeItem: false,
zMove: "10,000,000 Volt Thunderbolt",
zMoveFrom: "Thunderbolt",
itemUser: ["Pikachu-Original", "Pikachu-Hoenn", "Pikachu-Sinnoh", "Pikachu-Unova", "Pikachu-Kalos", "Pikachu-Alola", "Pikachu-Partner"],
num: 836,
isNonstandard: "Past",
gen: 7,
},
pinapberry: {
name: "Pinap Berry",
spritenum: 337,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Grass",
},
onEat: false,
num: 168,
gen: 3,
isNonstandard: "Past",
},
pinsirite: {
name: "Pinsirite",
spritenum: 602,
megaStone: "Pinsir-Mega",
megaEvolves: "Pinsir",
itemUser: ["Pinsir"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 671,
gen: 6,
isNonstandard: "Past",
},
pixieplate: {
name: "Pixie Plate",
spritenum: 610,
onPlate: 'Fairy',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Fairy') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Fairy",
num: 644,
gen: 6,
},
plumefossil: {
name: "Plume Fossil",
spritenum: 339,
fling: {
basePower: 100,
},
num: 573,
gen: 5,
isNonstandard: "Past",
},
poisonbarb: {
name: "Poison Barb",
spritenum: 343,
fling: {
basePower: 70,
status: 'psn',
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Poison') {
return this.chainModify([4915, 4096]);
}
},
num: 245,
gen: 2,
},
poisongem: {
name: "Poison Gem",
spritenum: 344,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Poison' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 554,
gen: 5,
isNonstandard: "Past",
},
poisonmemory: {
name: "Poison Memory",
spritenum: 670,
onMemory: 'Poison',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Poison",
itemUser: ["Silvally-Poison"],
num: 906,
gen: 7,
isNonstandard: "Past",
},
poisoniumz: {
name: "Poisonium Z",
spritenum: 638,
onPlate: 'Poison',
onTakeItem: false,
zMove: true,
zMoveType: "Poison",
forcedForme: "Arceus-Poison",
num: 783,
gen: 7,
isNonstandard: "Past",
},
pokeball: {
name: "Poke Ball",
spritenum: 345,
num: 4,
gen: 1,
isPokeball: true,
},
pomegberry: {
name: "Pomeg Berry",
spritenum: 351,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Ice",
},
onEat: false,
num: 169,
gen: 3,
},
poweranklet: {
name: "Power Anklet",
spritenum: 354,
ignoreKlutz: true,
fling: {
basePower: 70,
},
onModifySpe(spe) {
return this.chainModify(0.5);
},
num: 293,
gen: 4,
},
powerband: {
name: "Power Band",
spritenum: 355,
ignoreKlutz: true,
fling: {
basePower: 70,
},
onModifySpe(spe) {
return this.chainModify(0.5);
},
num: 292,
gen: 4,
},
powerbelt: {
name: "Power Belt",
spritenum: 356,
ignoreKlutz: true,
fling: {
basePower: 70,
},
onModifySpe(spe) {
return this.chainModify(0.5);
},
num: 290,
gen: 4,
},
powerbracer: {
name: "Power Bracer",
spritenum: 357,
ignoreKlutz: true,
fling: {
basePower: 70,
},
onModifySpe(spe) {
return this.chainModify(0.5);
},
num: 289,
gen: 4,
},
powerherb: {
onChargeMove(pokemon, target, move) {
if (pokemon.useItem()) {
this.debug('power herb - remove charge turn for ' + move.id);
this.attrLastMove('[still]');
this.addMove('-anim', pokemon, move.name, target);
return false; // skip charge turn
}
},
name: "Power Herb",
spritenum: 358,
fling: {
basePower: 10,
},
num: 271,
gen: 4,
},
powerlens: {
name: "Power Lens",
spritenum: 359,
ignoreKlutz: true,
fling: {
basePower: 70,
},
onModifySpe(spe) {
return this.chainModify(0.5);
},
num: 291,
gen: 4,
},
powerweight: {
name: "Power Weight",
spritenum: 360,
ignoreKlutz: true,
fling: {
basePower: 70,
},
onModifySpe(spe) {
return this.chainModify(0.5);
},
num: 294,
gen: 4,
},
premierball: {
name: "Premier Ball",
spritenum: 363,
num: 12,
gen: 3,
isPokeball: true,
},
primariumz: {
name: "Primarium Z",
spritenum: 652,
onTakeItem: false,
zMove: "Oceanic Operetta",
zMoveFrom: "Sparkling Aria",
itemUser: ["Primarina"],
num: 800,
gen: 7,
isNonstandard: "Past",
},
prismscale: {
name: "Prism Scale",
spritenum: 365,
fling: {
basePower: 30,
},
num: 537,
gen: 5,
},
protectivepads: {
name: "Protective Pads",
spritenum: 663,
fling: {
basePower: 30,
},
// protective effect handled in Battle#checkMoveMakesContact
num: 880,
gen: 7,
},
protector: {
name: "Protector",
spritenum: 367,
fling: {
basePower: 80,
},
num: 321,
gen: 4,
},
psychicgem: {
name: "Psychic Gem",
spritenum: 369,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Psychic' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 557,
gen: 5,
isNonstandard: "Past",
},
psychicmemory: {
name: "Psychic Memory",
spritenum: 680,
onMemory: 'Psychic',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Psychic",
itemUser: ["Silvally-Psychic"],
num: 916,
gen: 7,
isNonstandard: "Past",
},
psychicseed: {
name: "Psychic Seed",
spritenum: 665,
fling: {
basePower: 10,
},
onSwitchInPriority: -1,
onStart(pokemon) {
if (!pokemon.ignoringItem() && this.field.isTerrain('psychicterrain')) {
pokemon.useItem();
}
},
onTerrainChange(pokemon) {
if (this.field.isTerrain('psychicterrain')) {
pokemon.useItem();
}
},
boosts: {
spd: 1,
},
num: 882,
gen: 7,
},
psychiumz: {
name: "Psychium Z",
spritenum: 641,
onPlate: 'Psychic',
onTakeItem: false,
zMove: true,
zMoveType: "Psychic",
forcedForme: "Arceus-Psychic",
num: 786,
gen: 7,
isNonstandard: "Past",
},
punchingglove: {
name: "Punching Glove",
spritenum: 749,
fling: {
basePower: 30,
},
onBasePowerPriority: 23,
onBasePower(basePower, attacker, defender, move) {
if (move.flags['punch']) {
this.debug('Punching Glove boost');
return this.chainModify([4506, 4096]);
}
},
onModifyMovePriority: 1,
onModifyMove(move) {
if (move.flags['punch']) delete move.flags['contact'];
},
num: 1884,
gen: 9,
},
qualotberry: {
name: "Qualot Berry",
spritenum: 371,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Poison",
},
onEat: false,
num: 171,
gen: 3,
},
quickball: {
name: "Quick Ball",
spritenum: 372,
num: 15,
gen: 4,
isPokeball: true,
},
quickclaw: {
onFractionalPriorityPriority: -2,
onFractionalPriority(priority, pokemon, target, move) {
if (move.category === "Status" && pokemon.hasAbility("myceliummight")) return;
if (priority <= 0 && this.randomChance(1, 5)) {
this.add('-activate', pokemon, 'item: Quick Claw');
return 0.1;
}
},
name: "Quick Claw",
spritenum: 373,
fling: {
basePower: 80,
},
num: 217,
gen: 2,
},
quickpowder: {
name: "Quick Powder",
spritenum: 374,
fling: {
basePower: 10,
},
onModifySpe(spe, pokemon) {
if (pokemon.species.name === 'Ditto' && !pokemon.transformed) {
return this.chainModify(2);
}
},
itemUser: ["Ditto"],
num: 274,
gen: 4,
isNonstandard: "Past",
},
rabutaberry: {
name: "Rabuta Berry",
spritenum: 375,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Ghost",
},
onEat: false,
num: 177,
gen: 3,
isNonstandard: "Past",
},
rarebone: {
name: "Rare Bone",
spritenum: 379,
fling: {
basePower: 100,
},
num: 106,
gen: 4,
},
rawstberry: {
name: "Rawst Berry",
spritenum: 381,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Grass",
},
onUpdate(pokemon) {
if (pokemon.status === 'brn') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'brn') {
pokemon.cureStatus();
}
},
num: 152,
gen: 3,
},
razorclaw: {
name: "Razor Claw",
spritenum: 382,
fling: {
basePower: 80,
},
onModifyCritRatio(critRatio) {
return critRatio + 1;
},
num: 326,
gen: 4,
},
razorfang: {
name: "Razor Fang",
spritenum: 383,
fling: {
basePower: 30,
volatileStatus: 'flinch',
},
onModifyMovePriority: -1,
onModifyMove(move) {
if (move.category !== "Status") {
if (!move.secondaries) move.secondaries = [];
for (const secondary of move.secondaries) {
if (secondary.volatileStatus === 'flinch') return;
}
move.secondaries.push({
chance: 10,
volatileStatus: 'flinch',
});
}
},
num: 327,
gen: 4,
},
razzberry: {
name: "Razz Berry",
spritenum: 384,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Steel",
},
onEat: false,
num: 164,
gen: 3,
isNonstandard: "Past",
},
reapercloth: {
name: "Reaper Cloth",
spritenum: 385,
fling: {
basePower: 10,
},
num: 325,
gen: 4,
},
redcard: {
name: "Red Card",
spritenum: 387,
fling: {
basePower: 10,
},
onAfterMoveSecondary(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;
}
// The item is used up even against a pokemon with Ingrain or that otherwise can't be forced out
if (target.useItem(source)) {
if (this.runEvent('DragOut', source, target, move)) {
source.forceSwitchFlag = true;
}
}
}
},
num: 542,
gen: 5,
},
redorb: {
name: "Red Orb",
spritenum: 390,
onSwitchInPriority: -1,
onSwitchIn(pokemon) {
if (pokemon.isActive && pokemon.baseSpecies.name === 'Groudon' && !pokemon.transformed) {
pokemon.formeChange('Groudon-Primal', this.effect, true);
}
},
onTakeItem(item, source) {
if (source.baseSpecies.baseSpecies === 'Groudon') return false;
return true;
},
itemUser: ["Groudon"],
isPrimalOrb: true,
num: 534,
gen: 6,
isNonstandard: "Past",
},
repeatball: {
name: "Repeat Ball",
spritenum: 401,
num: 9,
gen: 3,
isPokeball: true,
},
ribbonsweet: {
name: "Ribbon Sweet",
spritenum: 710,
fling: {
basePower: 10,
},
num: 1115,
gen: 8,
},
rindoberry: {
name: "Rindo Berry",
spritenum: 409,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Grass",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Grass' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 187,
gen: 4,
},
ringtarget: {
name: "Ring Target",
spritenum: 410,
fling: {
basePower: 10,
},
onNegateImmunity: false,
num: 543,
gen: 5,
},
rockgem: {
name: "Rock Gem",
spritenum: 415,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Rock' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 559,
gen: 5,
isNonstandard: "Past",
},
rockincense: {
name: "Rock Incense",
spritenum: 416,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Rock') {
return this.chainModify([4915, 4096]);
}
},
num: 315,
gen: 4,
isNonstandard: "Past",
},
rockmemory: {
name: "Rock Memory",
spritenum: 672,
onMemory: 'Rock',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Rock",
itemUser: ["Silvally-Rock"],
num: 908,
gen: 7,
isNonstandard: "Past",
},
rockiumz: {
name: "Rockium Z",
spritenum: 643,
onPlate: 'Rock',
onTakeItem: false,
zMove: true,
zMoveType: "Rock",
forcedForme: "Arceus-Rock",
num: 788,
gen: 7,
isNonstandard: "Past",
},
rockyhelmet: {
name: "Rocky Helmet",
spritenum: 417,
fling: {
basePower: 60,
},
onDamagingHitOrder: 2,
onDamagingHit(damage, target, source, move) {
if (this.checkMoveMakesContact(move, source, target)) {
this.damage(source.baseMaxhp / 6, source, target);
}
},
num: 540,
gen: 5,
},
roomservice: {
name: "Room Service",
spritenum: 717,
fling: {
basePower: 100,
},
onSwitchInPriority: -1,
onStart(pokemon) {
if (!pokemon.ignoringItem() && this.field.getPseudoWeather('trickroom')) {
pokemon.useItem();
}
},
onAnyPseudoWeatherChange() {
const pokemon = this.effectState.target;
if (this.field.getPseudoWeather('trickroom')) {
pokemon.useItem(pokemon);
}
},
boosts: {
spe: -1,
},
num: 1122,
gen: 8,
},
rootfossil: {
name: "Root Fossil",
spritenum: 418,
fling: {
basePower: 100,
},
num: 99,
gen: 3,
isNonstandard: "Past",
},
roseincense: {
name: "Rose Incense",
spritenum: 419,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Grass') {
return this.chainModify([4915, 4096]);
}
},
num: 318,
gen: 4,
isNonstandard: "Past",
},
roseliberry: {
name: "Roseli Berry",
spritenum: 603,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Fairy",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Fairy' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 686,
gen: 6,
},
rowapberry: {
name: "Rowap Berry",
spritenum: 420,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Dark",
},
onDamagingHit(damage, target, source, move) {
if (move.category === 'Special' && source.hp && source.isActive && !source.hasAbility('magicguard')) {
if (target.eatItem()) {
this.damage(source.baseMaxhp / (target.hasAbility('ripen') ? 4 : 8), source, target);
}
}
},
onEat() { },
num: 212,
gen: 4,
},
rustedshield: {
name: "Rusted Shield",
spritenum: 699,
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 889) || pokemon.baseSpecies.num === 889) {
return false;
}
return true;
},
itemUser: ["Zamazenta-Crowned"],
num: 1104,
gen: 8,
},
rustedsword: {
name: "Rusted Sword",
spritenum: 698,
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 888) || pokemon.baseSpecies.num === 888) {
return false;
}
return true;
},
itemUser: ["Zacian-Crowned"],
num: 1103,
gen: 8,
},
sablenite: {
name: "Sablenite",
spritenum: 614,
megaStone: "Sableye-Mega",
megaEvolves: "Sableye",
itemUser: ["Sableye"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 754,
gen: 6,
isNonstandard: "Past",
},
sachet: {
name: "Sachet",
spritenum: 691,
fling: {
basePower: 80,
},
num: 647,
gen: 6,
isNonstandard: "Past",
},
safariball: {
name: "Safari Ball",
spritenum: 425,
num: 5,
gen: 1,
isPokeball: true,
},
safetygoggles: {
name: "Safety Goggles",
spritenum: 604,
fling: {
basePower: 80,
},
onImmunity(type, pokemon) {
if (type === 'sandstorm' || type === 'hail' || type === 'powder') return false;
},
onTryHit(pokemon, source, move) {
if (move.flags['powder'] && pokemon !== source && this.dex.getImmunity('powder', pokemon)) {
this.add('-activate', pokemon, 'item: Safety Goggles', move.name);
return null;
}
},
num: 650,
gen: 6,
},
sailfossil: {
name: "Sail Fossil",
spritenum: 695,
fling: {
basePower: 100,
},
num: 711,
gen: 6,
isNonstandard: "Past",
},
salacberry: {
name: "Salac Berry",
spritenum: 426,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Fighting",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
this.boost({ spe: 1 });
},
num: 203,
gen: 3,
},
salamencite: {
name: "Salamencite",
spritenum: 627,
megaStone: "Salamence-Mega",
megaEvolves: "Salamence",
itemUser: ["Salamence"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 769,
gen: 6,
isNonstandard: "Past",
},
sceptilite: {
name: "Sceptilite",
spritenum: 613,
megaStone: "Sceptile-Mega",
megaEvolves: "Sceptile",
itemUser: ["Sceptile"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 753,
gen: 6,
isNonstandard: "Past",
},
scizorite: {
name: "Scizorite",
spritenum: 605,
megaStone: "Scizor-Mega",
megaEvolves: "Scizor",
itemUser: ["Scizor"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 670,
gen: 6,
isNonstandard: "Past",
},
scopelens: {
name: "Scope Lens",
spritenum: 429,
fling: {
basePower: 30,
},
onModifyCritRatio(critRatio) {
return critRatio + 1;
},
num: 232,
gen: 2,
},
seaincense: {
name: "Sea Incense",
spritenum: 430,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Water') {
return this.chainModify([4915, 4096]);
}
},
num: 254,
gen: 3,
isNonstandard: "Past",
},
sharpbeak: {
name: "Sharp Beak",
spritenum: 436,
fling: {
basePower: 50,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move && move.type === 'Flying') {
return this.chainModify([4915, 4096]);
}
},
num: 244,
gen: 2,
},
sharpedonite: {
name: "Sharpedonite",
spritenum: 619,
megaStone: "Sharpedo-Mega",
megaEvolves: "Sharpedo",
itemUser: ["Sharpedo"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 759,
gen: 6,
isNonstandard: "Past",
},
shedshell: {
name: "Shed Shell",
spritenum: 437,
fling: {
basePower: 10,
},
onTrapPokemonPriority: -10,
onTrapPokemon(pokemon) {
pokemon.trapped = pokemon.maybeTrapped = false;
},
num: 295,
gen: 4,
},
shellbell: {
name: "Shell Bell",
spritenum: 438,
fling: {
basePower: 30,
},
onAfterMoveSecondarySelfPriority: -1,
onAfterMoveSecondarySelf(pokemon, target, move) {
if (move.totalDamage && !pokemon.forceSwitchFlag) {
this.heal(move.totalDamage / 8, pokemon);
}
},
num: 253,
gen: 3,
},
shinystone: {
name: "Shiny Stone",
spritenum: 439,
fling: {
basePower: 80,
},
num: 107,
gen: 4,
},
shockdrive: {
name: "Shock Drive",
spritenum: 442,
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 649) || pokemon.baseSpecies.num === 649) {
return false;
}
return true;
},
onDrive: 'Electric',
forcedForme: "Genesect-Shock",
itemUser: ["Genesect-Shock"],
num: 117,
gen: 5,
isNonstandard: "Past",
},
shucaberry: {
name: "Shuca Berry",
spritenum: 443,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Ground",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Ground' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 191,
gen: 4,
},
silkscarf: {
name: "Silk Scarf",
spritenum: 444,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Normal') {
return this.chainModify([4915, 4096]);
}
},
num: 251,
gen: 3,
},
silverpowder: {
name: "Silver Powder",
spritenum: 447,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Bug') {
return this.chainModify([4915, 4096]);
}
},
num: 222,
gen: 2,
},
sitrusberry: {
name: "Sitrus Berry",
spritenum: 448,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Psychic",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 2) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, pokemon.baseMaxhp / 4)) return false;
},
onEat(pokemon) {
this.heal(pokemon.baseMaxhp / 4);
},
num: 158,
gen: 3,
},
skullfossil: {
name: "Skull Fossil",
spritenum: 449,
fling: {
basePower: 100,
},
num: 105,
gen: 4,
isNonstandard: "Past",
},
skyplate: {
name: "Sky Plate",
spritenum: 450,
onPlate: 'Flying',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Flying') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Flying",
num: 306,
gen: 4,
},
slowbronite: {
name: "Slowbronite",
spritenum: 620,
megaStone: "Slowbro-Mega",
megaEvolves: "Slowbro",
itemUser: ["Slowbro"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 760,
gen: 6,
isNonstandard: "Past",
},
smoothrock: {
name: "Smooth Rock",
spritenum: 453,
fling: {
basePower: 10,
},
num: 283,
gen: 4,
},
snorliumz: {
name: "Snorlium Z",
spritenum: 656,
onTakeItem: false,
zMove: "Pulverizing Pancake",
zMoveFrom: "Giga Impact",
itemUser: ["Snorlax"],
num: 804,
gen: 7,
isNonstandard: "Past",
},
snowball: {
name: "Snowball",
spritenum: 606,
fling: {
basePower: 30,
},
onDamagingHit(damage, target, source, move) {
if (move.type === 'Ice') {
target.useItem();
}
},
boosts: {
atk: 1,
},
num: 649,
gen: 6,
},
softsand: {
name: "Soft Sand",
spritenum: 456,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Ground') {
return this.chainModify([4915, 4096]);
}
},
num: 237,
gen: 2,
},
solganiumz: {
name: "Solganium Z",
spritenum: 685,
onTakeItem: false,
zMove: "Searing Sunraze Smash",
zMoveFrom: "Sunsteel Strike",
itemUser: ["Solgaleo", "Necrozma-Dusk-Mane"],
num: 921,
gen: 7,
isNonstandard: "Past",
},
souldew: {
name: "Soul Dew",
spritenum: 459,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (
move && (user.baseSpecies.num === 380 || user.baseSpecies.num === 381) &&
(move.type === 'Psychic' || move.type === 'Dragon')
) {
return this.chainModify([4915, 4096]);
}
},
itemUser: ["Latios", "Latias"],
num: 225,
gen: 3,
},
spelltag: {
name: "Spell Tag",
spritenum: 461,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Ghost') {
return this.chainModify([4915, 4096]);
}
},
num: 247,
gen: 2,
},
spelonberry: {
name: "Spelon Berry",
spritenum: 462,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Dark",
},
onEat: false,
num: 179,
gen: 3,
isNonstandard: "Past",
},
splashplate: {
name: "Splash Plate",
spritenum: 463,
onPlate: 'Water',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Water') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Water",
num: 299,
gen: 4,
},
spookyplate: {
name: "Spooky Plate",
spritenum: 464,
onPlate: 'Ghost',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Ghost') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Ghost",
num: 310,
gen: 4,
},
sportball: {
name: "Sport Ball",
spritenum: 465,
num: 499,
gen: 2,
isPokeball: true,
},
starfberry: {
name: "Starf Berry",
spritenum: 472,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Psychic",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onEat(pokemon) {
const stats: BoostID[] = [];
let stat: BoostID;
for (stat in pokemon.boosts) {
if (stat !== 'accuracy' && stat !== 'evasion' && pokemon.boosts[stat] < 6) {
stats.push(stat);
}
}
if (stats.length) {
const randomStat = this.sample(stats);
const boost: SparseBoostsTable = {};
boost[randomStat] = 2;
this.boost(boost);
}
},
num: 207,
gen: 3,
},
starsweet: {
name: "Star Sweet",
spritenum: 709,
fling: {
basePower: 10,
},
num: 1114,
gen: 8,
},
steelixite: {
name: "Steelixite",
spritenum: 621,
megaStone: "Steelix-Mega",
megaEvolves: "Steelix",
itemUser: ["Steelix"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 761,
gen: 6,
isNonstandard: "Past",
},
steelgem: {
name: "Steel Gem",
spritenum: 473,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status') return;
if (move.type === 'Steel' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 563,
gen: 5,
isNonstandard: "Past",
},
steelmemory: {
name: "Steel Memory",
spritenum: 675,
onMemory: 'Steel',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Steel",
itemUser: ["Silvally-Steel"],
num: 911,
gen: 7,
isNonstandard: "Past",
},
steeliumz: {
name: "Steelium Z",
spritenum: 647,
onPlate: 'Steel',
onTakeItem: false,
zMove: true,
zMoveType: "Steel",
forcedForme: "Arceus-Steel",
num: 792,
gen: 7,
isNonstandard: "Past",
},
stick: {
name: "Stick",
fling: {
basePower: 60,
},
spritenum: 475,
onModifyCritRatio(critRatio, user) {
if (this.toID(user.baseSpecies.baseSpecies) === 'farfetchd') {
return critRatio + 2;
}
},
itemUser: ["Farfetch\u2019d"],
num: 259,
gen: 2,
isNonstandard: "Past",
},
stickybarb: {
name: "Sticky Barb",
spritenum: 476,
fling: {
basePower: 80,
},
onResidualOrder: 28,
onResidualSubOrder: 3,
onResidual(pokemon) {
this.damage(pokemon.baseMaxhp / 8);
},
onHit(target, source, move) {
if (source && source !== target && !source.item && move && this.checkMoveMakesContact(move, source, target)) {
const barb = target.takeItem();
if (!barb) return; // Gen 4 Multitype
source.setItem(barb);
// no message for Sticky Barb changing hands
}
},
num: 288,
gen: 4,
},
stoneplate: {
name: "Stone Plate",
spritenum: 477,
onPlate: 'Rock',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Rock') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Rock",
num: 309,
gen: 4,
},
strangeball: {
name: "Strange Ball",
spritenum: 308,
num: 1785,
gen: 8,
isPokeball: true,
isNonstandard: "Unobtainable",
},
strawberrysweet: {
name: "Strawberry Sweet",
spritenum: 704,
fling: {
basePower: 10,
},
num: 1109,
gen: 8,
},
sunstone: {
name: "Sun Stone",
spritenum: 480,
fling: {
basePower: 30,
},
num: 80,
gen: 2,
},
swampertite: {
name: "Swampertite",
spritenum: 612,
megaStone: "Swampert-Mega",
megaEvolves: "Swampert",
itemUser: ["Swampert"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 752,
gen: 6,
isNonstandard: "Past",
},
sweetapple: {
name: "Sweet Apple",
spritenum: 711,
fling: {
basePower: 30,
},
num: 1116,
gen: 8,
},
syrupyapple: {
name: "Syrupy Apple",
spritenum: 755,
fling: {
basePower: 30,
},
num: 2402,
gen: 9,
},
tamatoberry: {
name: "Tamato Berry",
spritenum: 486,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Psychic",
},
onEat: false,
num: 174,
gen: 3,
},
tangaberry: {
name: "Tanga Berry",
spritenum: 487,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Bug",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Bug' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 194,
gen: 4,
},
tapuniumz: {
name: "Tapunium Z",
spritenum: 653,
onTakeItem: false,
zMove: "Guardian of Alola",
zMoveFrom: "Nature's Madness",
itemUser: ["Tapu Koko", "Tapu Lele", "Tapu Bulu", "Tapu Fini"],
num: 801,
gen: 7,
isNonstandard: "Past",
},
tartapple: {
name: "Tart Apple",
spritenum: 712,
fling: {
basePower: 30,
},
num: 1117,
gen: 8,
},
terrainextender: {
name: "Terrain Extender",
spritenum: 662,
fling: {
basePower: 60,
},
num: 879,
gen: 7,
},
thickclub: {
name: "Thick Club",
spritenum: 491,
fling: {
basePower: 90,
},
onModifyAtkPriority: 1,
onModifyAtk(atk, pokemon) {
if (pokemon.baseSpecies.baseSpecies === 'Cubone' || pokemon.baseSpecies.baseSpecies === 'Marowak') {
return this.chainModify(2);
}
},
itemUser: ["Marowak", "Marowak-Alola", "Marowak-Alola-Totem", "Cubone"],
num: 258,
gen: 2,
isNonstandard: "Past",
},
throatspray: {
name: "Throat Spray",
spritenum: 713,
fling: {
basePower: 30,
},
onAfterMoveSecondarySelf(target, source, move) {
if (move.flags['sound']) {
target.useItem();
}
},
boosts: {
spa: 1,
},
num: 1118,
gen: 8,
},
thunderstone: {
name: "Thunder Stone",
spritenum: 492,
fling: {
basePower: 30,
},
num: 83,
gen: 1,
},
timerball: {
name: "Timer Ball",
spritenum: 494,
num: 10,
gen: 3,
isPokeball: true,
},
toxicorb: {
name: "Toxic Orb",
spritenum: 515,
fling: {
basePower: 30,
status: 'tox',
},
onResidualOrder: 28,
onResidualSubOrder: 3,
onResidual(pokemon) {
pokemon.trySetStatus('tox', pokemon);
},
num: 272,
gen: 4,
},
toxicplate: {
name: "Toxic Plate",
spritenum: 516,
onPlate: 'Poison',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Poison') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Poison",
num: 304,
gen: 4,
},
tr00: {
name: "TR00",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1130,
gen: 8,
isNonstandard: "Past",
},
tr01: {
name: "TR01",
fling: {
basePower: 85,
},
spritenum: 721,
num: 1131,
gen: 8,
isNonstandard: "Past",
},
tr02: {
name: "TR02",
fling: {
basePower: 90,
},
spritenum: 730,
num: 1132,
gen: 8,
isNonstandard: "Past",
},
tr03: {
name: "TR03",
fling: {
basePower: 110,
},
spritenum: 731,
num: 1133,
gen: 8,
isNonstandard: "Past",
},
tr04: {
name: "TR04",
fling: {
basePower: 90,
},
spritenum: 731,
num: 1134,
gen: 8,
isNonstandard: "Past",
},
tr05: {
name: "TR05",
fling: {
basePower: 90,
},
spritenum: 735,
num: 1135,
gen: 8,
isNonstandard: "Past",
},
tr06: {
name: "TR06",
fling: {
basePower: 110,
},
spritenum: 735,
num: 1136,
gen: 8,
isNonstandard: "Past",
},
tr07: {
name: "TR07",
fling: {
basePower: 10,
},
spritenum: 722,
num: 1137,
gen: 8,
isNonstandard: "Past",
},
tr08: {
name: "TR08",
fling: {
basePower: 90,
},
spritenum: 733,
num: 1138,
gen: 8,
isNonstandard: "Past",
},
tr09: {
name: "TR09",
fling: {
basePower: 110,
},
spritenum: 733,
num: 1139,
gen: 8,
isNonstandard: "Past",
},
tr10: {
name: "TR10",
fling: {
basePower: 100,
},
spritenum: 725,
num: 1140,
gen: 8,
isNonstandard: "Past",
},
tr11: {
name: "TR11",
fling: {
basePower: 90,
},
spritenum: 734,
num: 1141,
gen: 8,
isNonstandard: "Past",
},
tr12: {
name: "TR12",
fling: {
basePower: 10,
},
spritenum: 734,
num: 1142,
gen: 8,
isNonstandard: "Past",
},
tr13: {
name: "TR13",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1143,
gen: 8,
isNonstandard: "Past",
},
tr14: {
name: "TR14",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1144,
gen: 8,
isNonstandard: "Past",
},
tr15: {
name: "TR15",
fling: {
basePower: 110,
},
spritenum: 730,
num: 1145,
gen: 8,
isNonstandard: "Past",
},
tr16: {
name: "TR16",
fling: {
basePower: 80,
},
spritenum: 731,
num: 1146,
gen: 8,
isNonstandard: "Past",
},
tr17: {
name: "TR17",
fling: {
basePower: 10,
},
spritenum: 734,
num: 1147,
gen: 8,
isNonstandard: "Past",
},
tr18: {
name: "TR18",
fling: {
basePower: 80,
},
spritenum: 727,
num: 1148,
gen: 8,
isNonstandard: "Past",
},
tr19: {
name: "TR19",
fling: {
basePower: 80,
},
spritenum: 721,
num: 1149,
gen: 8,
isNonstandard: "Past",
},
tr20: {
name: "TR20",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1150,
gen: 8,
isNonstandard: "Past",
},
tr21: {
name: "TR21",
fling: {
basePower: 10,
},
spritenum: 722,
num: 1151,
gen: 8,
isNonstandard: "Past",
},
tr22: {
name: "TR22",
fling: {
basePower: 90,
},
spritenum: 724,
num: 1152,
gen: 8,
isNonstandard: "Past",
},
tr23: {
name: "TR23",
fling: {
basePower: 10,
},
spritenum: 725,
num: 1153,
gen: 8,
isNonstandard: "Past",
},
tr24: {
name: "TR24",
fling: {
basePower: 120,
},
spritenum: 736,
num: 1154,
gen: 8,
isNonstandard: "Past",
},
tr25: {
name: "TR25",
fling: {
basePower: 80,
},
spritenum: 734,
num: 1155,
gen: 8,
isNonstandard: "Past",
},
tr26: {
name: "TR26",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1156,
gen: 8,
isNonstandard: "Past",
},
tr27: {
name: "TR27",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1157,
gen: 8,
isNonstandard: "Past",
},
tr28: {
name: "TR28",
fling: {
basePower: 120,
},
spritenum: 727,
num: 1158,
gen: 8,
isNonstandard: "Past",
},
tr29: {
name: "TR29",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1159,
gen: 8,
isNonstandard: "Past",
},
tr30: {
name: "TR30",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1160,
gen: 8,
isNonstandard: "Past",
},
tr31: {
name: "TR31",
fling: {
basePower: 100,
},
spritenum: 729,
num: 1161,
gen: 8,
isNonstandard: "Past",
},
tr32: {
name: "TR32",
fling: {
basePower: 80,
},
spritenum: 737,
num: 1162,
gen: 8,
isNonstandard: "Past",
},
tr33: {
name: "TR33",
fling: {
basePower: 80,
},
spritenum: 728,
num: 1163,
gen: 8,
isNonstandard: "Past",
},
tr34: {
name: "TR34",
fling: {
basePower: 120,
},
spritenum: 734,
num: 1164,
gen: 8,
isNonstandard: "Past",
},
tr35: {
name: "TR35",
fling: {
basePower: 90,
},
spritenum: 721,
num: 1165,
gen: 8,
isNonstandard: "Past",
},
tr36: {
name: "TR36",
fling: {
basePower: 95,
},
spritenum: 730,
num: 1166,
gen: 8,
isNonstandard: "Past",
},
tr37: {
name: "TR37",
fling: {
basePower: 10,
},
spritenum: 737,
num: 1167,
gen: 8,
isNonstandard: "Past",
},
tr38: {
name: "TR38",
fling: {
basePower: 10,
},
spritenum: 734,
num: 1168,
gen: 8,
isNonstandard: "Past",
},
tr39: {
name: "TR39",
fling: {
basePower: 120,
},
spritenum: 722,
num: 1169,
gen: 8,
isNonstandard: "Past",
},
tr40: {
name: "TR40",
fling: {
basePower: 10,
},
spritenum: 734,
num: 1170,
gen: 8,
isNonstandard: "Past",
},
tr41: {
name: "TR41",
fling: {
basePower: 85,
},
spritenum: 730,
num: 1171,
gen: 8,
isNonstandard: "Past",
},
tr42: {
name: "TR42",
fling: {
basePower: 90,
},
spritenum: 721,
num: 1172,
gen: 8,
isNonstandard: "Past",
},
tr43: {
name: "TR43",
fling: {
basePower: 130,
},
spritenum: 730,
num: 1173,
gen: 8,
isNonstandard: "Past",
},
tr44: {
name: "TR44",
fling: {
basePower: 10,
},
spritenum: 734,
num: 1174,
gen: 8,
isNonstandard: "Past",
},
tr45: {
name: "TR45",
fling: {
basePower: 90,
},
spritenum: 731,
num: 1175,
gen: 8,
isNonstandard: "Past",
},
tr46: {
name: "TR46",
fling: {
basePower: 10,
},
spritenum: 729,
num: 1176,
gen: 8,
isNonstandard: "Past",
},
tr47: {
name: "TR47",
fling: {
basePower: 80,
},
spritenum: 736,
num: 1177,
gen: 8,
isNonstandard: "Past",
},
tr48: {
name: "TR48",
fling: {
basePower: 10,
},
spritenum: 722,
num: 1178,
gen: 8,
isNonstandard: "Past",
},
tr49: {
name: "TR49",
fling: {
basePower: 10,
},
spritenum: 734,
num: 1179,
gen: 8,
isNonstandard: "Past",
},
tr50: {
name: "TR50",
fling: {
basePower: 90,
},
spritenum: 732,
num: 1180,
gen: 8,
isNonstandard: "Past",
},
tr51: {
name: "TR51",
fling: {
basePower: 10,
},
spritenum: 736,
num: 1181,
gen: 8,
isNonstandard: "Past",
},
tr52: {
name: "TR52",
fling: {
basePower: 10,
},
spritenum: 729,
num: 1182,
gen: 8,
isNonstandard: "Past",
},
tr53: {
name: "TR53",
fling: {
basePower: 120,
},
spritenum: 722,
num: 1183,
gen: 8,
isNonstandard: "Past",
},
tr54: {
name: "TR54",
fling: {
basePower: 10,
},
spritenum: 724,
num: 1184,
gen: 8,
isNonstandard: "Past",
},
tr55: {
name: "TR55",
fling: {
basePower: 120,
},
spritenum: 730,
num: 1185,
gen: 8,
isNonstandard: "Past",
},
tr56: {
name: "TR56",
fling: {
basePower: 80,
},
spritenum: 722,
num: 1186,
gen: 8,
isNonstandard: "Past",
},
tr57: {
name: "TR57",
fling: {
basePower: 80,
},
spritenum: 724,
num: 1187,
gen: 8,
isNonstandard: "Past",
},
tr58: {
name: "TR58",
fling: {
basePower: 80,
},
spritenum: 737,
num: 1188,
gen: 8,
isNonstandard: "Past",
},
tr59: {
name: "TR59",
fling: {
basePower: 80,
},
spritenum: 732,
num: 1189,
gen: 8,
isNonstandard: "Past",
},
tr60: {
name: "TR60",
fling: {
basePower: 80,
},
spritenum: 727,
num: 1190,
gen: 8,
isNonstandard: "Past",
},
tr61: {
name: "TR61",
fling: {
basePower: 90,
},
spritenum: 727,
num: 1191,
gen: 8,
isNonstandard: "Past",
},
tr62: {
name: "TR62",
fling: {
basePower: 85,
},
spritenum: 736,
num: 1192,
gen: 8,
isNonstandard: "Past",
},
tr63: {
name: "TR63",
fling: {
basePower: 80,
},
spritenum: 726,
num: 1193,
gen: 8,
isNonstandard: "Past",
},
tr64: {
name: "TR64",
fling: {
basePower: 120,
},
spritenum: 722,
num: 1194,
gen: 8,
isNonstandard: "Past",
},
tr65: {
name: "TR65",
fling: {
basePower: 90,
},
spritenum: 732,
num: 1195,
gen: 8,
isNonstandard: "Past",
},
tr66: {
name: "TR66",
fling: {
basePower: 120,
},
spritenum: 723,
num: 1196,
gen: 8,
isNonstandard: "Past",
},
tr67: {
name: "TR67",
fling: {
basePower: 90,
},
spritenum: 725,
num: 1197,
gen: 8,
isNonstandard: "Past",
},
tr68: {
name: "TR68",
fling: {
basePower: 10,
},
spritenum: 737,
num: 1198,
gen: 8,
isNonstandard: "Past",
},
tr69: {
name: "TR69",
fling: {
basePower: 80,
},
spritenum: 734,
num: 1199,
gen: 8,
isNonstandard: "Past",
},
tr70: {
name: "TR70",
fling: {
basePower: 80,
},
spritenum: 729,
num: 1200,
gen: 8,
isNonstandard: "Past",
},
tr71: {
name: "TR71",
fling: {
basePower: 130,
},
spritenum: 732,
num: 1201,
gen: 8,
isNonstandard: "Past",
},
tr72: {
name: "TR72",
fling: {
basePower: 120,
},
spritenum: 732,
num: 1202,
gen: 8,
isNonstandard: "Past",
},
tr73: {
name: "TR73",
fling: {
basePower: 120,
},
spritenum: 724,
num: 1203,
gen: 8,
isNonstandard: "Past",
},
tr74: {
name: "TR74",
fling: {
basePower: 80,
},
spritenum: 729,
num: 1204,
gen: 8,
isNonstandard: "Past",
},
tr75: {
name: "TR75",
fling: {
basePower: 100,
},
spritenum: 726,
num: 1205,
gen: 8,
isNonstandard: "Past",
},
tr76: {
name: "TR76",
fling: {
basePower: 10,
},
spritenum: 726,
num: 1206,
gen: 8,
isNonstandard: "Past",
},
tr77: {
name: "TR77",
fling: {
basePower: 10,
},
spritenum: 732,
num: 1207,
gen: 8,
isNonstandard: "Past",
},
tr78: {
name: "TR78",
fling: {
basePower: 95,
},
spritenum: 724,
num: 1208,
gen: 8,
isNonstandard: "Past",
},
tr79: {
name: "TR79",
fling: {
basePower: 10,
},
spritenum: 729,
num: 1209,
gen: 8,
isNonstandard: "Past",
},
tr80: {
name: "TR80",
fling: {
basePower: 10,
},
spritenum: 733,
num: 1210,
gen: 8,
isNonstandard: "Past",
},
tr81: {
name: "TR81",
fling: {
basePower: 95,
},
spritenum: 737,
num: 1211,
gen: 8,
isNonstandard: "Past",
},
tr82: {
name: "TR82",
fling: {
basePower: 20,
},
spritenum: 734,
num: 1212,
gen: 8,
isNonstandard: "Past",
},
tr83: {
name: "TR83",
fling: {
basePower: 10,
},
spritenum: 734,
num: 1213,
gen: 8,
isNonstandard: "Past",
},
tr84: {
name: "TR84",
fling: {
basePower: 80,
},
spritenum: 731,
num: 1214,
gen: 8,
isNonstandard: "Past",
},
tr85: {
name: "TR85",
fling: {
basePower: 10,
},
spritenum: 721,
num: 1215,
gen: 8,
isNonstandard: "Past",
},
tr86: {
name: "TR86",
fling: {
basePower: 90,
},
spritenum: 733,
num: 1216,
gen: 8,
isNonstandard: "Past",
},
tr87: {
name: "TR87",
fling: {
basePower: 80,
},
spritenum: 725,
num: 1217,
gen: 8,
isNonstandard: "Past",
},
tr88: {
name: "TR88",
fling: {
basePower: 10,
},
spritenum: 730,
num: 1218,
gen: 8,
isNonstandard: "Past",
},
tr89: {
name: "TR89",
fling: {
basePower: 110,
},
spritenum: 723,
num: 1219,
gen: 8,
isNonstandard: "Past",
},
tr90: {
name: "TR90",
fling: {
basePower: 90,
},
spritenum: 738,
num: 1220,
gen: 8,
isNonstandard: "Past",
},
tr91: {
name: "TR91",
fling: {
basePower: 10,
},
spritenum: 724,
num: 1221,
gen: 8,
isNonstandard: "Past",
},
tr92: {
name: "TR92",
fling: {
basePower: 80,
},
spritenum: 738,
num: 1222,
gen: 8,
isNonstandard: "Past",
},
tr93: {
name: "TR93",
fling: {
basePower: 85,
},
spritenum: 737,
num: 1223,
gen: 8,
isNonstandard: "Past",
},
tr94: {
name: "TR94",
fling: {
basePower: 95,
},
spritenum: 725,
num: 1224,
gen: 8,
isNonstandard: "Past",
},
tr95: {
name: "TR95",
fling: {
basePower: 80,
},
spritenum: 737,
num: 1225,
gen: 8,
isNonstandard: "Past",
},
tr96: {
name: "TR96",
fling: {
basePower: 90,
},
spritenum: 727,
num: 1226,
gen: 8,
isNonstandard: "Past",
},
tr97: {
name: "TR97",
fling: {
basePower: 85,
},
spritenum: 734,
num: 1227,
gen: 8,
isNonstandard: "Past",
},
tr98: {
name: "TR98",
fling: {
basePower: 85,
},
spritenum: 731,
num: 1228,
gen: 8,
isNonstandard: "Past",
},
tr99: {
name: "TR99",
fling: {
basePower: 80,
},
spritenum: 722,
num: 1229,
gen: 8,
isNonstandard: "Past",
},
twistedspoon: {
name: "Twisted Spoon",
spritenum: 520,
fling: {
basePower: 30,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Psychic') {
return this.chainModify([4915, 4096]);
}
},
num: 248,
gen: 2,
},
tyranitarite: {
name: "Tyranitarite",
spritenum: 607,
megaStone: "Tyranitar-Mega",
megaEvolves: "Tyranitar",
itemUser: ["Tyranitar"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 669,
gen: 6,
isNonstandard: "Past",
},
ultraball: {
name: "Ultra Ball",
spritenum: 521,
num: 2,
gen: 1,
isPokeball: true,
},
ultranecroziumz: {
name: "Ultranecrozium Z",
spritenum: 687,
onTakeItem: false,
zMove: "Light That Burns the Sky",
zMoveFrom: "Photon Geyser",
itemUser: ["Necrozma-Ultra"],
num: 923,
gen: 7,
isNonstandard: "Past",
},
unremarkableteacup: {
name: "Unremarkable Teacup",
spritenum: 756,
fling: {
basePower: 80,
},
num: 2403,
gen: 9,
},
upgrade: {
name: "Up-Grade",
spritenum: 523,
fling: {
basePower: 30,
},
num: 252,
gen: 2,
},
utilityumbrella: {
name: "Utility Umbrella",
spritenum: 718,
fling: {
basePower: 60,
},
// Partially implemented in Pokemon.effectiveWeather() in sim/pokemon.ts
onStart(pokemon) {
if (!pokemon.ignoringItem()) return;
if (['sunnyday', 'raindance', 'desolateland', 'primordialsea'].includes(this.field.effectiveWeather())) {
this.runEvent('WeatherChange', pokemon, pokemon, this.effect);
}
},
onUpdate(pokemon) {
if (!this.effectState.inactive) return;
this.effectState.inactive = false;
if (['sunnyday', 'raindance', 'desolateland', 'primordialsea'].includes(this.field.effectiveWeather())) {
this.runEvent('WeatherChange', pokemon, pokemon, this.effect);
}
},
onEnd(pokemon) {
if (['sunnyday', 'raindance', 'desolateland', 'primordialsea'].includes(this.field.effectiveWeather())) {
this.runEvent('WeatherChange', pokemon, pokemon, this.effect);
}
this.effectState.inactive = true;
},
num: 1123,
gen: 8,
},
venusaurite: {
name: "Venusaurite",
spritenum: 608,
megaStone: "Venusaur-Mega",
megaEvolves: "Venusaur",
itemUser: ["Venusaur"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: 659,
gen: 6,
isNonstandard: "Past",
},
wacanberry: {
name: "Wacan Berry",
spritenum: 526,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Electric",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Electric' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 186,
gen: 4,
},
watergem: {
name: "Water Gem",
spritenum: 528,
isGem: true,
onSourceTryPrimaryHit(target, source, move) {
if (target === source || move.category === 'Status' || move.flags['pledgecombo']) return;
if (move.type === 'Water' && source.useItem()) {
source.addVolatile('gem');
}
},
num: 549,
gen: 5,
isNonstandard: "Past",
},
watermemory: {
name: "Water Memory",
spritenum: 677,
onMemory: 'Water',
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
return false;
}
return true;
},
forcedForme: "Silvally-Water",
itemUser: ["Silvally-Water"],
num: 913,
gen: 7,
isNonstandard: "Past",
},
waterstone: {
name: "Water Stone",
spritenum: 529,
fling: {
basePower: 30,
},
num: 84,
gen: 1,
},
wateriumz: {
name: "Waterium Z",
spritenum: 633,
onPlate: 'Water',
onTakeItem: false,
zMove: true,
zMoveType: "Water",
forcedForme: "Arceus-Water",
num: 778,
gen: 7,
isNonstandard: "Past",
},
watmelberry: {
name: "Watmel Berry",
spritenum: 530,
isBerry: true,
naturalGift: {
basePower: 100,
type: "Fire",
},
onEat: false,
num: 181,
gen: 3,
isNonstandard: "Past",
},
waveincense: {
name: "Wave Incense",
spritenum: 531,
fling: {
basePower: 10,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Water') {
return this.chainModify([4915, 4096]);
}
},
num: 317,
gen: 4,
isNonstandard: "Past",
},
weaknesspolicy: {
name: "Weakness Policy",
spritenum: 609,
fling: {
basePower: 80,
},
onDamagingHit(damage, target, source, move) {
if (!move.damage && !move.damageCallback && target.getMoveHitData(move).typeMod > 0) {
target.useItem();
}
},
boosts: {
atk: 2,
spa: 2,
},
num: 639,
gen: 6,
},
wellspringmask: {
name: "Wellspring Mask",
spritenum: 759,
fling: {
basePower: 60,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.name.startsWith('Ogerpon-Wellspring')) {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, source) {
if (source.baseSpecies.baseSpecies === 'Ogerpon') return false;
return true;
},
forcedForme: "Ogerpon-Wellspring",
itemUser: ["Ogerpon-Wellspring"],
num: 2407,
gen: 9,
},
wepearberry: {
name: "Wepear Berry",
spritenum: 533,
isBerry: true,
naturalGift: {
basePower: 90,
type: "Electric",
},
onEat: false,
num: 167,
gen: 3,
isNonstandard: "Past",
},
whippeddream: {
name: "Whipped Dream",
spritenum: 692,
fling: {
basePower: 80,
},
num: 646,
gen: 6,
isNonstandard: "Past",
},
whiteherb: {
name: "White Herb",
spritenum: 535,
fling: {
basePower: 10,
effect(pokemon) {
let activate = false;
const boosts: SparseBoostsTable = {};
let i: BoostID;
for (i in pokemon.boosts) {
if (pokemon.boosts[i] < 0) {
activate = true;
boosts[i] = 0;
}
}
if (activate) {
pokemon.setBoost(boosts);
this.add('-clearnegativeboost', pokemon, '[silent]');
}
},
},
onAnySwitchInPriority: -2,
onAnySwitchIn() {
((this.effect as any).onUpdate as (p: Pokemon) => void).call(this, this.effectState.target);
},
onStart(pokemon) {
((this.effect as any).onUpdate as (p: Pokemon) => void).call(this, pokemon);
},
onUpdate(pokemon) {
let activate = false;
const boosts: SparseBoostsTable = {};
let i: BoostID;
for (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,
},
widelens: {
name: "Wide Lens",
spritenum: 537,
fling: {
basePower: 10,
},
onSourceModifyAccuracyPriority: -2,
onSourceModifyAccuracy(accuracy) {
if (typeof accuracy === 'number') {
return this.chainModify([4505, 4096]);
}
},
num: 265,
gen: 4,
},
wikiberry: {
name: "Wiki Berry",
spritenum: 538,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Rock",
},
onUpdate(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 &&
pokemon.hasAbility('gluttony') && pokemon.abilityState.gluttony)) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, pokemon.baseMaxhp / 3)) return false;
},
onEat(pokemon) {
this.heal(pokemon.baseMaxhp / 3);
if (pokemon.getNature().minus === 'spa') {
pokemon.addVolatile('confusion');
}
},
num: 160,
gen: 3,
},
wiseglasses: {
name: "Wise Glasses",
spritenum: 539,
fling: {
basePower: 10,
},
onBasePowerPriority: 16,
onBasePower(basePower, user, target, move) {
if (move.category === 'Special') {
return this.chainModify([4505, 4096]);
}
},
num: 267,
gen: 4,
},
yacheberry: {
name: "Yache Berry",
spritenum: 567,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Ice",
},
onSourceModifyDamage(damage, source, target, move) {
if (move.type === 'Ice' && target.getMoveHitData(move).typeMod > 0) {
const hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);
if (hitSub) return;
if (target.eatItem()) {
this.debug('-50% reduction');
this.add('-enditem', target, this.effect, '[weaken]');
return this.chainModify(0.5);
}
}
},
onEat() { },
num: 188,
gen: 4,
},
zapplate: {
name: "Zap Plate",
spritenum: 572,
onPlate: 'Electric',
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (move.type === 'Electric') {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if ((source && source.baseSpecies.num === 493) || pokemon.baseSpecies.num === 493) {
return false;
}
return true;
},
forcedForme: "Arceus-Electric",
num: 300,
gen: 4,
},
zoomlens: {
name: "Zoom Lens",
spritenum: 574,
fling: {
basePower: 10,
},
onSourceModifyAccuracyPriority: -2,
onSourceModifyAccuracy(accuracy, target) {
if (typeof accuracy === 'number' && !this.queue.willMove(target)) {
this.debug('Zoom Lens boosting accuracy');
return this.chainModify([4915, 4096]);
}
},
num: 276,
gen: 4,
},
// Gen 2 items
berserkgene: {
name: "Berserk Gene",
spritenum: 388,
onUpdate(pokemon) {
if (pokemon.useItem()) {
pokemon.addVolatile('confusion');
}
},
boosts: {
atk: 2,
},
num: 0,
gen: 2,
isNonstandard: "Past",
},
berry: {
name: "Berry",
spritenum: 319,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Poison",
},
onResidualOrder: 10,
onResidual(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 2) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, 10)) return false;
},
onEat(pokemon) {
this.heal(10);
},
num: 155,
gen: 2,
isNonstandard: "Past",
},
bitterberry: {
name: "Bitter Berry",
spritenum: 334,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Ground",
},
onUpdate(pokemon) {
if (pokemon.volatiles['confusion']) {
pokemon.eatItem();
}
},
onEat(pokemon) {
pokemon.removeVolatile('confusion');
},
num: 156,
gen: 2,
isNonstandard: "Past",
},
burntberry: {
name: "Burnt Berry",
spritenum: 13,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Ice",
},
onUpdate(pokemon) {
if (pokemon.status === 'frz') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'frz') {
pokemon.cureStatus();
}
},
num: 153,
gen: 2,
isNonstandard: "Past",
},
goldberry: {
name: "Gold Berry",
spritenum: 448,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Psychic",
},
onResidualOrder: 10,
onResidual(pokemon) {
if (pokemon.hp <= pokemon.maxhp / 2) {
pokemon.eatItem();
}
},
onTryEatItem(item, pokemon) {
if (!this.runEvent('TryHeal', pokemon, null, this.effect, 30)) return false;
},
onEat(pokemon) {
this.heal(30);
},
num: 158,
gen: 2,
isNonstandard: "Past",
},
iceberry: {
name: "Ice Berry",
spritenum: 381,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Grass",
},
onUpdate(pokemon) {
if (pokemon.status === 'brn') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'brn') {
pokemon.cureStatus();
}
},
num: 152,
gen: 2,
isNonstandard: "Past",
},
mintberry: {
name: "Mint Berry",
spritenum: 65,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Water",
},
onUpdate(pokemon) {
if (pokemon.status === 'slp') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'slp') {
pokemon.cureStatus();
}
},
num: 150,
gen: 2,
isNonstandard: "Past",
},
miracleberry: {
name: "Miracle Berry",
spritenum: 262,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Flying",
},
onUpdate(pokemon) {
if (pokemon.status || pokemon.volatiles['confusion']) {
pokemon.eatItem();
}
},
onEat(pokemon) {
pokemon.cureStatus();
pokemon.removeVolatile('confusion');
},
num: 157,
gen: 2,
isNonstandard: "Past",
},
mysteryberry: {
name: "Mystery Berry",
spritenum: 244,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Fighting",
},
onUpdate(pokemon) {
if (!pokemon.hp) return;
const moveSlot = pokemon.lastMove && pokemon.getMoveData(pokemon.lastMove.id);
if (moveSlot && moveSlot.pp === 0) {
pokemon.addVolatile('leppaberry');
pokemon.volatiles['leppaberry'].moveSlot = moveSlot;
pokemon.eatItem();
}
},
onEat(pokemon) {
let moveSlot;
if (pokemon.volatiles['leppaberry']) {
moveSlot = pokemon.volatiles['leppaberry'].moveSlot;
pokemon.removeVolatile('leppaberry');
} else {
let pp = 99;
for (const possibleMoveSlot of pokemon.moveSlots) {
if (possibleMoveSlot.pp < pp) {
moveSlot = possibleMoveSlot;
pp = moveSlot.pp;
}
}
}
moveSlot.pp += 5;
if (moveSlot.pp > moveSlot.maxpp) moveSlot.pp = moveSlot.maxpp;
this.add('-activate', pokemon, 'item: Mystery Berry', moveSlot.move);
},
num: 154,
gen: 2,
isNonstandard: "Past",
},
pinkbow: {
name: "Pink Bow",
spritenum: 444,
onBasePower(basePower, user, target, move) {
if (move.type === 'Normal') {
return basePower * 1.1;
}
},
num: 251,
gen: 2,
isNonstandard: "Past",
},
polkadotbow: {
name: "Polkadot Bow",
spritenum: 444,
onBasePower(basePower, user, target, move) {
if (move.type === 'Normal') {
return basePower * 1.1;
}
},
num: 251,
gen: 2,
isNonstandard: "Past",
},
przcureberry: {
name: "PRZ Cure Berry",
spritenum: 63,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Fire",
},
onUpdate(pokemon) {
if (pokemon.status === 'par') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'par') {
pokemon.cureStatus();
}
},
num: 149,
gen: 2,
isNonstandard: "Past",
},
psncureberry: {
name: "PSN Cure Berry",
spritenum: 333,
isBerry: true,
naturalGift: {
basePower: 80,
type: "Electric",
},
onUpdate(pokemon) {
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
pokemon.eatItem();
}
},
onEat(pokemon) {
if (pokemon.status === 'psn' || pokemon.status === 'tox') {
pokemon.cureStatus();
}
},
num: 151,
gen: 2,
isNonstandard: "Past",
},
// CAP items
crucibellite: {
name: "Crucibellite",
spritenum: 577,
megaStone: "Crucibelle-Mega",
megaEvolves: "Crucibelle",
itemUser: ["Crucibelle"],
onTakeItem(item, source) {
if (item.megaEvolves === source.baseSpecies.baseSpecies) return false;
return true;
},
num: -1,
gen: 6,
isNonstandard: "CAP",
},
vilevial: {
name: "Vile Vial",
spritenum: 752,
fling: {
basePower: 60,
},
onBasePowerPriority: 15,
onBasePower(basePower, user, target, move) {
if (user.baseSpecies.num === -66 && ['Poison', 'Flying'].includes(move.type)) {
return this.chainModify([4915, 4096]);
}
},
onTakeItem(item, pokemon, source) {
if (source?.baseSpecies.num === -66 || pokemon.baseSpecies.num === -66) {
return false;
}
return true;
},
forcedForme: "Venomicon-Epilogue",
itemUser: ["Venomicon-Epilogue"],
num: -2,
gen: 8,
isNonstandard: "CAP",
},
};