{ "version": 3, "sources": ["../../../../../data/mods/gen8joltemons/abilities.ts"], "sourcesContent": ["export const Abilities: {[k: string]: ModdedAbilityData} = {\r\n\tschooling: {\r\n\t\tonStart(pokemon) {\r\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Wishiwashi' || pokemon.level < 20 || pokemon.transformed) return;\r\n\t\t\tif (pokemon.hp > pokemon.maxhp / 4 || pokemon.hasItem('graduationscale')) {\r\n\t\t\t\tif (pokemon.species.id === 'wishiwashi') {\r\n\t\t\t\t\tpokemon.formeChange('Wishiwashi-School');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (pokemon.species.id === 'wishiwashischool') {\r\n\t\t\t\t\tpokemon.formeChange('Wishiwashi');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonResidualOrder: 27,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (\r\n\t\t\t\tpokemon.baseSpecies.baseSpecies !== 'Wishiwashi' || pokemon.level < 20 ||\r\n\t\t\t\tpokemon.transformed || !pokemon.hp\r\n\t\t\t) return;\r\n\t\t\tif (pokemon.hp > pokemon.maxhp / 4 || pokemon.hasItem('graduationscale')) {\r\n\t\t\t\tif (pokemon.species.id === 'wishiwashi') {\r\n\t\t\t\t\tpokemon.formeChange('Wishiwashi-School');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (pokemon.species.id === 'wishiwashischool') {\r\n\t\t\t\t\tpokemon.formeChange('Wishiwashi');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tinherit: true,\r\n\t},\r\n\tlightpower: {\r\n\t\tonModifySpAPriority: 5,\r\n\t\tonModifySpA(spa) {\r\n\t\t\treturn this.chainModify(2);\r\n\t\t},\r\n\t\tname: \"Light Power\",\r\n\t\tshortDesc: \"This Pokemon's Special Attack is doubled.\",\r\n\t\trating: 5,\r\n\t},\r\n\traindish: {\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 2,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (this.field.isWeather(['raindance', 'primordialsea'])) return;\r\n\t\t\tthis.heal(pokemon.maxhp / 16);\r\n\t\t},\r\n\t\tonWeather(target, source, effect) {\r\n\t\t\tif (effect.id === 'raindance' || effect.id === 'primordialsea') {\r\n\t\t\t\tthis.heal(target.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Rain Dish\",\r\n\t\tshortDesc: \"Heals 6.25% of user's max HP at the end of each turn. Heals 12.5% in Rain.\",\r\n\t\tnum: 44,\r\n\t\trating: 3,\r\n\t},\r\n\ticebody: {\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 2,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (this.field.isWeather('hail')) return;\r\n\t\t\tthis.heal(pokemon.maxhp / 16);\r\n\t\t},\r\n\t\tonWeather(target, source, effect) {\r\n\t\t\tif (effect.id === 'hail') {\r\n\t\t\t\tthis.heal(target.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Ice Body\",\r\n\t\tshortDesc: \"Heals 6.25% of user's max HP at the end of each turn. Heals 12.5% in Hail.\",\r\n\t\tnum: 115,\r\n\t\trating: 3,\r\n\t},\r\n\tsweetveil: {\r\n\t\tname: \"Sweet Veil\",\r\n\t\tshortDesc: \"This Pokemon and its allies can't fall asleep. This Pokemon heals 1/8 of its max HP if it's holding Honey.\",\r\n\t\tonAllySetStatus(status, target, source, effect) {\r\n\t\t\tif (status.id === 'slp') {\r\n\t\t\t\tthis.debug('Sweet Veil interrupts sleep');\r\n\t\t\t\tconst effectHolder = this.effectState.target;\r\n\t\t\t\tthis.add('-block', target, 'ability: Sweet Veil', '[of] ' + effectHolder);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonAllyTryAddVolatile(status, target) {\r\n\t\t\tif (status.id === 'yawn') {\r\n\t\t\t\tthis.debug('Sweet Veil blocking yawn');\r\n\t\t\t\tconst effectHolder = this.effectState.target;\r\n\t\t\t\tthis.add('-block', target, 'ability: Sweet Veil', '[of] ' + effectHolder);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonResidualOrder: 26,\r\n\t\tonResidualSubOrder: 1,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (pokemon.hasItem('honey')) {\r\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\trating: 2,\r\n\t\tnum: 175,\r\n\t},\r\n\tlibero: {\r\n\t\tshortDesc: \"Non-STAB moves have 1.2x power.\",\r\n\t\tonBasePowerPriority: 23,\r\n\t\tonBasePower(basePower, pokemon, target, move) {\r\n\t\t\tif (!pokemon.hasType(move.type)) {\r\n\t\t\t\treturn this.chainModify(1.2);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Libero\",\r\n\t\trating: 4.5,\r\n\t\tnum: 236,\r\n\t},\r\n\tmoody: {\r\n\t\tshortDesc: \"This Pokemon's lowest stat goes up by 1 every turn.\",\r\n\t\tonResidualOrder: 26,\r\n\t\tonResidualSubOrder: 1,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (pokemon.activeTurns) {\r\n\t\t\t\tlet statName = 'atk';\r\n\t\t\t\tlet worstStat = 3000; // The highest possible stat number (with boosts) is 2,676\r\n\t\t\t\tlet s: StatIDExceptHP;\r\n\t\t\t\tfor (s in pokemon.storedStats) {\r\n\t\t\t\t\tif (pokemon.storedStats[s] >= worstStat) continue;\r\n\t\t\t\t\tstatName = s;\r\n\t\t\t\t\tworstStat = pokemon.storedStats[s];\r\n\t\t\t\t}\r\n\t\t\t\tthis.boost({[statName]: 1}, pokemon, pokemon);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Moody\",\r\n\t\trating: 3,\r\n\t\tnum: 141,\r\n\t},\r\n\tstickyhold: {\r\n\t\tonTakeItem(item, pokemon, source) {\r\n\t\t\tif (this.suppressingAbility(pokemon) || !pokemon.hp || pokemon.item === 'stickybarb') return;\r\n\t\t\tif (!this.activeMove) throw new Error(\"Battle.activeMove is null\");\r\n\t\t\tif ((source && source !== pokemon) || this.activeMove.id === 'knockoff') {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Sticky Hold');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifyDamage(damage, source, target, move) {\r\n\t\t\tif (move.name === 'Knock Off') {\r\n\t\t\t\tthis.debug('Sticky Hold weaken');\r\n\t\t\t\treturn this.chainModify(0.67);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonTryHit(pokemon, target, move) {\r\n\t\t\tif (move.name === 'Poltergeist') {\r\n\t\t\t\tthis.add('-immune', pokemon, '[from] ability: Sticky Hold');\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Sticky Hold\",\r\n\t\trating: 2,\r\n\t\tnum: 60,\r\n\t},\r\n\twatercompaction: {\r\n\t\tshortDesc: \"This Pokemon's Defense goes up 2 stages when hit by a Water-type move; Water immunity.\",\r\n\t\tonTryHitPriority: 1,\r\n\t\tonTryHit(target, source, move) {\r\n\t\t\tif (target !== source && move.type === 'Water') {\r\n\t\t\t\tif (!this.boost({def: 2})) {\r\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Water Compaction');\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonAllyTryHitSide(target, source, move) {\r\n\t\t\tif (target === this.effectState.target || target.side !== source.side) return;\r\n\t\t\tif (move.type === 'Water') {\r\n\t\t\t\tthis.boost({def: 2}, this.effectState.target);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Water Compaction\",\r\n\t\trating: 3,\r\n\t\tnum: 195,\r\n\t},\r\n\tironfist: {\r\n\t\tshortDesc: \"This Pokemon's punch attacks have 1.25x power and don't make contact. Sucker Punch is not boosted.\",\r\n\t\tonBasePowerPriority: 23,\r\n\t\tonBasePower(basePower, attacker, defender, move) {\r\n\t\t\tif (move.flags['punch']) {\r\n\t\t\t\tthis.debug('Iron Fist boost');\r\n\t\t\t\treturn this.chainModify([0x1400, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifyMove(move) {\r\n\t\t\tif (move.flags['punch']) {\r\n\t\t\t\tdelete move.flags['contact'];\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Iron Fist\",\r\n\t\trating: 3,\r\n\t\tnum: 89,\r\n\t},\r\n\toverclock: {\r\n\t\tshortDesc: \"This Pokemon's moves that lower its stats have 1.3x power.\",\r\n\t\tonBasePowerPriority: 23,\r\n\t\tonBasePower(basePower, attacker, defender, move) {\r\n\t\t\tconst statLoweringMoves = [\r\n\t\t\t\t'Draco Meteor', 'Fleur Cannon', 'Leaf Storm', 'Overheat', 'Psycho Boost', 'Superpower',\r\n\t\t\t\t'Lightning Lance', 'Clanging Scales', 'Close Combat', 'Dragon Ascent', 'Hyperspace Fury',\r\n\t\t\t\t'Scale Shot', 'V-create', 'Hammer Arm', 'Ice Hammer',\r\n\t\t\t];\r\n\t\t\tif (statLoweringMoves.includes(move.name)) {\r\n\t\t\t\treturn this.chainModify(1.3);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Overclock\",\r\n\t\trating: 4,\r\n\t},\r\n\tpricklycoat: {\r\n\t\tshortDesc: \"This Pokemon sets a layer of Spikes when hit by a contact move, or Toxic Spikes if it's a Poison-type or hit by a Poison-type move.\",\r\n\t\tonDamagingHitOrder: 1,\r\n\t\tonDamagingHit(damage, target, source, move) {\r\n\t\t\tif (move.flags['contact']) {\r\n\t\t\t\tthis.add('-ability', target, 'Prickly Coat');\r\n\t\t\t\tif (move.type === 'Poison' || target.hasType('Poison')) {\r\n\t\t\t\t\ttarget.side.foe.addSideCondition('toxicspikes');\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget.side.foe.addSideCondition('spikes');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Prickly Coat\",\r\n\t\trating: 3,\r\n\t},\r\n\tsandveil: {\r\n\t\tdesc: \"If Sandstorm is active, this Pokemon's SpD is multiplied by 1.5. This Pokemon takes no damage from Sandstorm.\",\r\n\t\tshortDesc: \"If Sandstorm is active, this Pokemon's SpD is boosted 1.5x; immunity to Sandstorm.\",\r\n\t\tonImmunity(type, pokemon) {\r\n\t\t\tif (type === 'sandstorm') return false;\r\n\t\t},\r\n\t\tonModifySpD(spd, pokemon) {\r\n\t\t\tif (this.field.isWeather('sandstorm')) {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Sand Veil\",\r\n\t\trating: 3,\r\n\t\tnum: 146,\r\n\t},\r\n\tsnowcloak: {\r\n\t\tdesc: \"If Hail is active, this Pokemon's Ice, Water, and Fairy-type moves deal 1.3x damage. This Pokemon takes no damage from Hail.\",\r\n\t\tshortDesc: \"This Pokemon's Ice/Water/Fairy attacks deal 1.3x damage in Hail; immunity to Hail.\",\r\n\t\tonImmunity(type, pokemon) {\r\n\t\t\tif (type === 'hail') return false;\r\n\t\t},\r\n\t\tonBasePowerPriority: 21,\r\n\t\tonBasePower(basePower, attacker, defender, move) {\r\n\t\t\tif (this.field.isWeather('hail')) {\r\n\t\t\t\tif (move.type === 'Ice' || move.type === 'Water' || move.type === 'Fairy') {\r\n\t\t\t\t\tthis.debug('Snow Cloak boost');\r\n\t\t\t\t\treturn this.chainModify([0x14CD, 0x1000]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Snow Cloak\",\r\n\t\trating: 3,\r\n\t\tnum: 81,\r\n\t},\r\n\tpowerofalchemy: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy\",\r\n\t\trating: 0,\r\n\t\tnum: 223,\r\n\t},\r\n\tpowerofalchemymukalola: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonModifyMove(move) {\r\n\t\t\tif (!move || !move.flags['contact'] || move.target === 'self') return;\r\n\t\t\tif (!move.secondaries) {\r\n\t\t\t\tmove.secondaries = [];\r\n\t\t\t}\r\n\t\t\tmove.secondaries.push({\r\n\t\t\t\tchance: 30,\r\n\t\t\t\tstatus: 'psn',\r\n\t\t\t\tability: this.dex.abilities.get('poisontouch'),\r\n\t\t\t});\r\n\t\t},\r\n\t\tonSourceAfterFaint(length, target, source, effect) {\r\n\t\t\tif (effect && effect.effectType === 'Move') {\r\n\t\t\t\tthis.add('-activate', source, 'ability: Scavenge');\r\n\t\t\t\tthis.heal(source.baseMaxhp / 3, source, source, effect);\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Muk-Alola)\",\r\n\t\trating: 5,\r\n\t},\r\n\tmerciless: {\r\n\t\tshortDesc: \"This Pokemon's attacks are critical hits if the target is statused.\",\r\n\t\tonModifyCritRatio(critRatio, source, target) {\r\n\t\t\tif (target?.status) return 5;\r\n\t\t},\r\n\t\tname: \"Merciless\",\r\n\t\trating: 1.5,\r\n\t\tnum: 196,\r\n\t},\r\n\tpastelveil: {\r\n\t\tshortDesc: \"This Pokemon and its allies cannot be poisoned. Poison-type moves have 0.5x power against this Pokemon and its allies. On switch-in, cures poisoned allies.\",\r\n\t\tonStart(pokemon) {\r\n\t\t\tfor (const ally of pokemon.allies()) {\r\n\t\t\t\tif (['psn', 'tox'].includes(ally.status)) {\r\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Pastel Veil');\r\n\t\t\t\t\tally.cureStatus();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonUpdate(pokemon) {\r\n\t\t\tif (['psn', 'tox'].includes(pokemon.status)) {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Pastel Veil');\r\n\t\t\t\tpokemon.cureStatus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonAllySwitchIn(pokemon) {\r\n\t\t\tif (['psn', 'tox'].includes(pokemon.status)) {\r\n\t\t\t\tthis.add('-activate', this.effectState.target, 'ability: Pastel Veil');\r\n\t\t\t\tpokemon.cureStatus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSetStatus(status, target, source, effect) {\r\n\t\t\tif (!['psn', 'tox'].includes(status.id)) return;\r\n\t\t\tif ((effect as Move)?.status) {\r\n\t\t\t\tthis.add('-immune', target, '[from] ability: Pastel Veil');\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\tonAllySetStatus(status, target, source, effect) {\r\n\t\t\tif (!['psn', 'tox'].includes(status.id)) return;\r\n\t\t\tif ((effect as Move)?.status) {\r\n\t\t\t\tconst effectHolder = this.effectState.target;\r\n\t\t\t\tthis.add('-block', target, 'ability: Pastel Veil', '[of] ' + effectHolder);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\tonSourceModifyAtkPriority: 6,\r\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\r\n\t\t\tif (move.type === 'Poison') {\r\n\t\t\t\tthis.debug('Pastel Veil weaken');\r\n\t\t\t\treturn this.chainModify(0.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifySpAPriority: 5,\r\n\t\tonSourceModifySpA(atk, attacker, defender, move) {\r\n\t\t\tif (move.type === 'Poison') {\r\n\t\t\t\tthis.debug('Pastel Veil weaken');\r\n\t\t\t\treturn this.chainModify(0.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Pastel Veil\",\r\n\t\trating: 2,\r\n\t\tnum: 257,\r\n\t},\r\n\tgravitation: {\r\n\t\tshortDesc: \"On switch-in, this Pokemon summons Gravity.\",\r\n\t\tonStart(source) {\r\n\t\t\tthis.add('-ability', source, 'Gravitation');\r\n\t\t\tthis.field.addPseudoWeather('gravity', source, source.getAbility());\r\n\t\t},\r\n\t\tname: \"Gravitation\",\r\n\t\trating: 4,\r\n\t},\r\n\tbuzzoff: {\r\n\t\tshortDesc: \"This Pokemon switches out after using a Bug-type move.\",\r\n\t\tonModifyMove(move, pokemon) {\r\n\t\t\tif (move.type === 'Bug') {\r\n\t\t\t\tmove.selfSwitch = true;\r\n\t\t\t\tthis.add('-ability', pokemon, 'Buzz Off');\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Buzz Off\",\r\n\t\trating: 4.5,\r\n\t},\r\n\tmagmaarmor: {\r\n\t\tonUpdate(pokemon) {\r\n\t\t\tif (pokemon.status === 'frz') {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Magma Armor');\r\n\t\t\t\tpokemon.cureStatus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonImmunity(type, pokemon) {\r\n\t\t\tif (type === 'hail') return false;\r\n\t\t\tif (type === 'frz') return false;\r\n\t\t},\r\n\t\tonSourceModifyAtkPriority: 6,\r\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\r\n\t\t\tif (move.type === 'Ice' || move.type === 'Water') {\r\n\t\t\t\tthis.debug('Magma Armor weaken');\r\n\t\t\t\treturn this.chainModify(0.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifySpAPriority: 5,\r\n\t\tonSourceModifySpA(atk, attacker, defender, move) {\r\n\t\t\tif (move.type === 'Ice' || move.type === 'Water') {\r\n\t\t\t\tthis.debug('Magma Armor weaken');\r\n\t\t\t\treturn this.chainModify(0.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Magma Armor\",\r\n\t\trating: 2,\r\n\t\tnum: 40,\r\n\t\tshortDesc: \"Water/Ice-type moves against this Pokemon deal damage with a halved attacking stat. Hail & Freeze immunity.\",\r\n\t},\r\n\tleafguard: {\r\n\t\tonSetStatus(status, target, source, effect) {\r\n\t\t\tif (['sunnyday', 'desolateland'].includes(target.effectiveWeather())) {\r\n\t\t\t\tif ((effect as Move)?.status) {\r\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Leaf Guard');\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonTryAddVolatile(status, target) {\r\n\t\t\tif ((status.id === 'yawn' || status.id === 'flinch') &&\r\n\t\t\t\t['sunnyday', 'desolateland'].includes(target.effectiveWeather())) {\r\n\t\t\t\tthis.add('-immune', target, '[from] ability: Leaf Guard');\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifyAtkPriority: 6,\r\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\r\n\t\t\tif (move.type === 'Flying' || move.type === 'Bug') {\r\n\t\t\t\tthis.debug('Leaf Guard weaken');\r\n\t\t\t\treturn this.chainModify(0.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifySpAPriority: 5,\r\n\t\tonSourceModifySpA(atk, attacker, defender, move) {\r\n\t\t\tif (move.type === 'Flying' || move.type === 'Bug') {\r\n\t\t\t\tthis.debug('Leaf Guard weaken');\r\n\t\t\t\treturn this.chainModify(0.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Leaf Guard\",\r\n\t\trating: 0.5,\r\n\t\tnum: 102,\r\n\t\tshortDesc: \"Flying/Bug-type moves against this Pokemon deal damage with a halved attacking stat. Can't be statused or flinched by others in Sun.\",\r\n\t},\r\n\r\n\tsoullink: {\r\n\t\tonDamagingHitOrder: 1,\r\n\t\tonDamagingHit(damage, target, source, move) {\r\n\t\t\tif (move.flags['contact'] && !source.hasType('Ghost') && source.addType('Ghost')) {\r\n\t\t\t\tthis.add('-start', source, 'typeadd', 'Ghost', '[from] ability: Soul Link');\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Soul Link\",\r\n\t\tshortDesc: \"Pok\u00E9mon that make contact with this Pok\u00E9mon have the Ghost-type added to their existing typings until they switch out (Trick-or-Treat effect).\",\r\n\t\trating: 2.5,\r\n\t},\r\n\twanderingspirit: {\r\n\t\tshortDesc: \"On switch-in, swaps ability with the opponent.\",\r\n\t\tonSwitchIn(pokemon) {\r\n\t\t\tthis.effectState.switchingIn = true;\r\n\t\t},\r\n\t\tonStart(pokemon) {\r\n\t\t\tif (pokemon.foes().some(\r\n\t\t\t\tfoeActive => foeActive && foeActive.isAdjacent(pokemon) && foeActive.ability === 'noability'\r\n\t\t\t) || ![\r\n\t\t\t\t'spiritomb', 'spectrier', 'yamaskgalar', 'runerigus', 'cofagrigus', 'cacturne', 'hoopa', 'marowak', 'rotom',\r\n\t\t\t].includes(pokemon.species.id)) {\r\n\t\t\t\tthis.effectState.gaveUp = true;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonUpdate(pokemon) {\r\n\t\t\tif (!pokemon.isStarted || this.effectState.gaveUp) return;\r\n\t\t\tif (!this.effectState.switchingIn) return;\r\n\t\t\tconst possibleTargets = pokemon.foes().filter(foeActive => foeActive && foeActive.isAdjacent(pokemon));\r\n\t\t\twhile (possibleTargets.length) {\r\n\t\t\t\tlet rand = 0;\r\n\t\t\t\tif (possibleTargets.length > 1) rand = this.random(possibleTargets.length);\r\n\t\t\t\tconst target = possibleTargets[rand];\r\n\t\t\t\tconst ability = target.getAbility();\r\n\t\t\t\tconst additionalBannedAbilities = [\r\n\t\t\t\t\t// Zen Mode included here for compatability with Gen 5-6\r\n\t\t\t\t\t'noability', 'flowergift', 'forecast', 'hungerswitch', 'illusion', 'wanderingspirit',\r\n\t\t\t\t\t'imposter', 'neutralizinggas', 'powerofalchemy', 'receiver', 'trace', 'zenmode', 'concussion', 'gorillatactics', 'counterfeit',\r\n\t\t\t\t];\r\n\t\t\t\tif (target.getAbility().isPermanent || additionalBannedAbilities.includes(target.ability)) {\r\n\t\t\t\t\tpossibleTargets.splice(rand, 1);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\ttarget.setAbility('wanderingspirit', pokemon);\r\n\t\t\t\tpokemon.setAbility(ability);\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Wandering Spirit', ability.name, 'Wandering Spirit', '[of] ' + target);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Wandering Spirit\",\r\n\t\trating: 4,\r\n\t\tnum: 254,\r\n\t},\r\n\thoneygather: {\r\n\t\tname: \"Honey Gather\",\r\n\t\tshortDesc: \"At the end of each turn, if this Pokemon has no item, it gets Honey. Knock Off doesn't get boosted against Pokemon with this ability.\",\r\n\t\tonResidualOrder: 26,\r\n\t\tonResidualSubOrder: 1,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (pokemon.hp && !pokemon.item) {\r\n\t\t\t\tpokemon.setItem('honey');\r\n\t\t\t\tthis.add('-item', pokemon, pokemon.getItem(), '[from] ability: Honey Gather');\r\n\t\t\t}\r\n\t\t\tif (pokemon.hasItem('honey')) {\r\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifyDamage(damage, source, target, move) {\r\n\t\t\tif (move.name === 'Knock Off') {\r\n\t\t\t\tthis.debug('Honey Gather weaken');\r\n\t\t\t\treturn this.chainModify(0.67);\r\n\t\t\t}\r\n\t\t},\r\n\t\trating: 3,\r\n\t\tnum: 118,\r\n\t},\r\n\thydration: {\r\n\t\tshortDesc: \"This Pokemon has its status cured at the end of each turn if Rain Dance is active or it gets hit by a Water move; Water immunity. Heals 12.5% HP if hit by a Water move.\",\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 4,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (pokemon.status && ['raindance', 'primordialsea'].includes(pokemon.effectiveWeather())) {\r\n\t\t\t\tthis.debug('hydration');\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Hydration');\r\n\t\t\t\tthis.add('-message', `Hydration activated!`);\r\n\t\t\t\tpokemon.cureStatus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonTryHit(target, source, move) {\r\n\t\t\tif (target !== source && move.type === 'Water') {\r\n\t\t\t\tif (!this.heal(target.baseMaxhp / 8) || !target.cureStatus()) {\r\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Hydration');\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Hydration\",\r\n\t\trating: 1.5,\r\n\t\tnum: 93,\r\n\t},\r\n\tparentalbond: {\r\n\t\tonPrepareHit(source, target, move) {\r\n\t\t\tif (move.category === 'Status' || move.selfdestruct || move.multihit) return;\r\n\t\t\tconst noParentalBond = [\r\n\t\t\t\t'endeavor', 'seismictoss', 'psywave', 'nightshade', 'sonicboom', 'dragonrage',\r\n\t\t\t\t'superfang', 'naturesmadness', 'bide', 'counter', 'mirrorcoat', 'metalburst',\r\n\t\t\t];\r\n\t\t\tif (noParentalBond.includes(move.id)) return;\r\n\t\t\tif (!move.spreadHit && !move.isZ && !move.isMax) {\r\n\t\t\t\tmove.multihit = 2;\r\n\t\t\t\tmove.multihitType = 'parentalbond';\r\n\t\t\t}\r\n\t\t},\r\n\t\tonBasePowerPriority: 7,\r\n\t\tonBasePower(basePower, pokemon, target, move) {\r\n\t\t\tif (move.multihitType === 'parentalbond' && move.hit > 1) return this.chainModify(0.25);\r\n\t\t},\r\n\t\tonSourceModifySecondaries(secondaries, target, source, move) {\r\n\t\t\tif (move.multihitType === 'parentalbond' && move.id === 'secretpower' && move.hit < 2) {\r\n\t\t\t\t// hack to prevent accidentally suppressing King's Rock/Razor Fang\r\n\t\t\t\treturn secondaries.filter(effect => effect.volatileStatus === 'flinch');\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Parental Bond\",\r\n\t\trating: 4.5,\r\n\t\tnum: 184,\r\n\t},\r\n\tscavenge: {\r\n\t\tshortDesc: \"This Pokemon's heals 33% of its HP when another Pokemon faints.\",\r\n\t\tonSourceAfterFaint(length, target, source, effect) {\r\n\t\t\tif (effect && effect.effectType === 'Move') {\r\n\t\t\t\tthis.add('-activate', source, 'ability: Scavenge');\r\n\t\t\t\tthis.heal(source.baseMaxhp / 3, source, source, effect);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Scavenge\",\r\n\t\trating: 3.5,\r\n\t},\r\n\tunimpressed: {\r\n\t\tshortDesc: \"Moves used against this Pokemon don't receive STAB.\",\r\n\t\tonSourceModifyDamage(damage, source, target, move) {\r\n\t\t\tif (source.hasType(move.type)) {\r\n\t\t\t\tthis.debug('Unimpressed weaken');\r\n\t\t\t\treturn this.chainModify(source.hasAbility('adaptability') ? 0.5 : 0.67);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Unimpressed\",\r\n\t\trating: 3.5,\r\n\t},\r\n\tcounterfeit: {\r\n\t\tshortDesc: \"On switch-in, identifies and copies the effect of the opponent's held item.\",\r\n\t\tonStart(pokemon) {\r\n\t\t\tif (pokemon.foes().some(\r\n\t\t\t\tfoeActive => foeActive && foeActive.isAdjacent(pokemon) && !foeActive.item\r\n\t\t\t)) {\r\n\t\t\t\tthis.effectState.gaveUp = true;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonUpdate(pokemon) {\r\n\t\t\tif (!pokemon.isStarted || this.effectState.gaveUp) return;\r\n\t\t\tconst possibleTargets = pokemon.foes().filter(foeActive => foeActive && foeActive.isAdjacent(pokemon));\r\n\t\t\twhile (possibleTargets.length) {\r\n\t\t\t\tlet rand = 0;\r\n\t\t\t\tif (possibleTargets.length > 1) rand = this.random(possibleTargets.length);\r\n\t\t\t\tconst target = possibleTargets[rand];\r\n\t\t\t\tconst item = target.getItem();\r\n\t\t\t\tconst additionalBannedItems = [\r\n\t\t\t\t\t// Zen Mode included here for compatability with Gen 5-6\r\n\t\t\t\t\t'noability', 'flowergift', 'forecast', 'hungerswitch', 'illusion', 'imposter',\r\n\t\t\t\t\t'neutralizinggas', 'powerofalchemy', 'receiver', 'trace', 'zenmode',\r\n\t\t\t\t];\r\n\t\t\t\tif (!this.singleEvent('TakeItem', item, target.itemState, target, pokemon, this.effect, item) ||\r\n\t\t\t\t\tadditionalBannedItems.includes(target.item)) {\r\n\t\t\t\t\tpossibleTargets.splice(rand, 1);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tthis.add('-ability', pokemon, item, '[from] ability: Counterfeit', '[of] ' + target);\r\n\t\t\t\tpokemon.setAbility(item as unknown as Ability);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Counterfeit\",\r\n\t\trating: 3.5,\r\n\t},\r\n\toptimistic: {\r\n\t\tonTryBoost(boost, target, source, effect) {\r\n\t\t\tif (source && target !== source) return;\r\n\t\t\tlet showMsg = false;\r\n\t\t\tlet i: BoostID;\r\n\t\t\tfor (i in boost) {\r\n\t\t\t\tif (boost[i]! < 0) {\r\n\t\t\t\t\tdelete boost[i];\r\n\t\t\t\t\tshowMsg = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (showMsg && !(effect as ActiveMove).secondaries && effect.id !== 'octolock') {\r\n\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"[from] ability: Optimistic\", \"[of] \" + target);\r\n\t\t\t}\r\n\t\t},\r\n\t\tshortDesc: \"This Pokemon can't lower its own stats.\",\r\n\t\tname: \"Optimistic\",\r\n\t\trating: 5,\r\n\t},\r\n\trivalry: {\r\n\t\tonBasePowerPriority: 24,\r\n\t\tonBasePower(basePower, pokemon, target) {\r\n\t\t\tif (target.hasType(pokemon.getTypes())) {\r\n\t\t\t\treturn this.chainModify(1.33);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Rivalry\",\r\n\t\trating: 0,\r\n\t\tnum: 79,\r\n\t\tshortDesc: \"This Pokemon's moves deal 1.33x damage to targets that share a type with it.\",\r\n\t},\r\n\tvaporcontrol: {\r\n\t\tonUpdate(pokemon) {\r\n\t\t\tif (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather()) && !pokemon.side.getSideCondition('mist')) {\r\n\t\t\t\tthis.actions.useMove(\"Mist\", pokemon);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonBasePowerPriority: 21,\r\n\t\tonBasePower(basePower, attacker, defender, move) {\r\n\t\t\tif ((this.field.isWeather('sunnyday') || this.field.isWeather('desolateland')) &&\r\n\t\t\t\tmove.type === 'Water') {\r\n\t\t\t\tthis.debug('Vapor Control boost');\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tshortDesc: \"If Sun is active, 1.5x power Water moves and sets Mist; Ignores Sun Water drop.\",\r\n\t\tname: \"Vapor Control\",\r\n\t\trating: 3,\r\n\t},\r\n\t// Edited by proxy\r\n\toblivious: {\r\n\t\tonUpdate(pokemon) {\r\n\t\t\tif (pokemon.volatiles['attract']) {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Oblivious');\r\n\t\t\t\tpokemon.removeVolatile('attract');\r\n\t\t\t\tthis.add('-end', pokemon, 'move: Attract', '[from] ability: Oblivious');\r\n\t\t\t}\r\n\t\t\tif (pokemon.volatiles['taunt']) {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Oblivious');\r\n\t\t\t\tpokemon.removeVolatile('taunt');\r\n\t\t\t\t// Taunt's volatile already sends the -end message when removed\r\n\t\t\t}\r\n\t\t\tif (pokemon.volatiles['trashtalk']) {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Oblivious');\r\n\t\t\t\tpokemon.removeVolatile('trashtalk');\r\n\t\t\t}\r\n\t\t},\r\n\t\tonImmunity(type, pokemon) {\r\n\t\t\tif (type === 'attract' || type === 'trashtalk') return false;\r\n\t\t},\r\n\t\tonTryHit(pokemon, target, move) {\r\n\t\t\tif (move.id === 'attract' || move.id === 'captivate' || move.id === 'taunt') {\r\n\t\t\t\tthis.add('-immune', pokemon, '[from] ability: Oblivious');\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Oblivious\",\r\n\t\trating: 1.5,\r\n\t\tnum: 12,\r\n\t},\r\n\taromaveil: {\r\n\t\tonAllyTryAddVolatile(status, target, source, effect) {\r\n\t\t\tif (['attract', 'disable', 'encore', 'healblock', 'taunt', 'torment', 'trashtalk'].includes(status.id)) {\r\n\t\t\t\tif (effect.effectType === 'Move') {\r\n\t\t\t\t\tconst effectHolder = this.effectState.target;\r\n\t\t\t\t\tthis.add('-block', target, 'ability: Aroma Veil', '[of] ' + effectHolder);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Aroma Veil\",\r\n\t\trating: 2,\r\n\t\tnum: 165,\r\n\t},\r\n\ttrace: {\r\n\t\tonStart(pokemon) {\r\n\t\t\tif (pokemon.foes().some(\r\n\t\t\t\tfoeActive => foeActive && foeActive.isAdjacent(pokemon) && foeActive.ability === 'noability'\r\n\t\t\t)) {\r\n\t\t\t\tthis.effectState.gaveUp = true;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonUpdate(pokemon) {\r\n\t\t\tif (!pokemon.isStarted || this.effectState.gaveUp) return;\r\n\t\t\tconst possibleTargets = pokemon.foes().filter(foeActive => foeActive && foeActive.isAdjacent(pokemon));\r\n\t\t\twhile (possibleTargets.length) {\r\n\t\t\t\tlet rand = 0;\r\n\t\t\t\tif (possibleTargets.length > 1) rand = this.random(possibleTargets.length);\r\n\t\t\t\tconst target = possibleTargets[rand];\r\n\t\t\t\tconst ability = target.getAbility();\r\n\t\t\t\tconst additionalBannedAbilities = [\r\n\t\t\t\t\t// Zen Mode included here for compatability with Gen 5-6\r\n\t\t\t\t\t'noability', 'flowergift', 'forecast', 'hungerswitch', 'illusion', 'imposter', 'neutralizinggas',\r\n\t\t\t\t\t'powerofalchemy', 'receiver', 'trace', 'zenmode', 'wanderingspirit',\r\n\t\t\t\t];\r\n\t\t\t\tif (target.getAbility().isPermanent || additionalBannedAbilities.includes(target.ability)) {\r\n\t\t\t\t\tpossibleTargets.splice(rand, 1);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tthis.add('-ability', pokemon, ability, '[from] ability: Trace', '[of] ' + target);\r\n\t\t\t\tpokemon.setAbility(ability);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Trace\",\r\n\t\trating: 2.5,\r\n\t\tnum: 36,\r\n\t},\r\n\tconcussion: {\r\n\t\tname: \"Concussion\",\r\n\t\tshortDesc: \"While this Pokemon is active, the opponents' held items have no effect.\",\r\n\t\tonStart(source) {\r\n\t\t\tlet activated = false;\r\n\t\t\tfor (const pokemon of source.foes()) {\r\n\t\t\t\tif (!activated) {\r\n\t\t\t\t\tthis.add('-ability', source, 'Concussion');\r\n\t\t\t\t}\r\n\t\t\t\tactivated = true;\r\n\t\t\t\tif (!pokemon.volatiles['embargo'] && !pokemon.hasItem('morningblossom')) {\r\n\t\t\t\t\tpokemon.addVolatile('embargo');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonAnySwitchIn(pokemon) {\r\n\t\t\tconst source = this.effectState.target;\r\n\t\t\tif (pokemon === source) return;\r\n\t\t\tfor (const target of source.foes()) {\r\n\t\t\t\tif (!target.volatiles['embargo'] && !target.hasItem('morningblossom')) {\r\n\t\t\t\t\ttarget.addVolatile('embargo');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonEnd(pokemon) {\r\n\t\t\tfor (const target of pokemon.foes()) {\r\n\t\t\t\ttarget.removeVolatile('embargo');\r\n\t\t\t}\r\n\t\t},\r\n\t\trating: 4,\r\n\t},\r\n\tgorillatactics: {\r\n\t\tname: \"Gorilla Tactics\",\r\n\t\tshortDesc: \"While this Pokemon is active, the opponents' held items have no effect.\",\r\n\t\tonStart(source) {\r\n\t\t\tlet activated = false;\r\n\t\t\tfor (const pokemon of source.foes()) {\r\n\t\t\t\tif (!activated) {\r\n\t\t\t\t\tthis.add('-ability', source, 'Gorilla Tactics');\r\n\t\t\t\t}\r\n\t\t\t\tactivated = true;\r\n\t\t\t\tif (!pokemon.volatiles['embargo'] && !pokemon.hasItem('morningblossom')) {\r\n\t\t\t\t\tpokemon.addVolatile('embargo');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonAnySwitchIn(pokemon) {\r\n\t\t\tconst source = this.effectState.target;\r\n\t\t\tif (pokemon === source) return;\r\n\t\t\tfor (const target of source.foes()) {\r\n\t\t\t\tif (!target.volatiles['embargo'] && !target.hasItem('morningblossom')) {\r\n\t\t\t\t\ttarget.addVolatile('embargo');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonEnd(pokemon) {\r\n\t\t\tfor (const target of pokemon.foes()) {\r\n\t\t\t\ttarget.removeVolatile('embargo');\r\n\t\t\t}\r\n\t\t},\r\n\t\trating: 4,\r\n\t\tnum: 255,\r\n\t},\r\n\ttoxicboost: {\r\n\t\tshortDesc: \"1.5x Attack and Defense while poisoned; Immune to poison status damage.\",\r\n\t\tonBasePowerPriority: 19,\r\n\t\tonBasePower(basePower, attacker, defender, move) {\r\n\t\t\tif ((attacker.status === 'psn' || attacker.status === 'tox') && move.category === 'Physical') {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifyDefPriority: 6,\r\n\t\tonModifyDef(def, pokemon) {\r\n\t\t\tif (pokemon.status === 'psn' || pokemon.status === 'tox') {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonDamagePriority: 1,\r\n\t\tonDamage(damage, target, source, effect) {\r\n\t\t\tif (effect.id === 'psn' || effect.id === 'tox') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Toxic Boost\",\r\n\t\trating: 2.5,\r\n\t\tnum: 137,\r\n\t},\r\n\tflareboost: {\r\n\t\tshortDesc: \"1.5x SpA and SpD while burned; Immune to burn damage.\",\r\n\t\tonBasePowerPriority: 19,\r\n\t\tonBasePower(basePower, attacker, defender, move) {\r\n\t\t\tif (attacker.status === 'brn' && move.category === 'Special') {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifySpDPriority: 6,\r\n\t\tonModifySpD(spd, pokemon) {\r\n\t\t\tif (pokemon.status === 'brn') {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonDamagePriority: 1,\r\n\t\tonDamage(damage, target, source, effect) {\r\n\t\t\tif (effect.id === 'brn') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Flare Boost\",\r\n\t\trating: 2.5,\r\n\t\tnum: 138,\r\n\t},\r\n\t// The other Power of Alchemies\r\n\tpowerofalchemyweezing: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Neutralizing Gas');\r\n\t\t\tpokemon.abilityState.ending = false;\r\n\t\t\tfor (const target of this.getAllActive()) {\r\n\t\t\t\tif (target.illusion) {\r\n\t\t\t\t\tthis.singleEvent('End', this.dex.abilities.get('Illusion'), target.abilityState, target, pokemon, 'neutralizinggas');\r\n\t\t\t\t}\r\n\t\t\t\tif (target.volatiles['slowstart']) {\r\n\t\t\t\t\tdelete target.volatiles['slowstart'];\r\n\t\t\t\t\tthis.add('-end', target, 'Slow Start', '[silent]');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonEnd(source) {\r\n\t\t\t// FIXME this happens before the pokemon switches out, should be the opposite order.\r\n\t\t\t// Not an easy fix since we cant use a supported event. Would need some kind of special event that\r\n\t\t\t// gathers events to run after the switch and then runs them when the ability is no longer accessible.\r\n\t\t\t// (If your tackling this, do note extreme weathers have the same issue)\r\n\r\n\t\t\t// Mark this pokemon's ability as ending so Pokemon#ignoringAbility skips it\r\n\t\t\tsource.abilityState.ending = true;\r\n\t\t\tfor (const pokemon of this.getAllActive()) {\r\n\t\t\t\tif (pokemon !== source) {\r\n\t\t\t\t\t// Will be suppressed by Pokemon#ignoringAbility if needed\r\n\t\t\t\t\tthis.singleEvent('Start', pokemon.getAbility(), pokemon.abilityState, pokemon);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Weezing)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyalcremie: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonTakeItem(item, pokemon, source) {\r\n\t\t\tif (this.suppressingAbility(pokemon) || !pokemon.hp || pokemon.item === 'stickybarb') return;\r\n\t\t\tif (!this.activeMove) throw new Error(\"Battle.activeMove is null\");\r\n\t\t\tif ((source && source !== pokemon) || this.activeMove.id === 'knockoff') {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Sticky Hold');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifyDamage(damage, source, target, move) {\r\n\t\t\tif (move.name === 'Knock Off') {\r\n\t\t\t\tthis.debug('Sticky Hold weaken');\r\n\t\t\t\treturn this.chainModify(0.67);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonTryHit(pokemon, target, move) {\r\n\t\t\tif (move.name === 'Poltergeist') {\r\n\t\t\t\tthis.add('-immune', pokemon, '[from] ability: Sticky Hold');\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonAllySetStatus(status, target, source, effect) {\r\n\t\t\tif (status.id === 'slp') {\r\n\t\t\t\tthis.debug('Sweet Veil interrupts sleep');\r\n\t\t\t\tconst effectHolder = this.effectState.target;\r\n\t\t\t\tthis.add('-block', target, 'ability: Sweet Veil', '[of] ' + effectHolder);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonAllyTryAddVolatile(status, target) {\r\n\t\t\tif (status.id === 'yawn') {\r\n\t\t\t\tthis.debug('Sweet Veil blocking yawn');\r\n\t\t\t\tconst effectHolder = this.effectState.target;\r\n\t\t\t\tthis.add('-block', target, 'ability: Sweet Veil', '[of] ' + effectHolder);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonResidualOrder: 26,\r\n\t\tonResidualSubOrder: 1,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (pokemon.hasItem('honey')) {\r\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Alcremie)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemymismagius: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Mismagius)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyslowkinggalar: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonStart(pokemon) {\r\n\t\t\tfor (const ally of pokemon.allies()) {\r\n\t\t\t\tally.clearBoosts();\r\n\t\t\t\tthis.add('-clearboost', ally, '[from] ability: Curious Medicine', '[of] ' + pokemon);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSwitchOut(pokemon) {\r\n\t\t\tpokemon.heal(pokemon.baseMaxhp / 3);\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Slowking-Galar)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyditto: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonUpdate(pokemon) {\r\n\t\t\tif (pokemon.status === 'par') {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Limber');\r\n\t\t\t\tpokemon.cureStatus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSetStatus(status, target, source, effect) {\r\n\t\t\tif (status.id !== 'par') return;\r\n\t\t\tif ((effect as Move)?.status) {\r\n\t\t\t\tthis.add('-immune', target, '[from] ability: Limber');\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\tonSwitchIn(pokemon) {\r\n\t\t\tthis.effectState.switchingIn = true;\r\n\t\t},\r\n\t\tonStart(pokemon) {\r\n\t\t\t// Imposter does not activate when Skill Swapped or when Neutralizing Gas leaves the field\r\n\t\t\tif (!this.effectState.switchingIn) return;\r\n\t\t\tconst target = pokemon.foes()[pokemon.foes().length - 1 - pokemon.position];\r\n\t\t\tif (target) {\r\n\t\t\t\tpokemon.transformInto(target, this.dex.abilities.get('powerofalchemyditto'));\r\n\t\t\t}\r\n\t\t\tthis.effectState.switchingIn = false;\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Ditto)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyvanillite: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonImmunity(type, pokemon) {\r\n\t\t\tif (type === 'hail') return false;\r\n\t\t},\r\n\t\tonModifyDef(def, pokemon) {\r\n\t\t\tif (this.field.isWeather('hail')) {\r\n\t\t\t\treturn this.chainModify(1.25);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifySpD(spd, pokemon) {\r\n\t\t\tif (this.field.isWeather('hail')) {\r\n\t\t\t\treturn this.chainModify(1.25);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 2,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (this.field.isWeather('hail')) return;\r\n\t\t\tthis.heal(pokemon.maxhp / 16);\r\n\t\t},\r\n\t\tonWeather(target, source, effect) {\r\n\t\t\tif (effect.id === 'hail') {\r\n\t\t\t\tthis.heal(target.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Vanillite)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyvanilluxe: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonStart(source) {\r\n\t\t\tthis.field.setWeather('hail');\r\n\t\t},\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 2,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (this.field.isWeather('hail')) return;\r\n\t\t\tthis.heal(pokemon.maxhp / 16);\r\n\t\t},\r\n\t\tonWeather(target, source, effect) {\r\n\t\t\tif (effect.id === 'hail') {\r\n\t\t\t\tthis.heal(target.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Vanilluxe)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemytypenull: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Pressure');\r\n\t\t},\r\n\t\tonDeductPP(target, source) {\r\n\t\t\tif (target.side === source.side) return;\r\n\t\t\treturn 1;\r\n\t\t},\r\n\t\tonCriticalHit: false,\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Type: Null)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemysilvally: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonStart(pokemon) {\r\n\t\t\tlet totaldef = 0;\r\n\t\t\tlet totalspd = 0;\r\n\t\t\tfor (const target of pokemon.foes()) {\r\n\t\t\t\tif (!target || target.fainted) continue;\r\n\t\t\t\ttotaldef += target.getStat('def', false, true);\r\n\t\t\t\ttotalspd += target.getStat('spd', false, true);\r\n\t\t\t}\r\n\t\t\tif (totaldef && totaldef >= totalspd) {\r\n\t\t\t\tthis.boost({spa: 1});\r\n\t\t\t} else if (totalspd) {\r\n\t\t\t\tthis.boost({atk: 1});\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Silvally)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyvaporeon: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 4,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (pokemon.status && ['raindance', 'primordialsea'].includes(pokemon.effectiveWeather())) {\r\n\t\t\t\tthis.debug('hydration');\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Hydration');\r\n\t\t\t\tthis.add('-message', `Hydration activated!`);\r\n\t\t\t\tpokemon.cureStatus();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonTryHit(target, source, move) {\r\n\t\t\tif (target !== source && move.type === 'Water') {\r\n\t\t\t\tif (!this.heal(target.baseMaxhp / 2.667) || !target.cureStatus()) {\r\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Power of Alchemy (Vaporeon)');\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Vaporeon)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyjolteon: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonTryHit(target, source, move) {\r\n\t\t\tif (target !== source && move.type === 'Electric') {\r\n\t\t\t\tif (!this.heal(target.baseMaxhp / 4)) {\r\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Volt Absorb');\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonDamagingHitOrder: 1,\r\n\t\tonDamagingHit(damage, target, source, move) {\r\n\t\t\tif (move.flags['contact']) {\r\n\t\t\t\tthis.add('-ability', target, 'Prickly Coat');\r\n\t\t\t\tif (move.type === 'Poison' || target.hasType('Poison')) {\r\n\t\t\t\t\ttarget.side.foe.addSideCondition('toxicspikes');\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget.side.foe.addSideCondition('spikes');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Jolteon)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyflareon: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonTryHit(target, source, move) {\r\n\t\t\tif (target !== source && move.type === 'Fire') {\r\n\t\t\t\tmove.accuracy = true;\r\n\t\t\t\tif (!target.addVolatile('flashfire')) {\r\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Flash Fire');\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifyDamage(damage, source, target, move) {\r\n\t\t\tlet mod = 1;\r\n\t\t\tif (move.type === 'Fire') mod *= 2;\r\n\t\t\tif (move.flags['contact']) mod /= 2;\r\n\t\t\treturn this.chainModify(mod);\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Flareon)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyespeon: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonBasePowerPriority: 21,\r\n\t\tonBasePower(basePower, pokemon) {\r\n\t\t\tlet boosted = true;\r\n\t\t\tfor (const target of this.getAllActive()) {\r\n\t\t\t\tif (target === pokemon) continue;\r\n\t\t\t\tif (this.queue.willMove(target)) {\r\n\t\t\t\t\tboosted = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (boosted) {\r\n\t\t\t\tthis.debug('Analytic boost');\r\n\t\t\t\treturn this.chainModify([0x14CD, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonTryHitPriority: 1,\r\n\t\tonTryHit(target, source, move) {\r\n\t\t\tif (target === source || move.hasBounced || !move.flags['reflectable']) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst newMove = this.dex.getActiveMove(move.id);\r\n\t\t\tnewMove.hasBounced = true;\r\n\t\t\tnewMove.pranksterBoosted = false;\r\n\t\t\tthis.actions.useMove(newMove, target, source);\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\tonAllyTryHitSide(target, source, move) {\r\n\t\t\tif (target.side === source.side || move.hasBounced || !move.flags['reflectable']) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst newMove = this.dex.getActiveMove(move.id);\r\n\t\t\tnewMove.hasBounced = true;\r\n\t\t\tnewMove.pranksterBoosted = false;\r\n\t\t\tthis.actions.useMove(newMove, this.effectState.target, source);\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\tcondition: {\r\n\t\t\tduration: 1,\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Espeon)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyumbreon: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonModifyCritRatio(critRatio, source, target) {\r\n\t\t\tif (target?.status) return 5;\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Umbreon)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyleafeon: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonSetStatus(status, target, source, effect) {\r\n\t\t\tif (['sunnyday', 'desolateland'].includes(target.effectiveWeather())) {\r\n\t\t\t\tif ((effect as Move)?.status) {\r\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Leaf Guard');\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonTryAddVolatile(status, target) {\r\n\t\t\tif ((status.id === 'yawn' || status.id === 'flinch') &&\r\n\t\t\t\t['sunnyday', 'desolateland'].includes(target.effectiveWeather())) {\r\n\t\t\t\tthis.add('-immune', target, '[from] ability: Leaf Guard');\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifyAtkPriority: 6,\r\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\r\n\t\t\tif (move.type === 'Flying' || move.type === 'Bug') {\r\n\t\t\t\tthis.debug('Leaf Guard weaken');\r\n\t\t\t\treturn this.chainModify(0.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSourceModifySpAPriority: 5,\r\n\t\tonSourceModifySpA(atk, attacker, defender, move) {\r\n\t\t\tif (move.type === 'Flying' || move.type === 'Bug') {\r\n\t\t\t\tthis.debug('Leaf Guard weaken');\r\n\t\t\t\treturn this.chainModify(0.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifySpe(spe, pokemon) {\r\n\t\t\tif (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) {\r\n\t\t\t\treturn this.chainModify(2);\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Leafeon)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemyglaceon: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonStart(source) {\r\n\t\t\tthis.field.setWeather('hail');\r\n\t\t},\r\n\t\tonImmunity(type, pokemon) {\r\n\t\t\tif (type === 'hail') return false;\r\n\t\t},\r\n\t\tonBasePowerPriority: 21,\r\n\t\tonBasePower(basePower, attacker, defender, move) {\r\n\t\t\tif (this.field.isWeather('hail')) {\r\n\t\t\t\tif (move.type === 'Ice' || move.type === 'Water' || move.type === 'Fairy') {\r\n\t\t\t\t\tthis.debug('Snow Cloak boost');\r\n\t\t\t\t\treturn this.chainModify([0x14CD, 0x1000]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Glaceon)\",\r\n\t\trating: 5,\r\n\t},\r\n\tpowerofalchemysylveon: {\r\n\t\tshortDesc: \"All of this Pokemon's abilities are active at once.\",\r\n\t\tonPreStart(pokemon) {\r\n\t\t\tthis.add('-ability', pokemon, 'Power of Alchemy');\r\n\t\t},\r\n\t\tonCheckShow(pokemon) {\r\n\t\t\t// This is complicated\r\n\t\t\t// For the most part, in-game, it's obvious whether or not Natural Cure activated,\r\n\t\t\t// since you can see how many of your opponent's pokemon are statused.\r\n\t\t\t// The only ambiguous situation happens in Doubles/Triples, where multiple pokemon\r\n\t\t\t// that could have Natural Cure switch out, but only some of them get cured.\r\n\t\t\tif (pokemon.side.active.length === 1) return;\r\n\t\t\tif (pokemon.showCure === true || pokemon.showCure === false) return;\r\n\r\n\t\t\tconst cureList = [];\r\n\t\t\tlet noCureCount = 0;\r\n\t\t\tfor (const curPoke of pokemon.side.active) {\r\n\t\t\t\t// pokemon not statused\r\n\t\t\t\tif (!curPoke || !curPoke.status) {\r\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: not statused or doesn't exist\");\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (curPoke.showCure) {\r\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: Natural Cure already known\");\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tconst species = curPoke.species;\r\n\t\t\t\t// pokemon can't get Natural Cure\r\n\t\t\t\tif (!Object.values(species.abilities).includes('Natural Cure')) {\r\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: no Natural Cure\");\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t// pokemon's ability is known to be Natural Cure\r\n\t\t\t\tif (!species.abilities['1'] && !species.abilities['H']) {\r\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: only one ability\");\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t// pokemon isn't switching this turn\r\n\t\t\t\tif (curPoke !== pokemon && !this.queue.willSwitch(curPoke)) {\r\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: not switching\");\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (curPoke.hasAbility('naturalcure')) {\r\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" confirmed: could be Natural Cure (and is)\");\r\n\t\t\t\t\tcureList.push(curPoke);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" confirmed: could be Natural Cure (but isn't)\");\r\n\t\t\t\t\tnoCureCount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!cureList.length || !noCureCount) {\r\n\t\t\t\t// It's possible to know what pokemon were cured\r\n\t\t\t\tfor (const pkmn of cureList) {\r\n\t\t\t\t\tpkmn.showCure = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// It's not possible to know what pokemon were cured\r\n\r\n\t\t\t\t// Unlike a -hint, this is real information that battlers need, so we use a -message\r\n\t\t\t\tthis.add('-message', \"(\" + cureList.length + \" of \" + pokemon.side.name + \"'s pokemon \" + (cureList.length === 1 ? \"was\" : \"were\") + \" cured by Natural Cure.)\");\r\n\r\n\t\t\t\tfor (const pkmn of cureList) {\r\n\t\t\t\t\tpkmn.showCure = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonSwitchOut(pokemon) {\r\n\t\t\tif (!pokemon.status) return;\r\n\r\n\t\t\t// if pokemon.showCure is undefined, it was skipped because its ability\r\n\t\t\t// is known\r\n\t\t\tif (pokemon.showCure === undefined) pokemon.showCure = true;\r\n\r\n\t\t\tif (pokemon.showCure) this.add('-curestatus', pokemon, pokemon.status, '[from] ability: Natural Cure');\r\n\t\t\tpokemon.setStatus('');\r\n\r\n\t\t\t// only reset .showCure if it's false\r\n\t\t\t// (once you know a Pokemon has Natural Cure, its cures are always known)\r\n\t\t\tif (!pokemon.showCure) pokemon.showCure = undefined;\r\n\t\t},\r\n\t\tonModifyTypePriority: -1,\r\n\t\tonModifyType(move, pokemon) {\r\n\t\t\tconst noModifyType = [\r\n\t\t\t\t'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',\r\n\t\t\t];\r\n\t\t\tif (move.type === 'Normal' && !noModifyType.includes(move.id) && !(move.isZ && move.category !== 'Status')) {\r\n\t\t\t\tmove.type = 'Fairy';\r\n\t\t\t\tmove.typeChangerBoosted = this.effect;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonBasePowerPriority: 23,\r\n\t\tonBasePower(basePower, pokemon, target, move) {\r\n\t\t\tif (move.typeChangerBoosted === this.effect) return this.chainModify([0x1333, 0x1000]);\r\n\t\t},\r\n\t\tisPermanent: true,\r\n\t\tname: \"Power of Alchemy (Sylveon)\",\r\n\t\trating: 5,\r\n\t},\r\n\t// Counterfeit Stuff, never ask me for anything ever again\r\n\tlifeorb: {\r\n\t\tonModifyDamage(damage, source, target, move) {\r\n\t\t\treturn this.chainModify(1.3);\r\n\t\t},\r\n\t\tonAfterMoveSecondarySelf(source, target, move) {\r\n\t\t\tif (source && source !== target && move && move.category !== 'Status') {\r\n\t\t\t\tthis.add('-ability', source, 'Life Orb');\r\n\t\t\t\tthis.damage(source.baseMaxhp / 10, source, source);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Life Orb\",\r\n\t},\r\n\tassaultvest: {\r\n\t\tonModifySpDPriority: 1,\r\n\t\tonModifySpD(spd) {\r\n\t\t\treturn this.chainModify(1.5);\r\n\t\t},\r\n\t\tonDisableMove(pokemon) {\r\n\t\t\tfor (const moveSlot of pokemon.moveSlots) {\r\n\t\t\t\tif (this.dex.moves.get(moveSlot.move).category === 'Status') {\r\n\t\t\t\t\tpokemon.disableMove(moveSlot.id);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Assault Vest\",\r\n\t},\r\n\tchoiceband: {\r\n\t\tonStart(pokemon) {\r\n\t\t\tpokemon.abilityState.choiceLock = \"\";\r\n\t\t},\r\n\t\tonBeforeMove(pokemon, target, move) {\r\n\t\t\tif (move.isZOrMaxPowered || move.id === 'struggle') return;\r\n\t\t\tif (pokemon.abilityState.choiceLock && pokemon.abilityState.choiceLock !== move.id) {\r\n\t\t\t\t// Fails unless ability is being ignored (these events will not run), no PP lost.\r\n\t\t\t\tthis.addMove('move', pokemon, move.name);\r\n\t\t\t\tthis.attrLastMove('[still]');\r\n\t\t\t\tthis.debug(\"Disabled by Choice Band\");\r\n\t\t\t\tthis.add('-fail', pokemon);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifyMove(move, pokemon) {\r\n\t\t\tif (pokemon.abilityState.choiceLock || move.isZOrMaxPowered || move.id === 'struggle') return;\r\n\t\t\tpokemon.abilityState.choiceLock = move.id;\r\n\t\t},\r\n\t\tonModifyAtkPriority: 1,\r\n\t\tonModifyAtk(atk, pokemon) {\r\n\t\t\tif (pokemon.volatiles['dynamax']) return;\r\n\t\t\t// PLACEHOLDER\r\n\t\t\tthis.debug('Choice Band Atk Boost');\r\n\t\t\treturn this.chainModify(1.5);\r\n\t\t},\r\n\t\tonDisableMove(pokemon) {\r\n\t\t\tif (!pokemon.abilityState.choiceLock) return;\r\n\t\t\tif (pokemon.volatiles['dynamax']) return;\r\n\t\t\tfor (const moveSlot of pokemon.moveSlots) {\r\n\t\t\t\tif (moveSlot.id !== pokemon.abilityState.choiceLock) {\r\n\t\t\t\t\tpokemon.disableMove(moveSlot.id, false, this.effectState.sourceEffect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonEnd(pokemon) {\r\n\t\t\tpokemon.abilityState.choiceLock = \"\";\r\n\t\t},\r\n\t\tname: \"Choice Band\",\r\n\t},\r\n\tchoicespecs: {\r\n\t\tname: \"Choice Specs\",\r\n\t\tshortDesc: \"This Pokemon's Sp. Atk is 1.5x, but it can only select the first move it executes.\",\r\n\t\tonStart(pokemon) {\r\n\t\t\tpokemon.abilityState.choiceLock = \"\";\r\n\t\t},\r\n\t\tonBeforeMove(pokemon, target, move) {\r\n\t\t\tif (move.isZOrMaxPowered || move.id === 'struggle') return;\r\n\t\t\tif (pokemon.abilityState.choiceLock && pokemon.abilityState.choiceLock !== move.id) {\r\n\t\t\t\t// Fails unless ability is being ignored (these events will not run), no PP lost.\r\n\t\t\t\tthis.addMove('move', pokemon, move.name);\r\n\t\t\t\tthis.attrLastMove('[still]');\r\n\t\t\t\tthis.debug(\"Disabled by Choice Specs\");\r\n\t\t\t\tthis.add('-fail', pokemon);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifyMove(move, pokemon) {\r\n\t\t\tif (pokemon.abilityState.choiceLock || move.isZOrMaxPowered || move.id === 'struggle') return;\r\n\t\t\tpokemon.abilityState.choiceLock = move.id;\r\n\t\t},\r\n\t\tonModifySpAPriority: 5,\r\n\t\tonModifySpA(atk, pokemon, move) {\r\n\t\t\tif (pokemon.volatiles['dynamax']) return;\r\n\t\t\t// PLACEHOLDER\r\n\t\t\tthis.debug('Choice Specs Sp. Atk Boost');\r\n\t\t\treturn this.chainModify(1.5);\r\n\t\t},\r\n\t\tonDisableMove(pokemon) {\r\n\t\t\tif (!pokemon.abilityState.choiceLock) return;\r\n\t\t\tif (pokemon.volatiles['dynamax']) return;\r\n\t\t\tfor (const moveSlot of pokemon.moveSlots) {\r\n\t\t\t\tif (moveSlot.id !== pokemon.abilityState.choiceLock) {\r\n\t\t\t\t\tpokemon.disableMove(moveSlot.id, false, this.effectState.sourceEffect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonEnd(pokemon) {\r\n\t\t\tpokemon.abilityState.choiceLock = \"\";\r\n\t\t},\r\n\t},\r\n\tchoicescarf: {\r\n\t\tonStart(pokemon) {\r\n\t\t\tpokemon.abilityState.choiceLock = \"\";\r\n\t\t},\r\n\t\tonBeforeMove(pokemon, target, move) {\r\n\t\t\tif (move.isZOrMaxPowered || move.id === 'struggle') return;\r\n\t\t\tif (pokemon.abilityState.choiceLock && pokemon.abilityState.choiceLock !== move.id) {\r\n\t\t\t\t// Fails unless ability is being ignored (these events will not run), no PP lost.\r\n\t\t\t\tthis.addMove('move', pokemon, move.name);\r\n\t\t\t\tthis.attrLastMove('[still]');\r\n\t\t\t\tthis.debug(\"Disabled by Choice Scarf\");\r\n\t\t\t\tthis.add('-fail', pokemon);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifyMove(move, pokemon) {\r\n\t\t\tif (pokemon.abilityState.choiceLock || move.isZOrMaxPowered || move.id === 'struggle') return;\r\n\t\t\tpokemon.abilityState.choiceLock = move.id;\r\n\t\t},\r\n\t\tonModifySpe(spe, pokemon) {\r\n\t\t\tif (pokemon.volatiles['dynamax']) return;\r\n\t\t\t// PLACEHOLDER\r\n\t\t\tthis.debug('Choice Scarf Spe Boost');\r\n\t\t\treturn this.chainModify(1.5);\r\n\t\t},\r\n\t\tonDisableMove(pokemon) {\r\n\t\t\tif (!pokemon.abilityState.choiceLock) return;\r\n\t\t\tif (pokemon.volatiles['dynamax']) return;\r\n\t\t\tfor (const moveSlot of pokemon.moveSlots) {\r\n\t\t\t\tif (moveSlot.id !== pokemon.abilityState.choiceLock) {\r\n\t\t\t\t\tpokemon.disableMove(moveSlot.id, false, this.effectState.sourceEffect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonEnd(pokemon) {\r\n\t\t\tpokemon.abilityState.choiceLock = \"\";\r\n\t\t},\r\n\t\tname: \"Choice Scarf\",\r\n\t},\r\n\teviolite: {\r\n\t\tonModifyDefPriority: 2,\r\n\t\tonModifyDef(def, pokemon) {\r\n\t\t\tif (pokemon.baseSpecies.nfe) {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifySpDPriority: 2,\r\n\t\tonModifySpD(spd, pokemon) {\r\n\t\t\tif (pokemon.baseSpecies.nfe) {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Eviolite\",\r\n\t},\r\n\teviolith: {\r\n\t\tonModifyAtkPriority: 2,\r\n\t\tonModifyAtk(atk, pokemon) {\r\n\t\t\tif (pokemon.baseSpecies.nfe) {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifySpAPriority: 2,\r\n\t\tonModifySpA(spa, pokemon) {\r\n\t\t\tif (pokemon.baseSpecies.nfe) {\r\n\t\t\t\treturn this.chainModify(1.5);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Eviolith\",\r\n\t},\r\n\tmomentumarmor: {\r\n\t\tonModifyAtkPriority: 1,\r\n\t\tonModifyAtk(atk, pokemon) {\r\n\t\t\tconst def = pokemon.getStat('def', false, true);\r\n\t\t\tconst newAtk = atk + (def / 4);\r\n\t\t\treturn newAtk;\r\n\t\t},\r\n\t\tname: \"Momentum Armor\",\r\n\t},\r\n\tshellbell: {\r\n\t\tonAfterMoveSecondarySelfPriority: -1,\r\n\t\tonAfterMoveSecondarySelf(pokemon, target, move) {\r\n\t\t\tif (move.category !== 'Status') {\r\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Shell Bell\",\r\n\t},\r\n\tcursedbelt: {\r\n\t\tonAfterMoveSecondarySelf(target, source, move) {\r\n\t\t\tif (move.category === 'Status') {\r\n\t\t\t\ttarget.addVolatile('disable');\r\n\t\t\t}\r\n\t\t},\r\n\t\tonModifyDamage(damage, source, target, move) {\r\n\t\t\tif (source.volatiles['disable']) {\r\n\t\t\t\treturn this.chainModify(1.2);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Cursed Belt\",\r\n\t},\r\n\tfocussash: {\r\n\t\tonStart(pokemon) {\r\n\t\t\tpokemon.addVolatile('focussash');\r\n\t\t},\r\n\t\tcondition: {\r\n\t\t\tonDamagePriority: -100,\r\n\t\t\tonDamage(damage, target, source, effect) {\r\n\t\t\t\tif (target.hp === target.maxhp && damage >= target.hp && effect && effect.effectType === 'Move') {\r\n\t\t\t\t\tthis.add('-ability', target, 'Focus Sash');\r\n\t\t\t\t\ttarget.removeVolatile('focussash');\r\n\t\t\t\t\treturn target.hp - 1;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\tname: \"Focus Sash\",\r\n\t},\r\n\tleftovers: {\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 5,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tthis.heal(pokemon.baseMaxhp / 16);\r\n\t\t},\r\n\t\tname: \"Leftovers\",\r\n\t},\r\n\trockyhelmet: {\r\n\t\tonDamagingHitOrder: 2,\r\n\t\tonDamagingHit(damage, target, source, move) {\r\n\t\t\tif (move.flags['contact']) {\r\n\t\t\t\tthis.damage(source.baseMaxhp / 6, source, target);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Rocky Helmet\",\r\n\t},\r\n\tblacksludge: {\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 5,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (pokemon.hasType('Poison')) {\r\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 16);\r\n\t\t\t} else {\r\n\t\t\t\tthis.damage(pokemon.baseMaxhp / 8);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Black Sludge\",\r\n\t},\r\n\treapercloth: {\r\n\t\tonResidualOrder: 5,\r\n\t\tonResidualSubOrder: 5,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tif (pokemon.hasType('Ghost')) {\r\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 16);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonDisableMove(pokemon) {\r\n\t\t\tif (!pokemon.hasType('Ghost') && pokemon.lastMove && pokemon.lastMove.id !== 'struggle') {\r\n\t\t\t\tpokemon.disableMove(pokemon.lastMove.id);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Reaper Cloth\",\r\n\t},\r\n\tflameorb: {\r\n\t\tonResidualOrder: 26,\r\n\t\tonResidualSubOrder: 2,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tpokemon.trySetStatus('brn', pokemon);\r\n\t\t},\r\n\t\tname: \"Flame Orb\",\r\n\t},\r\n\ttoxicorb: {\r\n\t\tonResidualOrder: 26,\r\n\t\tonResidualSubOrder: 2,\r\n\t\tonResidual(pokemon) {\r\n\t\t\tpokemon.trySetStatus('tox', pokemon);\r\n\t\t},\r\n\t\tname: \"Toxic Orb\",\r\n\t},\r\n\twidelens: {\r\n\t\tonSourceModifyAccuracyPriority: 4,\r\n\t\tonSourceModifyAccuracy(accuracy) {\r\n\t\t\tif (typeof accuracy === 'number') {\r\n\t\t\t\treturn accuracy * 1.2;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Wide Lens\",\r\n\t},\r\n\tzoomlens: {\r\n\t\tonSourceModifyAccuracyPriority: 4,\r\n\t\tonSourceModifyAccuracy(accuracy, target) {\r\n\t\t\tif (typeof accuracy === 'number' && (!this.queue.willMove(target) || target.newlySwitched)) {\r\n\t\t\t\tthis.debug('Zoom Lens boosting accuracy');\r\n\t\t\t\treturn accuracy * 1.5;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Zoom Lens\",\r\n\t},\r\n\tprotector: {\r\n\t\tonSourceModifyDamage(damage, source, target, move) {\r\n\t\t\tif (target.getMoveHitData(move).typeMod > 0) {\r\n\t\t\t\tthis.debug('Protector neutralize');\r\n\t\t\t\treturn this.chainModify(0.75);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Protector\",\r\n\t},\r\n\tquickclaw: {\r\n\t\tonFractionalPriorityPriority: -2,\r\n\t\tonFractionalPriority(priority, pokemon) {\r\n\t\t\tif (priority <= 0 && this.randomChance(1, 5)) {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Quick Claw');\r\n\t\t\t\treturn 0.1;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Quick Claw\",\r\n\t},\r\n\tshedshell: {\r\n\t\tonTrapPokemonPriority: -10,\r\n\t\tonTrapPokemon(pokemon) {\r\n\t\t\tpokemon.trapped = pokemon.maybeTrapped = false;\r\n\t\t},\r\n\t\tname: \"Shed Shell\",\r\n\t},\r\n\tscopelens: {\r\n\t\tonModifyCritRatio(critRatio) {\r\n\t\t\treturn critRatio + 1;\r\n\t\t},\r\n\t\tname: \"Scope Lens\",\r\n\t},\r\n\trazorclaw: {\r\n\t\tonModifyCritRatio(critRatio) {\r\n\t\t\treturn critRatio + 1;\r\n\t\t},\r\n\t\tname: \"Razor Claw\",\r\n\t},\r\n\twhippeddream: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Fairy') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Whipped Dream\",\r\n\t},\r\n\tpixieplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Fairy') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Pixie Plate\",\r\n\t},\r\n\tblackbelt: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Fighting') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Black Belt\",\r\n\t},\r\n\tblackglasses: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Dark') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Black Glasses\",\r\n\t},\r\n\tcharcoal: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Fire') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Charcoal\",\r\n\t},\r\n\tdragonfang: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Dragon') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Dragon Fang\",\r\n\t},\r\n\thardstone: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Rock') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Hard Stone\",\r\n\t},\r\n\tmagnet: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Electric') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Magnet\",\r\n\t},\r\n\tmetalcoat: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Steel') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Metal Coat\",\r\n\t},\r\n\tmiracleseed: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Grass') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Miracle Seed\",\r\n\t},\r\n\tmysticwater: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Water') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Mystic Water\",\r\n\t},\r\n\tnevermeltice: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Ice') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Never-Melt Ice\",\r\n\t},\r\n\tpoisonbarb: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Poison') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Poison Barb\",\r\n\t},\r\n\tsharpbeak: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Flying') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Sharp Beak\",\r\n\t},\r\n\tsilkscarf: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Normal') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Silk Scarf\",\r\n\t},\r\n\tsoftsand: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Ground') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Soft Sand\",\r\n\t},\r\n\tspelltag: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Ghost') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Spell Tag\",\r\n\t},\r\n\ttwistedspoon: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Psychic') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Twisted Spoon\",\r\n\t},\r\n\tsilverpowder: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Bug') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Silver Powder\",\r\n\t},\r\n\tprotectivepads: {\r\n\t\tonModifyMove(move) {\r\n\t\t\tdelete move.flags['contact'];\r\n\t\t},\r\n\t\tname: \"Protective Pads\",\r\n\t},\r\n\tsafetygoggles: {\r\n\t\tonImmunity(type, pokemon) {\r\n\t\t\tif (type === 'sandstorm' || type === 'hail' || type === 'powder') return false;\r\n\t\t},\r\n\t\tonTryHit(pokemon, source, move) {\r\n\t\t\tif (move.flags['powder'] && pokemon !== source && this.dex.getImmunity('powder', pokemon)) {\r\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Safety Goggles', move.name);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Safety Goggles\",\r\n\t},\r\n\tbigroot: {\r\n\t\tonTryHealPriority: 1,\r\n\t\tonTryHeal(damage, target, source, effect) {\r\n\t\t\tconst heals = ['drain', 'leechseed', 'ingrain', 'aquaring', 'strengthsap'];\r\n\t\t\tif (heals.includes(effect.id)) {\r\n\t\t\t\treturn this.chainModify([0x14CC, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Big Root\",\r\n\t},\r\n\tutilityumbrella: {\r\n\t\tonImmunity(type, pokemon) {\r\n\t\t\tif (type === 'sandstorm' || type === 'hail') return false;\r\n\t\t},\r\n\t\tonWeather(target, source, effect) {\r\n\t\t\tif (this.field.isWeather(['sunnyday', 'desolateland', 'hail', 'raindance', 'primordialsea', 'sandstorm'])) {\r\n\t\t\t\tthis.heal(target.baseMaxhp / 12);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Utility Umbrella\",\r\n\t},\r\n\tsoulblade: {\r\n\t\tonModifyDamage(damage, source, target, move) {\r\n\t\t\treturn this.chainModify([0x1199, 0x1000]);\r\n\t\t},\r\n\t\tname: \"Soul Blade\",\r\n\t},\r\n\tfistplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Fighting') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Fist Plate\",\r\n\t},\r\n\tdreadplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Dark') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Dread Plate\",\r\n\t},\r\n\tflameplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Fire') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Flame Plate\",\r\n\t},\r\n\tdracoplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Dragon') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Draco Plate\",\r\n\t},\r\n\tstoneplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Rock') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Stone Plate\",\r\n\t},\r\n\trockincense: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Rock') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Rock Incense\",\r\n\t},\r\n\tzapplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Electric') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Zap Plate\",\r\n\t},\r\n\tironplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Steel') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Iron Plate\",\r\n\t},\r\n\tmeadowplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Grass') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Meadow Plate\",\r\n\t},\r\n\troseincense: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Grass') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Rose Incense\",\r\n\t},\r\n\tsplashplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Water') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Splash Plate\",\r\n\t},\r\n\tseaincense: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Water') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Sea Incense\",\r\n\t},\r\n\twaveincense: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Water') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Wave Incense\",\r\n\t},\r\n\ticicleplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Ice') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Icicle Plate\",\r\n\t},\r\n\ttoxicplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Poison') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Toxic Plate\",\r\n\t},\r\n\tskyplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Flying') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Sky Plate\",\r\n\t},\r\n\tearthplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Ground') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Earth Plate\",\r\n\t},\r\n\tspookyplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Ghost') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Spooky Plate\",\r\n\t},\r\n\tmindplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Psychic') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Mind Plate\",\r\n\t},\r\n\toddincense: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Psychic') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Odd Incense\",\r\n\t},\r\n\tinsectplate: {\r\n\t\tonBasePowerPriority: 15,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move && move.type === 'Bug') {\r\n\t\t\t\treturn this.chainModify([0x1333, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Insect Plate\",\r\n\t},\r\n\tfullincense: {\r\n\t\tonFractionalPriority: -0.1,\r\n\t\tname: \"Full Incense\",\r\n\t},\r\n\tlaggingtail: {\r\n\t\tonFractionalPriority: -0.1,\r\n\t\tname: \"Lagging Tail\",\r\n\t},\r\n\tmuscleband: {\r\n\t\tonBasePowerPriority: 16,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move.category === 'Physical') {\r\n\t\t\t\treturn this.chainModify([0x1199, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Muscle Band\",\r\n\t},\r\n\twiseglasses: {\r\n\t\tonBasePowerPriority: 16,\r\n\t\tonBasePower(basePower, user, target, move) {\r\n\t\t\tif (move.category === 'Special') {\r\n\t\t\t\treturn this.chainModify([0x1199, 0x1000]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Wise Glasses\",\r\n\t},\r\n\tfocusband: {\r\n\t\tonDamage(damage, target, source, effect) {\r\n\t\t\tif (this.randomChance(1, 10) && damage >= target.hp && effect && effect.effectType === 'Move') {\r\n\t\t\t\tthis.add(\"-activate\", target, \"ability: Focus Band\");\r\n\t\t\t\treturn target.hp - 1;\r\n\t\t\t}\r\n\t\t},\r\n\t\tname: \"Focus Band\",\r\n\t},\r\n\tmetronome: {\r\n\t\tonStart(pokemon) {\r\n\t\t\tpokemon.addVolatile('metronome');\r\n\t\t},\r\n\t\tcondition: {\r\n\t\t\tonStart(pokemon) {\r\n\t\t\t\tthis.effectState.lastMove = '';\r\n\t\t\t\tthis.effectState.numConsecutive = 0;\r\n\t\t\t},\r\n\t\t\tonTryMovePriority: -2,\r\n\t\t\tonTryMove(pokemon, target, move) {\r\n\t\t\t\tif (!pokemon.hasItem('metronome')) {\r\n\t\t\t\t\tpokemon.removeVolatile('metronome');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.effectState.lastMove === move.id && pokemon.moveLastTurnResult) {\r\n\t\t\t\t\tthis.effectState.numConsecutive++;\r\n\t\t\t\t} else if (pokemon.volatiles['twoturnmove'] && this.effectState.lastMove !== move.id) {\r\n\t\t\t\t\tthis.effectState.numConsecutive = 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.effectState.numConsecutive = 0;\r\n\t\t\t\t}\r\n\t\t\t\tthis.effectState.lastMove = move.id;\r\n\t\t\t},\r\n\t\t\tonModifyDamage(damage, source, target, move) {\r\n\t\t\t\tconst dmgMod = [0x1000, 0x1333, 0x1666, 0x1999, 0x1CCC, 0x2000];\r\n\t\t\t\tconst numConsecutive = this.effectState.numConsecutive > 5 ? 5 : this.effectState.numConsecutive;\r\n\t\t\t\treturn this.chainModify([dmgMod[numConsecutive], 0x1000]);\r\n\t\t\t},\r\n\t\t},\r\n\t\tname: \"Metronome\",\r\n\t},\r\n};\r\n"], "mappings": "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", "names": [] }