872 lines
25 KiB
JavaScript
872 lines
25 KiB
JavaScript
"use strict";
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
var items_exports = {};
|
|
__export(items_exports, {
|
|
Items: () => Items
|
|
});
|
|
module.exports = __toCommonJS(items_exports);
|
|
const Items = {
|
|
boomerang: {
|
|
name: "Boomerang",
|
|
fling: {
|
|
basePower: 120
|
|
},
|
|
num: -1001,
|
|
gen: 8,
|
|
desc: "Comes back to the user when flung."
|
|
},
|
|
momentumarmor: {
|
|
name: "Momentum Armor",
|
|
fling: {
|
|
basePower: 80
|
|
},
|
|
onModifyAtkPriority: 1,
|
|
onModifyAtk(atk, pokemon) {
|
|
const def = pokemon.getStat("def", false, true);
|
|
const newAtk = atk + def / 4;
|
|
return newAtk;
|
|
},
|
|
num: -1002,
|
|
gen: 8,
|
|
desc: "Boosts the user's Attack by 25% of its Defense."
|
|
},
|
|
shellbell: {
|
|
name: "Shell Bell",
|
|
spritenum: 438,
|
|
fling: {
|
|
basePower: 40
|
|
},
|
|
onAfterMoveSecondarySelfPriority: -1,
|
|
onAfterMoveSecondarySelf(pokemon, target, move) {
|
|
if (move.category !== "Status") {
|
|
this.heal(pokemon.baseMaxhp / 8);
|
|
}
|
|
},
|
|
num: 253,
|
|
gen: 3,
|
|
desc: "The holder heals 12.5% of their max HP upon successfully damaging a Pokemon with an attack."
|
|
},
|
|
honey: {
|
|
name: "Honey",
|
|
fling: {
|
|
basePower: 30
|
|
},
|
|
num: -1003,
|
|
gen: 4,
|
|
shortDesc: "Pokemon with the ability Honey Gather or Sweet Veil heal 12.5% when holding this item."
|
|
},
|
|
eviolith: {
|
|
name: "Eviolith",
|
|
spritenum: 130,
|
|
fling: {
|
|
basePower: 40
|
|
},
|
|
onModifyAtkPriority: 2,
|
|
onModifyAtk(atk, pokemon) {
|
|
if (pokemon.baseSpecies.nfe) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onModifySpAPriority: 2,
|
|
onModifySpA(spa, pokemon) {
|
|
if (pokemon.baseSpecies.nfe) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
num: -1004,
|
|
gen: 8,
|
|
desc: "If holder's species can evolve, its Atk and Sp. Atk are 1.5x."
|
|
},
|
|
reliccharm: {
|
|
name: "Relic Charm",
|
|
spritenum: 390,
|
|
onSwitchIn(pokemon) {
|
|
if (pokemon.isActive && pokemon.baseSpecies.name === "Meloetta") {
|
|
pokemon.formeChange("Meloetta-Pirouette");
|
|
}
|
|
},
|
|
onBasePower(basePower, user, target, move) {
|
|
if (move && move.type === "Fighting") {
|
|
return this.chainModify([4915, 4096]);
|
|
}
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.baseSpecies.baseSpecies === "Meloetta")
|
|
return false;
|
|
return true;
|
|
},
|
|
itemUser: ["Meloetta"],
|
|
num: -1005,
|
|
gen: 8,
|
|
desc: "If held by Meloetta: Pirouette Forme on entry, 1.2x power Fighting-type attacks."
|
|
},
|
|
chillpill: {
|
|
name: "Chill Pill",
|
|
spritenum: 390,
|
|
onStart(pokemon) {
|
|
if (pokemon.isActive && pokemon.baseSpecies.name === "Darmanitan") {
|
|
if (!pokemon.species.name.includes("Galar")) {
|
|
if (pokemon.species.id !== "darmanitanzen")
|
|
pokemon.formeChange("Darmanitan-Zen");
|
|
pokemon.setAbility("psychicsurge", pokemon, true);
|
|
} else {
|
|
if (pokemon.species.id !== "darmanitangalarzen")
|
|
pokemon.formeChange("Darmanitan-Galar-Zen");
|
|
pokemon.setAbility("snowwarning", pokemon, true);
|
|
}
|
|
}
|
|
},
|
|
onBasePower(basePower, user, target, move) {
|
|
if (move && (user.species.id === "darmanitanzen" && move.type === "Psychic" || user.species.id === "darmanitangalarzen" && move.type === "Fire")) {
|
|
return this.chainModify([4915, 4096]);
|
|
}
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.baseSpecies.baseSpecies === "Darmanitan")
|
|
return false;
|
|
return true;
|
|
},
|
|
itemUser: ["Darmanitan"],
|
|
num: -1006,
|
|
gen: 8,
|
|
desc: "If held by Darmanitan: Zen Mode and Psychic Terrain on entry, 1.2x power Psychic-type attacks."
|
|
},
|
|
chillpillg: {
|
|
name: "Chill Pill G",
|
|
spritenum: 390,
|
|
onStart(pokemon) {
|
|
this.add("-item", pokemon, "Chill Pill");
|
|
if (pokemon.baseSpecies.baseSpecies === "Darmanitan" && pokemon.species.name.includes("Galar")) {
|
|
this.add("-formechange", pokemon, "Darmanitan-Galar-Zen", "[msg]");
|
|
pokemon.formeChange("Darmanitan-Galar-Zen");
|
|
const oldAbility = pokemon.setAbility("snowwarning", pokemon, true);
|
|
if (oldAbility) {
|
|
this.add("-activate", pokemon, "ability: Snow Warning", oldAbility, "[of] " + pokemon);
|
|
}
|
|
}
|
|
},
|
|
onBasePower(basePower, user, target, move) {
|
|
if (move && user.species.id === "darmanitangalarzen" && move.type === "Fire") {
|
|
return this.chainModify([4915, 4096]);
|
|
}
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.baseSpecies.baseSpecies === "Darmanitan")
|
|
return false;
|
|
return true;
|
|
},
|
|
itemUser: ["Darmanitan-Galar"],
|
|
num: -1006,
|
|
gen: 8,
|
|
desc: "If held by Darmanitan: Zen Mode and Hail on entry, 1.2x power Fire-type attacks."
|
|
},
|
|
graduationscale: {
|
|
name: "Graduation Scale",
|
|
onStart(pokemon) {
|
|
pokemon.setAbility("intimidate", pokemon, true);
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.baseSpecies.baseSpecies === "Wishiwashi")
|
|
return false;
|
|
return true;
|
|
},
|
|
fling: {
|
|
basePower: 20
|
|
},
|
|
onBasePowerPriority: 6,
|
|
onBasePower(basePower, user, target, move) {
|
|
if (move && user.baseSpecies.num === 746 && move.type === "Water") {
|
|
return this.chainModify([4915, 4096]);
|
|
}
|
|
},
|
|
gen: 7,
|
|
desc: "If holder is a Wishiwashi, it becomes School Form. Its ability becomes Intimidate. Water moves are boosted by 1.2x"
|
|
},
|
|
blunderpolicy: {
|
|
name: "Blunder Policy",
|
|
spritenum: 716,
|
|
fling: {
|
|
basePower: 80
|
|
},
|
|
onUpdate(pokemon) {
|
|
if (pokemon.moveThisTurnResult === false) {
|
|
this.boost({ spe: 2 });
|
|
pokemon.useItem();
|
|
}
|
|
},
|
|
// Item activation located in scripts.js
|
|
num: 1121,
|
|
gen: 8,
|
|
desc: "+2 Speed if the holder's move fails. Single use."
|
|
},
|
|
lightball: {
|
|
name: "Light Ball",
|
|
spritenum: 251,
|
|
fling: {
|
|
basePower: 30,
|
|
status: "par"
|
|
},
|
|
onModifyAtkPriority: 1,
|
|
onModifyAtk(atk, pokemon) {
|
|
if (["Pikachu", "Raichu", "Togedemaru", "Morpeko"].includes(pokemon.baseSpecies.baseSpecies)) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onModifyDefPriority: 1,
|
|
onModifyDef(def, pokemon) {
|
|
if (["Emolga", "Dedenne", "Togedemaru", "Pachirisu"].includes(pokemon.baseSpecies.baseSpecies)) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onModifySpAPriority: 1,
|
|
onModifySpA(spa, pokemon) {
|
|
if (["Pikachu", "Raichu", "Raichu-Alola", "Plusle", "Dedenne"].includes(pokemon.baseSpecies.baseSpecies)) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onModifySpDPriority: 1,
|
|
onModifySpD(spd, pokemon) {
|
|
if (["Plusle", "Minun", "Pachirisu", "Morpeko"].includes(pokemon.baseSpecies.baseSpecies)) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onModifySpePriority: 1,
|
|
onModifySpe(spe, pokemon) {
|
|
if (["Pikachu", "Minun", "Emolga"].includes(pokemon.baseSpecies.baseSpecies)) {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
itemUser: ["Pikachu", "Raichu", "Plusle", "Minun", "Emolga", "Morpeko", "Dedenne", "Togedemaru"],
|
|
num: 236,
|
|
gen: 2,
|
|
desc: "If held by Pikachu, Raichu, or a Pikaclone, 2 of its stats are boosted 1.5x."
|
|
},
|
|
/*
|
|
soulblade: {
|
|
name: "Soul Blade",
|
|
spritenum: 297,
|
|
fling: {
|
|
basePower: 100,
|
|
},
|
|
onModifyDamage(damage, source, target, move) {
|
|
return this.chainModify([0x1199, 0x1000]);
|
|
},
|
|
gen: 8,
|
|
desc: "(Non-functional placeholder) The holder's moves deal 1.1x damage + .2x for every KO it has.",
|
|
},
|
|
*/
|
|
mentalherb: {
|
|
name: "Mental Herb",
|
|
spritenum: 285,
|
|
fling: {
|
|
basePower: 10,
|
|
effect(pokemon) {
|
|
const conditions = ["attract", "taunt", "encore", "torment", "disable", "healblock", "trashtalk"];
|
|
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", "trashtalk"];
|
|
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
|
|
},
|
|
morningblossom: {
|
|
name: "Morning Blossom",
|
|
spritenum: 297,
|
|
fling: {
|
|
basePower: 10
|
|
},
|
|
onSwitchIn(pokemon) {
|
|
if (pokemon.isActive && pokemon.baseSpecies.name === "Cherrim") {
|
|
this.field.setWeather("desolateland");
|
|
}
|
|
},
|
|
onSwitchOut(pokemon) {
|
|
this.field.clearWeather();
|
|
},
|
|
onFaint(pokemon) {
|
|
this.field.clearWeather();
|
|
},
|
|
onBasePower(basePower, user, target, move) {
|
|
if (move && move.type === "Grass") {
|
|
return this.chainModify([4915, 4096]);
|
|
}
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.baseSpecies.baseSpecies === "Cherrim")
|
|
return false;
|
|
return true;
|
|
},
|
|
onUpdate(pokemon) {
|
|
if (pokemon.volatiles["embargo"]) {
|
|
this.add("-activate", pokemon, "item: Morning Blossom");
|
|
pokemon.removeVolatile("embargo");
|
|
}
|
|
},
|
|
onTryHit(pokemon, target, move) {
|
|
if (move.id === "embargo") {
|
|
this.add("-immune", pokemon, "[from] item: Morning Blossom");
|
|
return null;
|
|
}
|
|
},
|
|
itemUser: ["Cherrim"],
|
|
gen: 8,
|
|
desc: "If held by Cherrim: Desolate Land on entry, 1.2x power Grass-type attacks."
|
|
},
|
|
absorbbulb: {
|
|
name: "Absorb Bulb",
|
|
spritenum: 2,
|
|
fling: {
|
|
basePower: 30
|
|
},
|
|
onDamagingHit(damage, target, source, move) {
|
|
if (move.type === "Water") {
|
|
target.useItem();
|
|
}
|
|
},
|
|
boosts: {
|
|
def: 1,
|
|
spa: 1,
|
|
spd: 1
|
|
},
|
|
num: 545,
|
|
gen: 5,
|
|
desc: "Raises holder's Def, SpA, & SpD by 1 stage if hit by a Water-type attack. Single use."
|
|
},
|
|
cellbattery: {
|
|
name: "Cell Battery",
|
|
spritenum: 60,
|
|
fling: {
|
|
basePower: 30
|
|
},
|
|
onDamagingHit(damage, target, source, move) {
|
|
if (move.type === "Electric") {
|
|
target.useItem();
|
|
}
|
|
},
|
|
boosts: {
|
|
atk: 1,
|
|
spe: 1,
|
|
accuracy: 1
|
|
},
|
|
num: 546,
|
|
gen: 5,
|
|
desc: "Raises holder's Atk, Spe, & Acc by 1 stage if hit by an Electric-type attack. Single use."
|
|
},
|
|
luminousmoss: {
|
|
name: "Luminous Moss",
|
|
spritenum: 595,
|
|
fling: {
|
|
basePower: 30
|
|
},
|
|
onDamagingHit(damage, target, source, move) {
|
|
if (move.type === "Grass") {
|
|
target.useItem();
|
|
}
|
|
},
|
|
boosts: {
|
|
spa: 2,
|
|
spd: 2
|
|
},
|
|
num: 648,
|
|
gen: 6,
|
|
desc: "Raises holder's SpA & SpD by 2 stages if hit by a Grass-type attack. Single use."
|
|
},
|
|
snowball: {
|
|
name: "Snowball",
|
|
spritenum: 606,
|
|
fling: {
|
|
basePower: 30
|
|
},
|
|
onDamagingHit(damage, target, source, move) {
|
|
if (move.type === "Ice") {
|
|
target.useItem();
|
|
}
|
|
},
|
|
boosts: {
|
|
atk: 2,
|
|
def: 2
|
|
},
|
|
num: 649,
|
|
gen: 6,
|
|
desc: "Raises holder's Atk & Def by 2 stages if hit by an Ice-type attack. Single use."
|
|
},
|
|
coalengine: {
|
|
name: "Coal Engine",
|
|
spritenum: 297,
|
|
fling: {
|
|
basePower: 60
|
|
},
|
|
onStart(pokemon) {
|
|
if (pokemon.side.getSideCondition("stealthrock") && !pokemon.ignoringItem()) {
|
|
pokemon.useItem();
|
|
this.boost({ spe: 1 }, pokemon);
|
|
}
|
|
},
|
|
gen: 8,
|
|
desc: "If Stealth Rock is on the field, damage is ignored, and the user's Speed is raised by 1. Single use."
|
|
},
|
|
tartapple: {
|
|
name: "Tart Apple",
|
|
spritenum: 712,
|
|
fling: {
|
|
basePower: 20
|
|
},
|
|
onModifySpe(spe, pokemon) {
|
|
if (pokemon.baseSpecies.baseSpecies === "Flapple") {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onStart(pokemon) {
|
|
if (pokemon.baseSpecies.baseSpecies === "Flapple") {
|
|
this.boost({ accuracy: 2 });
|
|
}
|
|
},
|
|
itemUser: ["Flapple"],
|
|
num: 1117,
|
|
gen: 8,
|
|
desc: "If the holder is Flapple: 1.5x Speed and +2 Accuracy."
|
|
},
|
|
sweetapple: {
|
|
name: "Sweet Apple",
|
|
spritenum: 711,
|
|
fling: {
|
|
basePower: 20
|
|
},
|
|
onResidualOrder: 5,
|
|
onResidualSubOrder: 5,
|
|
onResidual(pokemon) {
|
|
if (pokemon.baseSpecies.name === "Appletun") {
|
|
this.heal(pokemon.baseMaxhp / 8);
|
|
}
|
|
},
|
|
onSourceModifyAtkPriority: 6,
|
|
onSourceModifyAtk(atk, attacker, defender, move) {
|
|
if (move.type === "Poison") {
|
|
this.debug("Sweet Apple weaken");
|
|
return this.chainModify(0.5);
|
|
}
|
|
},
|
|
onSourceModifySpAPriority: 5,
|
|
onSourceModifySpA(atk, attacker, defender, move) {
|
|
if (move.type === "Poison") {
|
|
this.debug("Sweet Apple weaken");
|
|
return this.chainModify(0.5);
|
|
}
|
|
},
|
|
onDamage(damage, target, source, effect) {
|
|
if (effect && (effect.id === "tox" || effect.id === "psn")) {
|
|
return damage / 2;
|
|
}
|
|
},
|
|
num: 1116,
|
|
gen: 8,
|
|
desc: "If the holder is Appletun: Heals 12.5% HP every turn and takes 50% damage from Poison moves and poison status."
|
|
},
|
|
protector: {
|
|
name: "Protector",
|
|
spritenum: 367,
|
|
fling: {
|
|
basePower: 100
|
|
},
|
|
onSourceModifyDamage(damage, source, target, move) {
|
|
if (target.getMoveHitData(move).typeMod > 0 && !target.hasAbility("solidrock") && !target.hasAbility("filter")) {
|
|
this.debug("Protector neutralize");
|
|
return this.chainModify(0.75);
|
|
}
|
|
},
|
|
num: 321,
|
|
gen: 4,
|
|
desc: "Super effective attacks deal 3/4 damage to the holder."
|
|
},
|
|
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;
|
|
}
|
|
},
|
|
onUpdate(pokemon) {
|
|
if (pokemon.volatiles["mustrecharge"]) {
|
|
pokemon.removeVolatile("mustrecharge");
|
|
pokemon.useItem();
|
|
}
|
|
},
|
|
name: "Power Herb",
|
|
spritenum: 358,
|
|
fling: {
|
|
basePower: 10
|
|
},
|
|
num: 271,
|
|
gen: 4,
|
|
desc: "Holder's two-turn moves and recharge complete in one turn (except Sky Drop). Single use."
|
|
},
|
|
pillow: {
|
|
name: "Pillow",
|
|
spritenum: 242,
|
|
fling: {
|
|
basePower: 10
|
|
// status: 'slp', Fixed
|
|
},
|
|
onResidualOrder: 5,
|
|
onResidualSubOrder: 5,
|
|
onResidual(pokemon) {
|
|
if (pokemon.status === "slp" || pokemon.hasAbility("comatose")) {
|
|
this.heal(pokemon.baseMaxhp / 8);
|
|
}
|
|
},
|
|
/*
|
|
onStart(pokemon) {
|
|
if (pokemon.status === 'slp' || pokemon.hasAbility('comatose')) {
|
|
pokemon.addVolatile('pillow');
|
|
}
|
|
},
|
|
condition: {
|
|
onTryMovePriority: -2,
|
|
onTryMove(pokemon, target, move) {
|
|
if (!pokemon.hasItem('pillow') || (pokemon.status !== 'slp' && !pokemon.hasAbility('comatose'))) {
|
|
pokemon.removeVolatile('pillow');
|
|
return;
|
|
}
|
|
if (pokemon.status === 'slp' || pokemon.hasAbility('comatose')) {
|
|
this.useMove("Sleep Talk", pokemon);
|
|
}
|
|
},
|
|
},
|
|
*/
|
|
gen: 8,
|
|
desc: "(Bugged) Holder heals 12.5% HP while asleep. If asleep, calls a random attack."
|
|
},
|
|
reapercloth: {
|
|
name: "Reaper Cloth",
|
|
spritenum: 385,
|
|
fling: {
|
|
basePower: 100
|
|
},
|
|
onResidualOrder: 5,
|
|
onResidualSubOrder: 5,
|
|
onResidual(pokemon) {
|
|
if (pokemon.hasType("Ghost")) {
|
|
this.heal(pokemon.baseMaxhp / 16);
|
|
}
|
|
},
|
|
onDisableMove(pokemon) {
|
|
if (!pokemon.hasType("Ghost") && pokemon.lastMove && pokemon.lastMove.id !== "struggle") {
|
|
pokemon.disableMove(pokemon.lastMove.id);
|
|
}
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.hasType("Ghost"))
|
|
return false;
|
|
return true;
|
|
},
|
|
num: 325,
|
|
gen: 4,
|
|
desc: "Each turn, if holder is a Ghost type, restores 1/16 max HP; is Tormented if not."
|
|
},
|
|
chilipepper: {
|
|
name: "Chili Pepper",
|
|
spritenum: 13,
|
|
fling: {
|
|
basePower: 10,
|
|
status: "brn"
|
|
},
|
|
onSetStatus(status, target, source, effect) {
|
|
if (status.id !== "brn")
|
|
return;
|
|
if (effect?.status) {
|
|
this.add("-immune", target, "[from] item: Chili Pepper");
|
|
}
|
|
return false;
|
|
},
|
|
onUpdate(pokemon) {
|
|
if (pokemon.status === "frz") {
|
|
this.add("-activate", pokemon, "item: Chili Pepper");
|
|
pokemon.cureStatus();
|
|
pokemon.useItem();
|
|
}
|
|
},
|
|
desc: "The holder is immune to burns. Thaws the user and is consumed if the holder is frozen."
|
|
},
|
|
widelens: {
|
|
name: "Wide Lens",
|
|
spritenum: 537,
|
|
fling: {
|
|
basePower: 10
|
|
},
|
|
onSourceModifyAccuracyPriority: 4,
|
|
onSourceModifyAccuracy(accuracy) {
|
|
if (typeof accuracy === "number") {
|
|
return accuracy * 1.2;
|
|
}
|
|
},
|
|
num: 265,
|
|
gen: 4,
|
|
desc: "The accuracy of attacks by the holder is 1.2x."
|
|
},
|
|
zoomlens: {
|
|
name: "Zoom Lens",
|
|
spritenum: 574,
|
|
fling: {
|
|
basePower: 10
|
|
},
|
|
onSourceModifyAccuracyPriority: 4,
|
|
onSourceModifyAccuracy(accuracy, target) {
|
|
if (typeof accuracy === "number" && (!this.queue.willMove(target) || target.newlySwitched)) {
|
|
this.debug("Zoom Lens boosting accuracy");
|
|
return accuracy * 1.5;
|
|
}
|
|
},
|
|
num: 276,
|
|
gen: 4,
|
|
desc: "The accuracy of attacks by the holder is 1.5x if it moves lasts or the foe switches."
|
|
},
|
|
whippeddream: {
|
|
name: "Whipped Dream",
|
|
spritenum: 692,
|
|
fling: {
|
|
basePower: 30
|
|
},
|
|
onBasePowerPriority: 15,
|
|
onBasePower(basePower, user, target, move) {
|
|
if (move && move.type === "Fairy") {
|
|
return this.chainModify([4915, 4096]);
|
|
}
|
|
},
|
|
num: 646,
|
|
gen: 6,
|
|
desc: "Holder's Fairy-type attacks have 1.2x power."
|
|
},
|
|
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
|
|
num: 278,
|
|
gen: 4,
|
|
desc: "Holder's use of Gravity lasts 8 turns instead of 5. Grounds holder."
|
|
},
|
|
cursedbelt: {
|
|
name: "Cursed Belt",
|
|
spritenum: 13,
|
|
fling: {
|
|
basePower: 10
|
|
},
|
|
onAfterMoveSecondarySelf(target, source, move) {
|
|
if (move.category === "Status") {
|
|
target.addVolatile("disable");
|
|
}
|
|
},
|
|
onModifyDamage(damage, source, target, move) {
|
|
if (source.volatiles["disable"]) {
|
|
return this.chainModify(1.2);
|
|
}
|
|
},
|
|
desc: "When the holder uses a status move, it is disabled. Moves deal 1.2x damage while a move is disabled."
|
|
},
|
|
utilityumbrella: {
|
|
name: "Utility Umbrella",
|
|
spritenum: 718,
|
|
fling: {
|
|
basePower: 60
|
|
},
|
|
onImmunity(type, pokemon) {
|
|
if (type === "sandstorm" || type === "hail")
|
|
return false;
|
|
},
|
|
onWeather(target, source, effect) {
|
|
if (this.field.isWeather(["sunnyday", "desolateland", "hail", "raindance", "primordialsea", "sandstorm"])) {
|
|
this.heal(target.baseMaxhp / 12);
|
|
}
|
|
},
|
|
// Other effects implemented in statuses.js, moves.js, and abilities.js
|
|
num: 1123,
|
|
gen: 8,
|
|
desc: "The holder ignores rain- and sun-based effects & weather damage. Heals 1/12 of its max HP in weather."
|
|
},
|
|
nightlightball: {
|
|
name: "Nightlight Ball",
|
|
spritenum: 251,
|
|
fling: {
|
|
basePower: 90,
|
|
status: "brn"
|
|
},
|
|
onStart(pokemon) {
|
|
this.add("-item", pokemon, "Nightlight Ball");
|
|
this.add("-message", `Mimikyu's Nightlight Ball has a sinister sheen!`);
|
|
},
|
|
onModifyAtkPriority: 1,
|
|
onModifyAtk(atk, pokemon) {
|
|
if (pokemon.baseSpecies.baseSpecies === "Mimikyu") {
|
|
return this.chainModify(1.3);
|
|
}
|
|
},
|
|
onModifyDefPriority: 1,
|
|
onModifyDef(def, pokemon) {
|
|
if (pokemon.baseSpecies.baseSpecies === "Mimikyu") {
|
|
return this.chainModify(1.3);
|
|
}
|
|
},
|
|
onTryHit(target, source, move) {
|
|
if (target !== source && move.type === "Electric" && target.baseSpecies.baseSpecies === "Mimikyu") {
|
|
if (!this.heal(target.baseMaxhp / 4)) {
|
|
this.add("-immune", target, "[from] item: Nightlight Ball");
|
|
}
|
|
return null;
|
|
}
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.baseSpecies.baseSpecies === "Mimikyu")
|
|
return false;
|
|
return true;
|
|
},
|
|
itemUser: ["Mimikyu"],
|
|
desc: "If held by Mimikyu: 1.3x Atk and Def, Heals 1/4 of its max HP when hit by Electric moves."
|
|
},
|
|
seawaterbead: {
|
|
name: "Seawater Bead",
|
|
spritenum: 251,
|
|
fling: {
|
|
basePower: 30
|
|
},
|
|
onModifyDefPriority: 2,
|
|
onModifyDef(def, pokemon) {
|
|
if (pokemon.baseSpecies.baseSpecies === "Phione") {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onModifySpDPriority: 2,
|
|
onModifySpD(spd, pokemon) {
|
|
if (pokemon.baseSpecies.baseSpecies === "Phione") {
|
|
return this.chainModify(1.5);
|
|
}
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.baseSpecies.baseSpecies === "Phione")
|
|
return false;
|
|
return true;
|
|
},
|
|
itemUser: ["Phione"],
|
|
desc: "If held by Phione: 1.5x Defense & Special Defense."
|
|
},
|
|
sacredropes: {
|
|
name: "Sacred Ropes",
|
|
spritenum: 251,
|
|
fling: {
|
|
basePower: 130
|
|
},
|
|
onStart(pokemon) {
|
|
this.add("-item", pokemon, "Sacred Ropes");
|
|
this.add("-message", `Regigigas is adorned with continent-towing ropes!`);
|
|
},
|
|
onSwitchIn(pokemon) {
|
|
if (pokemon.isActive && pokemon.baseSpecies.baseSpecies === "Regigigas") {
|
|
const oldAbility = pokemon.setAbility("thickfat", pokemon, true);
|
|
if (oldAbility) {
|
|
this.add("-activate", pokemon, "ability: Thick Fat", oldAbility, "[of] " + pokemon);
|
|
}
|
|
}
|
|
},
|
|
onSourceModifyAtkPriority: 6,
|
|
onSourceModifyAtk(atk, attacker, defender, move) {
|
|
if ((move.type === "Fighting" || move.type === "Rock") && defender.baseSpecies.baseSpecies === "Regigigas") {
|
|
this.debug("Sacred Ropes weaken");
|
|
return this.chainModify(0.75);
|
|
}
|
|
},
|
|
onSourceModifySpAPriority: 5,
|
|
onSourceModifySpA(atk, attacker, defender, move) {
|
|
if ((move.type === "Fighting" || move.type === "Rock") && defender.baseSpecies.baseSpecies === "Regigigas") {
|
|
this.debug("Sacred Ropes weaken");
|
|
return this.chainModify(0.75);
|
|
}
|
|
},
|
|
onTakeItem(item, source) {
|
|
if (source.baseSpecies.baseSpecies === "Regigigas")
|
|
return false;
|
|
return true;
|
|
},
|
|
itemUser: ["Regigigas"],
|
|
desc: "If held by Regigigas: Ability becomes Thick Fat, takes 0.75x damage from Fighting and Rock moves."
|
|
},
|
|
// soul blades
|
|
soulblade: {
|
|
name: "Soul Blade",
|
|
spritenum: 297,
|
|
fling: {
|
|
basePower: 100
|
|
},
|
|
onModifyDamage(damage, source, target, move) {
|
|
const soulBladePower = [[4505, 4096], [5324, 4096], 1.5, 1.7, 1.9, 2.1];
|
|
const soulBladeLevel = source.m.soulBladeLevel || 1;
|
|
return this.chainModify(soulBladePower[soulBladeLevel - 1]);
|
|
},
|
|
onSourceAfterFaint(length, target, source, effect) {
|
|
if (effect && effect.effectType === "Move") {
|
|
if (!source.m.soulBladeLevel)
|
|
source.m.soulBladeLevel = 1;
|
|
if (source.m.soulBladeLevel < 6)
|
|
this.add("-activate", source, "item: Soul Blade");
|
|
source.m.soulBladeLevel += 1;
|
|
if (source.m.soulBladeLevel > 6)
|
|
source.m.soulBladeLevel = 6;
|
|
}
|
|
},
|
|
gen: 8,
|
|
desc: "The holder's moves deal 1.1x damage + .2x for every KO it has."
|
|
}
|
|
};
|
|
//# sourceMappingURL=items.js.map
|