{ "version": 3, "sources": ["../../data/abilities.ts"], "sourcesContent": ["/*\n\nRatings and how they work:\n\n-1: Detrimental\n\t An ability that severely harms the user.\n\tex. Defeatist, Slow Start\n\n 0: Useless\n\t An ability with no overall benefit in a singles battle.\n\tex. Color Change, Plus\n\n 1: Ineffective\n\t An ability that has minimal effect or is only useful in niche situations.\n\tex. Light Metal, Suction Cups\n\n 2: Useful\n\t An ability that can be generally useful.\n\tex. Flame Body, Overcoat\n\n 3: Effective\n\t An ability with a strong effect on the user or foe.\n\tex. Chlorophyll, Sturdy\n\n 4: Very useful\n\t One of the more popular abilities. It requires minimal support to be effective.\n\tex. Adaptability, Magic Bounce\n\n 5: Essential\n\t The sort of ability that defines metagames.\n\tex. Imposter, Shadow Tag\n\n*/\n\nexport const Abilities: import('../sim/dex-abilities').AbilityDataTable = {\n\tnoability: {\n\t\tisNonstandard: \"Past\",\n\t\tflags: {},\n\t\tname: \"No Ability\",\n\t\trating: 0.1,\n\t\tnum: 0,\n\t},\n\tadaptability: {\n\t\tonModifySTAB(stab, source, target, move) {\n\t\t\tif (move.forceSTAB || source.hasType(move.type)) {\n\t\t\t\tif (stab === 2) {\n\t\t\t\t\treturn 2.25;\n\t\t\t\t}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Adaptability\",\n\t\trating: 4,\n\t\tnum: 91,\n\t},\n\taerilate: {\n\t\tonModifyTypePriority: -1,\n\t\tonModifyType(move, pokemon) {\n\t\t\tconst noModifyType = [\n\t\t\t\t'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',\n\t\t\t];\n\t\t\tif (move.type === 'Normal' && !noModifyType.includes(move.id) &&\n\t\t\t\t!(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {\n\t\t\t\tmove.type = 'Flying';\n\t\t\t\tmove.typeChangerBoosted = this.effect;\n\t\t\t}\n\t\t},\n\t\tonBasePowerPriority: 23,\n\t\tonBasePower(basePower, pokemon, target, move) {\n\t\t\tif (move.typeChangerBoosted === this.effect) return this.chainModify([4915, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Aerilate\",\n\t\trating: 4,\n\t\tnum: 184,\n\t},\n\taftermath: {\n\t\tonDamagingHitOrder: 1,\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (!target.hp && this.checkMoveMakesContact(move, source, target, true)) {\n\t\t\t\tthis.damage(source.baseMaxhp / 4, source, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Aftermath\",\n\t\trating: 2,\n\t\tnum: 106,\n\t},\n\tairlock: {\n\t\tonSwitchIn(pokemon) {\n\t\t\t// Air Lock does not activate when Skill Swapped or when Neutralizing Gas leaves the field\n\t\t\tthis.add('-ability', pokemon, 'Air Lock');\n\t\t\t((this.effect as any).onStart as (p: Pokemon) => void).call(this, pokemon);\n\t\t},\n\t\tonStart(pokemon) {\n\t\t\tpokemon.abilityState.ending = false; // Clear the ending flag\n\t\t\tthis.eachEvent('WeatherChange', this.effect);\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tpokemon.abilityState.ending = true;\n\t\t\tthis.eachEvent('WeatherChange', this.effect);\n\t\t},\n\t\tsuppressWeather: true,\n\t\tflags: {},\n\t\tname: \"Air Lock\",\n\t\trating: 1.5,\n\t\tnum: 76,\n\t},\n\tanalytic: {\n\t\tonBasePowerPriority: 21,\n\t\tonBasePower(basePower, pokemon) {\n\t\t\tlet boosted = true;\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target === pokemon) continue;\n\t\t\t\tif (this.queue.willMove(target)) {\n\t\t\t\t\tboosted = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (boosted) {\n\t\t\t\tthis.debug('Analytic boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Analytic\",\n\t\trating: 2.5,\n\t\tnum: 148,\n\t},\n\tangerpoint: {\n\t\tonHit(target, source, move) {\n\t\t\tif (!target.hp) return;\n\t\t\tif (move?.effectType === 'Move' && target.getMoveHitData(move).crit) {\n\t\t\t\tthis.boost({ atk: 12 }, target, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Anger Point\",\n\t\trating: 1,\n\t\tnum: 83,\n\t},\n\tangershell: {\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (\n\t\t\t\teffect.effectType === \"Move\" &&\n\t\t\t\t!effect.multihit &&\n\t\t\t\t(!effect.negateSecondary && !(effect.hasSheerForce && source.hasAbility('sheerforce')))\n\t\t\t) {\n\t\t\t\tthis.effectState.checkedAngerShell = false;\n\t\t\t} else {\n\t\t\t\tthis.effectState.checkedAngerShell = true;\n\t\t\t}\n\t\t},\n\t\tonTryEatItem(item) {\n\t\t\tconst healingItems = [\n\t\t\t\t'aguavberry', 'enigmaberry', 'figyberry', 'iapapaberry', 'magoberry', 'sitrusberry', 'wikiberry', 'oranberry', 'berryjuice',\n\t\t\t];\n\t\t\tif (healingItems.includes(item.id)) {\n\t\t\t\treturn this.effectState.checkedAngerShell;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tonAfterMoveSecondary(target, source, move) {\n\t\t\tthis.effectState.checkedAngerShell = true;\n\t\t\tif (!source || source === target || !target.hp || !move.totalDamage) return;\n\t\t\tconst lastAttackedBy = target.getLastAttackedBy();\n\t\t\tif (!lastAttackedBy) return;\n\t\t\tconst damage = move.multihit ? move.totalDamage : lastAttackedBy.damage;\n\t\t\tif (target.hp <= target.maxhp / 2 && target.hp + damage > target.maxhp / 2) {\n\t\t\t\tthis.boost({ atk: 1, spa: 1, spe: 1, def: -1, spd: -1 }, target, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Anger Shell\",\n\t\trating: 3,\n\t\tnum: 271,\n\t},\n\tanticipation: {\n\t\tonStart(pokemon) {\n\t\t\tfor (const target of pokemon.foes()) {\n\t\t\t\tfor (const moveSlot of target.moveSlots) {\n\t\t\t\t\tconst move = this.dex.moves.get(moveSlot.move);\n\t\t\t\t\tif (move.category === 'Status') continue;\n\t\t\t\t\tconst moveType = move.id === 'hiddenpower' ? target.hpType : move.type;\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.dex.getImmunity(moveType, pokemon) && this.dex.getEffectiveness(moveType, pokemon) > 0 ||\n\t\t\t\t\t\tmove.ohko\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.add('-ability', pokemon, 'Anticipation');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Anticipation\",\n\t\trating: 0.5,\n\t\tnum: 107,\n\t},\n\tarenatrap: {\n\t\tonFoeTrapPokemon(pokemon) {\n\t\t\tif (!pokemon.isAdjacent(this.effectState.target)) return;\n\t\t\tif (pokemon.isGrounded()) {\n\t\t\t\tpokemon.tryTrap(true);\n\t\t\t}\n\t\t},\n\t\tonFoeMaybeTrapPokemon(pokemon, source) {\n\t\t\tif (!source) source = this.effectState.target;\n\t\t\tif (!source || !pokemon.isAdjacent(source)) return;\n\t\t\tif (pokemon.isGrounded(!pokemon.knownType)) { // Negate immunity if the type is unknown\n\t\t\t\tpokemon.maybeTrapped = true;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Arena Trap\",\n\t\trating: 5,\n\t\tnum: 71,\n\t},\n\tarmortail: {\n\t\tonFoeTryMove(target, source, move) {\n\t\t\tconst targetAllExceptions = ['perishsong', 'flowershield', 'rototiller'];\n\t\t\tif (move.target === 'foeSide' || (move.target === 'all' && !targetAllExceptions.includes(move.id))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst armorTailHolder = this.effectState.target;\n\t\t\tif ((source.isAlly(armorTailHolder) || move.target === 'all') && move.priority > 0.1) {\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\tthis.add('cant', armorTailHolder, 'ability: Armor Tail', move, `[of] ${target}`);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Armor Tail\",\n\t\trating: 2.5,\n\t\tnum: 296,\n\t},\n\taromaveil: {\n\t\tonAllyTryAddVolatile(status, target, source, effect) {\n\t\t\tif (['attract', 'disable', 'encore', 'healblock', 'taunt', 'torment'].includes(status.id)) {\n\t\t\t\tif (effect.effectType === 'Move') {\n\t\t\t\t\tconst effectHolder = this.effectState.target;\n\t\t\t\t\tthis.add('-block', target, 'ability: Aroma Veil', `[of] ${effectHolder}`);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Aroma Veil\",\n\t\trating: 2,\n\t\tnum: 165,\n\t},\n\tasoneglastrier: {\n\t\tonSwitchInPriority: 1,\n\t\tonStart(pokemon) {\n\t\t\tif (this.effectState.unnerved) return;\n\t\t\tthis.add('-ability', pokemon, 'As One');\n\t\t\tthis.add('-ability', pokemon, 'Unnerve');\n\t\t\tthis.effectState.unnerved = true;\n\t\t},\n\t\tonEnd() {\n\t\t\tthis.effectState.unnerved = false;\n\t\t},\n\t\tonFoeTryEatItem() {\n\t\t\treturn !this.effectState.unnerved;\n\t\t},\n\t\tonSourceAfterFaint(length, target, source, effect) {\n\t\t\tif (effect && effect.effectType === 'Move') {\n\t\t\t\tthis.boost({ atk: length }, source, source, this.dex.abilities.get('chillingneigh'));\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"As One (Glastrier)\",\n\t\trating: 3.5,\n\t\tnum: 266,\n\t},\n\tasonespectrier: {\n\t\tonSwitchInPriority: 1,\n\t\tonStart(pokemon) {\n\t\t\tif (this.effectState.unnerved) return;\n\t\t\tthis.add('-ability', pokemon, 'As One');\n\t\t\tthis.add('-ability', pokemon, 'Unnerve');\n\t\t\tthis.effectState.unnerved = true;\n\t\t},\n\t\tonEnd() {\n\t\t\tthis.effectState.unnerved = false;\n\t\t},\n\t\tonFoeTryEatItem() {\n\t\t\treturn !this.effectState.unnerved;\n\t\t},\n\t\tonSourceAfterFaint(length, target, source, effect) {\n\t\t\tif (effect && effect.effectType === 'Move') {\n\t\t\t\tthis.boost({ spa: length }, source, source, this.dex.abilities.get('grimneigh'));\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"As One (Spectrier)\",\n\t\trating: 3.5,\n\t\tnum: 267,\n\t},\n\taurabreak: {\n\t\tonStart(pokemon) {\n\t\t\tif (this.suppressingAbility(pokemon)) return;\n\t\t\tthis.add('-ability', pokemon, 'Aura Break');\n\t\t},\n\t\tonAnyTryPrimaryHit(target, source, move) {\n\t\t\tif (target === source || move.category === 'Status') return;\n\t\t\tmove.hasAuraBreak = true;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Aura Break\",\n\t\trating: 1,\n\t\tnum: 188,\n\t},\n\tbaddreams: {\n\t\tonResidualOrder: 28,\n\t\tonResidualSubOrder: 2,\n\t\tonResidual(pokemon) {\n\t\t\tif (!pokemon.hp) return;\n\t\t\tfor (const target of pokemon.foes()) {\n\t\t\t\tif (target.status === 'slp' || target.hasAbility('comatose')) {\n\t\t\t\t\tthis.damage(target.baseMaxhp / 8, target, pokemon);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Bad Dreams\",\n\t\trating: 1.5,\n\t\tnum: 123,\n\t},\n\tballfetch: {\n\t\tflags: {},\n\t\tname: \"Ball Fetch\",\n\t\trating: 0,\n\t\tnum: 237,\n\t},\n\tbattery: {\n\t\tonAllyBasePowerPriority: 22,\n\t\tonAllyBasePower(basePower, attacker, defender, move) {\n\t\t\tif (attacker !== this.effectState.target && move.category === 'Special') {\n\t\t\t\tthis.debug('Battery boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Battery\",\n\t\trating: 0,\n\t\tnum: 217,\n\t},\n\tbattlearmor: {\n\t\tonCriticalHit: false,\n\t\tflags: { breakable: 1 },\n\t\tname: \"Battle Armor\",\n\t\trating: 1,\n\t\tnum: 4,\n\t},\n\tbattlebond: {\n\t\tonSourceAfterFaint(length, target, source, effect) {\n\t\t\tif (effect?.effectType !== 'Move') return;\n\t\t\tif (source.abilityState.battleBondTriggered) return;\n\t\t\tif (source.species.id === 'greninjabond' && source.hp && !source.transformed && source.side.foePokemonLeft()) {\n\t\t\t\tthis.boost({ atk: 1, spa: 1, spe: 1 }, source, source, this.effect);\n\t\t\t\tthis.add('-activate', source, 'ability: Battle Bond');\n\t\t\t\tsource.abilityState.battleBondTriggered = true;\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"Battle Bond\",\n\t\trating: 3.5,\n\t\tnum: 210,\n\t},\n\tbeadsofruin: {\n\t\tonStart(pokemon) {\n\t\t\tif (this.suppressingAbility(pokemon)) return;\n\t\t\tthis.add('-ability', pokemon, 'Beads of Ruin');\n\t\t},\n\t\tonAnyModifySpD(spd, target, source, move) {\n\t\t\tconst abilityHolder = this.effectState.target;\n\t\t\tif (target.hasAbility('Beads of Ruin')) return;\n\t\t\tif (!move.ruinedSpD?.hasAbility('Beads of Ruin')) move.ruinedSpD = abilityHolder;\n\t\t\tif (move.ruinedSpD !== abilityHolder) return;\n\t\t\tthis.debug('Beads of Ruin SpD drop');\n\t\t\treturn this.chainModify(0.75);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Beads of Ruin\",\n\t\trating: 4.5,\n\t\tnum: 284,\n\t},\n\tbeastboost: {\n\t\tonSourceAfterFaint(length, target, source, effect) {\n\t\t\tif (effect && effect.effectType === 'Move') {\n\t\t\t\tconst bestStat = source.getBestStat(true, true);\n\t\t\t\tthis.boost({ [bestStat]: length }, source);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Beast Boost\",\n\t\trating: 3.5,\n\t\tnum: 224,\n\t},\n\tberserk: {\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (\n\t\t\t\teffect.effectType === \"Move\" &&\n\t\t\t\t!effect.multihit &&\n\t\t\t\t(!effect.negateSecondary && !(effect.hasSheerForce && source.hasAbility('sheerforce')))\n\t\t\t) {\n\t\t\t\tthis.effectState.checkedBerserk = false;\n\t\t\t} else {\n\t\t\t\tthis.effectState.checkedBerserk = true;\n\t\t\t}\n\t\t},\n\t\tonTryEatItem(item) {\n\t\t\tconst healingItems = [\n\t\t\t\t'aguavberry', 'enigmaberry', 'figyberry', 'iapapaberry', 'magoberry', 'sitrusberry', 'wikiberry', 'oranberry', 'berryjuice',\n\t\t\t];\n\t\t\tif (healingItems.includes(item.id)) {\n\t\t\t\treturn this.effectState.checkedBerserk;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tonAfterMoveSecondary(target, source, move) {\n\t\t\tthis.effectState.checkedBerserk = true;\n\t\t\tif (!source || source === target || !target.hp || !move.totalDamage) return;\n\t\t\tconst lastAttackedBy = target.getLastAttackedBy();\n\t\t\tif (!lastAttackedBy) return;\n\t\t\tconst damage = move.multihit && !move.smartTarget ? move.totalDamage : lastAttackedBy.damage;\n\t\t\tif (target.hp <= target.maxhp / 2 && target.hp + damage > target.maxhp / 2) {\n\t\t\t\tthis.boost({ spa: 1 }, target, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Berserk\",\n\t\trating: 2,\n\t\tnum: 201,\n\t},\n\tbigpecks: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (source && target === source) return;\n\t\t\tif (boost.def && boost.def < 0) {\n\t\t\t\tdelete boost.def;\n\t\t\t\tif (!(effect as ActiveMove).secondaries && effect.id !== 'octolock') {\n\t\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"Defense\", \"[from] ability: Big Pecks\", `[of] ${target}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Big Pecks\",\n\t\trating: 0.5,\n\t\tnum: 145,\n\t},\n\tblaze: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Fire' && attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Blaze boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Fire' && attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Blaze boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Blaze\",\n\t\trating: 2,\n\t\tnum: 66,\n\t},\n\tbulletproof: {\n\t\tonTryHit(pokemon, target, move) {\n\t\t\tif (move.flags['bullet']) {\n\t\t\t\tthis.add('-immune', pokemon, '[from] ability: Bulletproof');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Bulletproof\",\n\t\trating: 3,\n\t\tnum: 171,\n\t},\n\tcheekpouch: {\n\t\tonEatItem(item, pokemon) {\n\t\t\tthis.heal(pokemon.baseMaxhp / 3);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Cheek Pouch\",\n\t\trating: 2,\n\t\tnum: 167,\n\t},\n\tchillingneigh: {\n\t\tonSourceAfterFaint(length, target, source, effect) {\n\t\t\tif (effect && effect.effectType === 'Move') {\n\t\t\t\tthis.boost({ atk: length }, source);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Chilling Neigh\",\n\t\trating: 3,\n\t\tnum: 264,\n\t},\n\tchlorophyll: {\n\t\tonModifySpe(spe, pokemon) {\n\t\t\tif (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Chlorophyll\",\n\t\trating: 3,\n\t\tnum: 34,\n\t},\n\tclearbody: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (source && target === source) return;\n\t\t\tlet showMsg = false;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tif (boost[i]! < 0) {\n\t\t\t\t\tdelete boost[i];\n\t\t\t\t\tshowMsg = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (showMsg && !(effect as ActiveMove).secondaries && effect.id !== 'octolock') {\n\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"[from] ability: Clear Body\", `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Clear Body\",\n\t\trating: 2,\n\t\tnum: 29,\n\t},\n\tcloudnine: {\n\t\tonSwitchIn(pokemon) {\n\t\t\t// Cloud Nine does not activate when Skill Swapped or when Neutralizing Gas leaves the field\n\t\t\tthis.add('-ability', pokemon, 'Cloud Nine');\n\t\t\t((this.effect as any).onStart as (p: Pokemon) => void).call(this, pokemon);\n\t\t},\n\t\tonStart(pokemon) {\n\t\t\tpokemon.abilityState.ending = false; // Clear the ending flag\n\t\t\tthis.eachEvent('WeatherChange', this.effect);\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tpokemon.abilityState.ending = true;\n\t\t\tthis.eachEvent('WeatherChange', this.effect);\n\t\t},\n\t\tsuppressWeather: true,\n\t\tflags: {},\n\t\tname: \"Cloud Nine\",\n\t\trating: 1.5,\n\t\tnum: 13,\n\t},\n\tcolorchange: {\n\t\tonAfterMoveSecondary(target, source, move) {\n\t\t\tif (!target.hp) return;\n\t\t\tconst type = move.type;\n\t\t\tif (\n\t\t\t\ttarget.isActive && move.effectType === 'Move' && move.category !== 'Status' &&\n\t\t\t\ttype !== '???' && !target.hasType(type)\n\t\t\t) {\n\t\t\t\tif (!target.setType(type)) return false;\n\t\t\t\tthis.add('-start', target, 'typechange', type, '[from] ability: Color Change');\n\n\t\t\t\tif (target.side.active.length === 2 && target.position === 1) {\n\t\t\t\t\t// Curse Glitch\n\t\t\t\t\tconst action = this.queue.willMove(target);\n\t\t\t\t\tif (action && action.move.id === 'curse') {\n\t\t\t\t\t\taction.targetLoc = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Color Change\",\n\t\trating: 0,\n\t\tnum: 16,\n\t},\n\tcomatose: {\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Comatose');\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Comatose');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t// Permanent sleep \"status\" implemented in the relevant sleep-checking effects\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"Comatose\",\n\t\trating: 4,\n\t\tnum: 213,\n\t},\n\tcommander: {\n\t\tonAnySwitchInPriority: -2,\n\t\tonAnySwitchIn() {\n\t\t\t((this.effect as any).onUpdate as (p: Pokemon) => void).call(this, this.effectState.target);\n\t\t},\n\t\tonStart(pokemon) {\n\t\t\t((this.effect as any).onUpdate as (p: Pokemon) => void).call(this, pokemon);\n\t\t},\n\t\tonUpdate(pokemon) {\n\t\t\tif (this.gameType !== 'doubles') return;\n\t\t\t// don't run between when a Pokemon switches in and the resulting onSwitchIn event\n\t\t\tif (this.queue.peek()?.choice === 'runSwitch') return;\n\n\t\t\tconst ally = pokemon.allies()[0];\n\t\t\tif (pokemon.switchFlag || ally?.switchFlag) return;\n\t\t\tif (!ally || pokemon.baseSpecies.baseSpecies !== 'Tatsugiri' || ally.baseSpecies.baseSpecies !== 'Dondozo') {\n\t\t\t\t// Handle any edge cases\n\t\t\t\tif (pokemon.getVolatile('commanding')) pokemon.removeVolatile('commanding');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!pokemon.getVolatile('commanding')) {\n\t\t\t\t// If Dondozo already was commanded this fails\n\t\t\t\tif (ally.getVolatile('commanded')) return;\n\t\t\t\t// Cancel all actions this turn for pokemon if applicable\n\t\t\t\tthis.queue.cancelAction(pokemon);\n\t\t\t\t// Add volatiles to both pokemon\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Commander', `[of] ${ally}`);\n\t\t\t\tpokemon.addVolatile('commanding');\n\t\t\t\tally.addVolatile('commanded', pokemon);\n\t\t\t\t// Continued in conditions.ts in the volatiles\n\t\t\t} else {\n\t\t\t\tif (!ally.fainted) return;\n\t\t\t\tpokemon.removeVolatile('commanding');\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1 },\n\t\tname: \"Commander\",\n\t\trating: 0,\n\t\tnum: 279,\n\t},\n\tcompetitive: {\n\t\tonAfterEachBoost(boost, target, source, effect) {\n\t\t\tif (!source || target.isAlly(source)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet statsLowered = false;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tif (boost[i]! < 0) {\n\t\t\t\t\tstatsLowered = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (statsLowered) {\n\t\t\t\tthis.boost({ spa: 2 }, target, target, null, false, true);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Competitive\",\n\t\trating: 2.5,\n\t\tnum: 172,\n\t},\n\tcompoundeyes: {\n\t\tonSourceModifyAccuracyPriority: -1,\n\t\tonSourceModifyAccuracy(accuracy) {\n\t\t\tif (typeof accuracy !== 'number') return;\n\t\t\tthis.debug('compoundeyes - enhancing accuracy');\n\t\t\treturn this.chainModify([5325, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Compound Eyes\",\n\t\trating: 3,\n\t\tnum: 14,\n\t},\n\tcontrary: {\n\t\tonChangeBoost(boost, target, source, effect) {\n\t\t\tif (effect && effect.id === 'zpower') return;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tboost[i]! *= -1;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Contrary\",\n\t\trating: 4.5,\n\t\tnum: 126,\n\t},\n\tcorrosion: {\n\t\t// Implemented in sim/pokemon.js:Pokemon#setStatus\n\t\tflags: {},\n\t\tname: \"Corrosion\",\n\t\trating: 2.5,\n\t\tnum: 212,\n\t},\n\tcostar: {\n\t\tonSwitchInPriority: -2,\n\t\tonStart(pokemon) {\n\t\t\tconst ally = pokemon.allies()[0];\n\t\t\tif (!ally) return;\n\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in ally.boosts) {\n\t\t\t\tpokemon.boosts[i] = ally.boosts[i];\n\t\t\t}\n\t\t\tconst volatilesToCopy = ['dragoncheer', 'focusenergy', 'gmaxchistrike', 'laserfocus'];\n\t\t\t// we need to be sure to remove all the overlapping crit volatiles before trying to add any\n\t\t\tfor (const volatile of volatilesToCopy) pokemon.removeVolatile(volatile);\n\t\t\tfor (const volatile of volatilesToCopy) {\n\t\t\t\tif (ally.volatiles[volatile]) {\n\t\t\t\t\tpokemon.addVolatile(volatile);\n\t\t\t\t\tif (volatile === 'gmaxchistrike') pokemon.volatiles[volatile].layers = ally.volatiles[volatile].layers;\n\t\t\t\t\tif (volatile === 'dragoncheer') pokemon.volatiles[volatile].hasDragonType = ally.volatiles[volatile].hasDragonType;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.add('-copyboost', pokemon, ally, '[from] ability: Costar');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Costar\",\n\t\trating: 0,\n\t\tnum: 294,\n\t},\n\tcottondown: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tlet activated = false;\n\t\t\tfor (const pokemon of this.getAllActive()) {\n\t\t\t\tif (pokemon === target || pokemon.fainted) continue;\n\t\t\t\tif (!activated) {\n\t\t\t\t\tthis.add('-ability', target, 'Cotton Down');\n\t\t\t\t\tactivated = true;\n\t\t\t\t}\n\t\t\t\tthis.boost({ spe: -1 }, pokemon, target, null, true);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Cotton Down\",\n\t\trating: 2,\n\t\tnum: 238,\n\t},\n\tcudchew: {\n\t\tonEatItem(item, pokemon) {\n\t\t\tif (item.isBerry && pokemon.addVolatile('cudchew')) {\n\t\t\t\tpokemon.volatiles['cudchew'].berry = item;\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['cudchew'];\n\t\t},\n\t\tcondition: {\n\t\t\tnoCopy: true,\n\t\t\tduration: 2,\n\t\t\tonRestart() {\n\t\t\t\tthis.effectState.duration = 2;\n\t\t\t},\n\t\t\tonResidualOrder: 28,\n\t\t\tonResidualSubOrder: 2,\n\t\t\tonEnd(pokemon) {\n\t\t\t\tif (pokemon.hp) {\n\t\t\t\t\tconst item = this.effectState.berry;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Cud Chew');\n\t\t\t\t\tthis.add('-enditem', pokemon, item.name, '[eat]');\n\t\t\t\t\tif (this.singleEvent('Eat', item, null, pokemon, null, null)) {\n\t\t\t\t\t\tthis.runEvent('EatItem', pokemon, null, null, item);\n\t\t\t\t\t}\n\t\t\t\t\tif (item.onEat) pokemon.ateBerry = true;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tflags: {},\n\t\tname: \"Cud Chew\",\n\t\trating: 2,\n\t\tnum: 291,\n\t},\n\tcuriousmedicine: {\n\t\tonStart(pokemon) {\n\t\t\tfor (const ally of pokemon.adjacentAllies()) {\n\t\t\t\tally.clearBoosts();\n\t\t\t\tthis.add('-clearboost', ally, '[from] ability: Curious Medicine', `[of] ${pokemon}`);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Curious Medicine\",\n\t\trating: 0,\n\t\tnum: 261,\n\t},\n\tcursedbody: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (source.volatiles['disable']) return;\n\t\t\tif (!move.isMax && !move.flags['futuremove'] && move.id !== 'struggle') {\n\t\t\t\tif (this.randomChance(3, 10)) {\n\t\t\t\t\tsource.addVolatile('disable', this.effectState.target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Cursed Body\",\n\t\trating: 2,\n\t\tnum: 130,\n\t},\n\tcutecharm: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target)) {\n\t\t\t\tif (this.randomChance(3, 10)) {\n\t\t\t\t\tsource.addVolatile('attract', this.effectState.target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Cute Charm\",\n\t\trating: 0.5,\n\t\tnum: 56,\n\t},\n\tdamp: {\n\t\tonAnyTryMove(target, source, effect) {\n\t\t\tif (['explosion', 'mindblown', 'mistyexplosion', 'selfdestruct'].includes(effect.id)) {\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\tthis.add('cant', this.effectState.target, 'ability: Damp', effect, `[of] ${target}`);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tonAnyDamage(damage, target, source, effect) {\n\t\t\tif (effect && effect.name === 'Aftermath') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Damp\",\n\t\trating: 0.5,\n\t\tnum: 6,\n\t},\n\tdancer: {\n\t\tflags: {},\n\t\tname: \"Dancer\",\n\t\t// implemented in runMove in scripts.js\n\t\trating: 1.5,\n\t\tnum: 216,\n\t},\n\tdarkaura: {\n\t\tonStart(pokemon) {\n\t\t\tif (this.suppressingAbility(pokemon)) return;\n\t\t\tthis.add('-ability', pokemon, 'Dark Aura');\n\t\t},\n\t\tonAnyBasePowerPriority: 20,\n\t\tonAnyBasePower(basePower, source, target, move) {\n\t\t\tif (target === source || move.category === 'Status' || move.type !== 'Dark') return;\n\t\t\tif (!move.auraBooster?.hasAbility('Dark Aura')) move.auraBooster = this.effectState.target;\n\t\t\tif (move.auraBooster !== this.effectState.target) return;\n\t\t\treturn this.chainModify([move.hasAuraBreak ? 3072 : 5448, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Dark Aura\",\n\t\trating: 3,\n\t\tnum: 186,\n\t},\n\tdauntlessshield: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.shieldBoost) return;\n\t\t\tpokemon.shieldBoost = true;\n\t\t\tthis.boost({ def: 1 }, pokemon);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Dauntless Shield\",\n\t\trating: 3.5,\n\t\tnum: 235,\n\t},\n\tdazzling: {\n\t\tonFoeTryMove(target, source, move) {\n\t\t\tconst targetAllExceptions = ['perishsong', 'flowershield', 'rototiller'];\n\t\t\tif (move.target === 'foeSide' || (move.target === 'all' && !targetAllExceptions.includes(move.id))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst dazzlingHolder = this.effectState.target;\n\t\t\tif ((source.isAlly(dazzlingHolder) || move.target === 'all') && move.priority > 0.1) {\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\tthis.add('cant', dazzlingHolder, 'ability: Dazzling', move, `[of] ${target}`);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Dazzling\",\n\t\trating: 2.5,\n\t\tnum: 219,\n\t},\n\tdefeatist: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, pokemon) {\n\t\t\tif (pokemon.hp <= pokemon.maxhp / 2) {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, pokemon) {\n\t\t\tif (pokemon.hp <= pokemon.maxhp / 2) {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Defeatist\",\n\t\trating: -1,\n\t\tnum: 129,\n\t},\n\tdefiant: {\n\t\tonAfterEachBoost(boost, target, source, effect) {\n\t\t\tif (!source || target.isAlly(source)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet statsLowered = false;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tif (boost[i]! < 0) {\n\t\t\t\t\tstatsLowered = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (statsLowered) {\n\t\t\t\tthis.boost({ atk: 2 }, target, target, null, false, true);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Defiant\",\n\t\trating: 3,\n\t\tnum: 128,\n\t},\n\tdeltastream: {\n\t\tonStart(source) {\n\t\t\tthis.field.setWeather('deltastream');\n\t\t},\n\t\tonAnySetWeather(target, source, weather) {\n\t\t\tconst strongWeathers = ['desolateland', 'primordialsea', 'deltastream'];\n\t\t\tif (this.field.getWeather().id === 'deltastream' && !strongWeathers.includes(weather.id)) return false;\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tif (this.field.weatherState.source !== pokemon) return;\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target === pokemon) continue;\n\t\t\t\tif (target.hasAbility('deltastream')) {\n\t\t\t\t\tthis.field.weatherState.source = target;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.field.clearWeather();\n\t\t},\n\t\tflags: {},\n\t\tname: \"Delta Stream\",\n\t\trating: 4,\n\t\tnum: 191,\n\t},\n\tdesolateland: {\n\t\tonStart(source) {\n\t\t\tthis.field.setWeather('desolateland');\n\t\t},\n\t\tonAnySetWeather(target, source, weather) {\n\t\t\tconst strongWeathers = ['desolateland', 'primordialsea', 'deltastream'];\n\t\t\tif (this.field.getWeather().id === 'desolateland' && !strongWeathers.includes(weather.id)) return false;\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tif (this.field.weatherState.source !== pokemon) return;\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target === pokemon) continue;\n\t\t\t\tif (target.hasAbility('desolateland')) {\n\t\t\t\t\tthis.field.weatherState.source = target;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.field.clearWeather();\n\t\t},\n\t\tflags: {},\n\t\tname: \"Desolate Land\",\n\t\trating: 4.5,\n\t\tnum: 190,\n\t},\n\tdisguise: {\n\t\tonDamagePriority: 1,\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect?.effectType === 'Move' && ['mimikyu', 'mimikyutotem'].includes(target.species.id)) {\n\t\t\t\tthis.add('-activate', target, 'ability: Disguise');\n\t\t\t\tthis.effectState.busted = true;\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\tonCriticalHit(target, source, move) {\n\t\t\tif (!target) return;\n\t\t\tif (!['mimikyu', 'mimikyutotem'].includes(target.species.id)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);\n\t\t\tif (hitSub) return;\n\n\t\t\tif (!target.runImmunity(move.type)) return;\n\t\t\treturn false;\n\t\t},\n\t\tonEffectiveness(typeMod, target, type, move) {\n\t\t\tif (!target || move.category === 'Status') return;\n\t\t\tif (!['mimikyu', 'mimikyutotem'].includes(target.species.id)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);\n\t\t\tif (hitSub) return;\n\n\t\t\tif (!target.runImmunity(move.type)) return;\n\t\t\treturn 0;\n\t\t},\n\t\tonUpdate(pokemon) {\n\t\t\tif (['mimikyu', 'mimikyutotem'].includes(pokemon.species.id) && this.effectState.busted) {\n\t\t\t\tconst speciesid = pokemon.species.id === 'mimikyutotem' ? 'Mimikyu-Busted-Totem' : 'Mimikyu-Busted';\n\t\t\t\tpokemon.formeChange(speciesid, this.effect, true);\n\t\t\t\tthis.damage(pokemon.baseMaxhp / 8, pokemon, pokemon, this.dex.species.get(speciesid));\n\t\t\t}\n\t\t},\n\t\tflags: {\n\t\t\tfailroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1,\n\t\t\tbreakable: 1, notransform: 1,\n\t\t},\n\t\tname: \"Disguise\",\n\t\trating: 3.5,\n\t\tnum: 209,\n\t},\n\tdownload: {\n\t\tonStart(pokemon) {\n\t\t\tlet totaldef = 0;\n\t\t\tlet totalspd = 0;\n\t\t\tfor (const target of pokemon.foes()) {\n\t\t\t\ttotaldef += target.getStat('def', false, true);\n\t\t\t\ttotalspd += target.getStat('spd', false, true);\n\t\t\t}\n\t\t\tif (totaldef && totaldef >= totalspd) {\n\t\t\t\tthis.boost({ spa: 1 });\n\t\t\t} else if (totalspd) {\n\t\t\t\tthis.boost({ atk: 1 });\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Download\",\n\t\trating: 3.5,\n\t\tnum: 88,\n\t},\n\tdragonsmaw: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Dragon') {\n\t\t\t\tthis.debug('Dragon\\'s Maw boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Dragon') {\n\t\t\t\tthis.debug('Dragon\\'s Maw boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Dragon's Maw\",\n\t\trating: 3.5,\n\t\tnum: 263,\n\t},\n\tdrizzle: {\n\t\tonStart(source) {\n\t\t\tif (source.species.id === 'kyogre' && source.item === 'blueorb') return;\n\t\t\tthis.field.setWeather('raindance');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Drizzle\",\n\t\trating: 4,\n\t\tnum: 2,\n\t},\n\tdrought: {\n\t\tonStart(source) {\n\t\t\tif (source.species.id === 'groudon' && source.item === 'redorb') return;\n\t\t\tthis.field.setWeather('sunnyday');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Drought\",\n\t\trating: 4,\n\t\tnum: 70,\n\t},\n\tdryskin: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Water') {\n\t\t\t\tif (!this.heal(target.baseMaxhp / 4)) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Dry Skin');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonSourceBasePowerPriority: 17,\n\t\tonSourceBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\treturn this.chainModify(1.25);\n\t\t\t}\n\t\t},\n\t\tonWeather(target, source, effect) {\n\t\t\tif (target.hasItem('utilityumbrella')) return;\n\t\t\tif (effect.id === 'raindance' || effect.id === 'primordialsea') {\n\t\t\t\tthis.heal(target.baseMaxhp / 8);\n\t\t\t} else if (effect.id === 'sunnyday' || effect.id === 'desolateland') {\n\t\t\t\tthis.damage(target.baseMaxhp / 8, target, target);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Dry Skin\",\n\t\trating: 3,\n\t\tnum: 87,\n\t},\n\tearlybird: {\n\t\tflags: {},\n\t\tname: \"Early Bird\",\n\t\t// Implemented in statuses.js\n\t\trating: 1.5,\n\t\tnum: 48,\n\t},\n\teartheater: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Ground') {\n\t\t\t\tif (!this.heal(target.baseMaxhp / 4)) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Earth Eater');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Earth Eater\",\n\t\trating: 3.5,\n\t\tnum: 297,\n\t},\n\teffectspore: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target) && !source.status && source.runStatusImmunity('powder')) {\n\t\t\t\tconst r = this.random(100);\n\t\t\t\tif (r < 11) {\n\t\t\t\t\tsource.setStatus('slp', target);\n\t\t\t\t} else if (r < 21) {\n\t\t\t\t\tsource.setStatus('par', target);\n\t\t\t\t} else if (r < 30) {\n\t\t\t\t\tsource.setStatus('psn', target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Effect Spore\",\n\t\trating: 2,\n\t\tnum: 27,\n\t},\n\telectricsurge: {\n\t\tonStart(source) {\n\t\t\tthis.field.setTerrain('electricterrain');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Electric Surge\",\n\t\trating: 4,\n\t\tnum: 226,\n\t},\n\telectromorphosis: {\n\t\tonDamagingHitOrder: 1,\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\ttarget.addVolatile('charge');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Electromorphosis\",\n\t\trating: 3,\n\t\tnum: 280,\n\t},\n\tembodyaspectcornerstone: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.baseSpecies.name === 'Ogerpon-Cornerstone-Tera' &&\n\t\t\t\tthis.effectState.embodied !== pokemon.previouslySwitchedIn) {\n\t\t\t\tthis.effectState.embodied = pokemon.previouslySwitchedIn;\n\t\t\t\tthis.boost({ def: 1 }, pokemon);\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },\n\t\tname: \"Embody Aspect (Cornerstone)\",\n\t\trating: 3.5,\n\t\tnum: 304,\n\t},\n\tembodyaspecthearthflame: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.baseSpecies.name === 'Ogerpon-Hearthflame-Tera' &&\n\t\t\t\tthis.effectState.embodied !== pokemon.previouslySwitchedIn) {\n\t\t\t\tthis.effectState.embodied = pokemon.previouslySwitchedIn;\n\t\t\t\tthis.boost({ atk: 1 }, pokemon);\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },\n\t\tname: \"Embody Aspect (Hearthflame)\",\n\t\trating: 3.5,\n\t\tnum: 303,\n\t},\n\tembodyaspectteal: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.baseSpecies.name === 'Ogerpon-Teal-Tera' &&\n\t\t\t\tthis.effectState.embodied !== pokemon.previouslySwitchedIn) {\n\t\t\t\tthis.effectState.embodied = pokemon.previouslySwitchedIn;\n\t\t\t\tthis.boost({ spe: 1 }, pokemon);\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },\n\t\tname: \"Embody Aspect (Teal)\",\n\t\trating: 3.5,\n\t\tnum: 301,\n\t},\n\tembodyaspectwellspring: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.baseSpecies.name === 'Ogerpon-Wellspring-Tera' &&\n\t\t\t\tthis.effectState.embodied !== pokemon.previouslySwitchedIn) {\n\t\t\t\tthis.effectState.embodied = pokemon.previouslySwitchedIn;\n\t\t\t\tthis.boost({ spd: 1 }, pokemon);\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },\n\t\tname: \"Embody Aspect (Wellspring)\",\n\t\trating: 3.5,\n\t\tnum: 302,\n\t},\n\temergencyexit: {\n\t\tonEmergencyExit(target) {\n\t\t\tif (!this.canSwitch(target.side) || target.forceSwitchFlag || target.switchFlag) return;\n\t\t\tfor (const side of this.sides) {\n\t\t\t\tfor (const active of side.active) {\n\t\t\t\t\tactive.switchFlag = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget.switchFlag = true;\n\t\t\tthis.add('-activate', target, 'ability: Emergency Exit');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Emergency Exit\",\n\t\trating: 1,\n\t\tnum: 194,\n\t},\n\tfairyaura: {\n\t\tonStart(pokemon) {\n\t\t\tif (this.suppressingAbility(pokemon)) return;\n\t\t\tthis.add('-ability', pokemon, 'Fairy Aura');\n\t\t},\n\t\tonAnyBasePowerPriority: 20,\n\t\tonAnyBasePower(basePower, source, target, move) {\n\t\t\tif (target === source || move.category === 'Status' || move.type !== 'Fairy') return;\n\t\t\tif (!move.auraBooster?.hasAbility('Fairy Aura')) move.auraBooster = this.effectState.target;\n\t\t\tif (move.auraBooster !== this.effectState.target) return;\n\t\t\treturn this.chainModify([move.hasAuraBreak ? 3072 : 5448, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Fairy Aura\",\n\t\trating: 3,\n\t\tnum: 187,\n\t},\n\tfilter: {\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.getMoveHitData(move).typeMod > 0) {\n\t\t\t\tthis.debug('Filter neutralize');\n\t\t\t\treturn this.chainModify(0.75);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Filter\",\n\t\trating: 3,\n\t\tnum: 111,\n\t},\n\tflamebody: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target)) {\n\t\t\t\tif (this.randomChance(3, 10)) {\n\t\t\t\t\tsource.trySetStatus('brn', target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Flame Body\",\n\t\trating: 2,\n\t\tnum: 49,\n\t},\n\tflareboost: {\n\t\tonBasePowerPriority: 19,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (attacker.status === 'brn' && move.category === 'Special') {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Flare Boost\",\n\t\trating: 2,\n\t\tnum: 138,\n\t},\n\tflashfire: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Fire') {\n\t\t\t\tmove.accuracy = true;\n\t\t\t\tif (!target.addVolatile('flashfire')) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Flash Fire');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tpokemon.removeVolatile('flashfire');\n\t\t},\n\t\tcondition: {\n\t\t\tnoCopy: true, // doesn't get copied by Baton Pass\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-start', target, 'ability: Flash Fire');\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\t\tif (move.type === 'Fire' && attacker.hasAbility('flashfire')) {\n\t\t\t\t\tthis.debug('Flash Fire boost');\n\t\t\t\t\treturn this.chainModify(1.5);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonModifySpAPriority: 5,\n\t\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\t\tif (move.type === 'Fire' && attacker.hasAbility('flashfire')) {\n\t\t\t\t\tthis.debug('Flash Fire boost');\n\t\t\t\t\treturn this.chainModify(1.5);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'ability: Flash Fire', '[silent]');\n\t\t\t},\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Flash Fire\",\n\t\trating: 3.5,\n\t\tnum: 18,\n\t},\n\tflowergift: {\n\t\tonSwitchInPriority: -2,\n\t\tonStart(pokemon) {\n\t\t\tthis.singleEvent('WeatherChange', this.effect, this.effectState, pokemon);\n\t\t},\n\t\tonWeatherChange(pokemon) {\n\t\t\tif (!pokemon.isActive || pokemon.baseSpecies.baseSpecies !== 'Cherrim' || pokemon.transformed) return;\n\t\t\tif (!pokemon.hp) return;\n\t\t\tif (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) {\n\t\t\t\tif (pokemon.species.id !== 'cherrimsunshine') {\n\t\t\t\t\tpokemon.formeChange('Cherrim-Sunshine', this.effect, false, '0', '[msg]');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (pokemon.species.id === 'cherrimsunshine') {\n\t\t\t\t\tpokemon.formeChange('Cherrim', this.effect, false, '0', '[msg]');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAllyModifyAtkPriority: 3,\n\t\tonAllyModifyAtk(atk, pokemon) {\n\t\t\tif (this.effectState.target.baseSpecies.baseSpecies !== 'Cherrim') return;\n\t\t\tif (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonAllyModifySpDPriority: 4,\n\t\tonAllyModifySpD(spd, pokemon) {\n\t\t\tif (this.effectState.target.baseSpecies.baseSpecies !== 'Cherrim') return;\n\t\t\tif (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, breakable: 1 },\n\t\tname: \"Flower Gift\",\n\t\trating: 1,\n\t\tnum: 122,\n\t},\n\tflowerveil: {\n\t\tonAllyTryBoost(boost, target, source, effect) {\n\t\t\tif ((source && target === source) || !target.hasType('Grass')) return;\n\t\t\tlet showMsg = false;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tif (boost[i]! < 0) {\n\t\t\t\t\tdelete boost[i];\n\t\t\t\t\tshowMsg = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (showMsg && !(effect as ActiveMove).secondaries) {\n\t\t\t\tconst effectHolder = this.effectState.target;\n\t\t\t\tthis.add('-block', target, 'ability: Flower Veil', `[of] ${effectHolder}`);\n\t\t\t}\n\t\t},\n\t\tonAllySetStatus(status, target, source, effect) {\n\t\t\tif (target.hasType('Grass') && source && target !== source && effect && effect.id !== 'yawn') {\n\t\t\t\tthis.debug('interrupting setStatus with Flower Veil');\n\t\t\t\tif (effect.name === 'Synchronize' || (effect.effectType === 'Move' && !effect.secondaries)) {\n\t\t\t\t\tconst effectHolder = this.effectState.target;\n\t\t\t\t\tthis.add('-block', target, 'ability: Flower Veil', `[of] ${effectHolder}`);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonAllyTryAddVolatile(status, target) {\n\t\t\tif (target.hasType('Grass') && status.id === 'yawn') {\n\t\t\t\tthis.debug('Flower Veil blocking yawn');\n\t\t\t\tconst effectHolder = this.effectState.target;\n\t\t\t\tthis.add('-block', target, 'ability: Flower Veil', `[of] ${effectHolder}`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Flower Veil\",\n\t\trating: 0,\n\t\tnum: 166,\n\t},\n\tfluffy: {\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tlet mod = 1;\n\t\t\tif (move.type === 'Fire') mod *= 2;\n\t\t\tif (move.flags['contact']) mod /= 2;\n\t\t\treturn this.chainModify(mod);\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Fluffy\",\n\t\trating: 3.5,\n\t\tnum: 218,\n\t},\n\tforecast: {\n\t\tonSwitchInPriority: -2,\n\t\tonStart(pokemon) {\n\t\t\tthis.singleEvent('WeatherChange', this.effect, this.effectState, pokemon);\n\t\t},\n\t\tonWeatherChange(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Castform' || pokemon.transformed) return;\n\t\t\tlet forme = null;\n\t\t\tswitch (pokemon.effectiveWeather()) {\n\t\t\tcase 'sunnyday':\n\t\t\tcase 'desolateland':\n\t\t\t\tif (pokemon.species.id !== 'castformsunny') forme = 'Castform-Sunny';\n\t\t\t\tbreak;\n\t\t\tcase 'raindance':\n\t\t\tcase 'primordialsea':\n\t\t\t\tif (pokemon.species.id !== 'castformrainy') forme = 'Castform-Rainy';\n\t\t\t\tbreak;\n\t\t\tcase 'hail':\n\t\t\tcase 'snowscape':\n\t\t\t\tif (pokemon.species.id !== 'castformsnowy') forme = 'Castform-Snowy';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (pokemon.species.id !== 'castform') forme = 'Castform';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (pokemon.isActive && forme) {\n\t\t\t\tpokemon.formeChange(forme, this.effect, false, '0', '[msg]');\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1 },\n\t\tname: \"Forecast\",\n\t\trating: 2,\n\t\tnum: 59,\n\t},\n\tforewarn: {\n\t\tonStart(pokemon) {\n\t\t\tlet warnMoves: (Move | Pokemon)[][] = [];\n\t\t\tlet warnBp = 1;\n\t\t\tfor (const target of pokemon.foes()) {\n\t\t\t\tfor (const moveSlot of target.moveSlots) {\n\t\t\t\t\tconst move = this.dex.moves.get(moveSlot.move);\n\t\t\t\t\tlet bp = move.basePower;\n\t\t\t\t\tif (move.ohko) bp = 150;\n\t\t\t\t\tif (move.id === 'counter' || move.id === 'metalburst' || move.id === 'mirrorcoat') bp = 120;\n\t\t\t\t\tif (bp === 1) bp = 80;\n\t\t\t\t\tif (!bp && move.category !== 'Status') bp = 80;\n\t\t\t\t\tif (bp > warnBp) {\n\t\t\t\t\t\twarnMoves = [[move, target]];\n\t\t\t\t\t\twarnBp = bp;\n\t\t\t\t\t} else if (bp === warnBp) {\n\t\t\t\t\t\twarnMoves.push([move, target]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!warnMoves.length) return;\n\t\t\tconst [warnMoveName, warnTarget] = this.sample(warnMoves);\n\t\t\tthis.add('-activate', pokemon, 'ability: Forewarn', warnMoveName, `[of] ${warnTarget}`);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Forewarn\",\n\t\trating: 0.5,\n\t\tnum: 108,\n\t},\n\tfriendguard: {\n\t\tonAnyModifyDamage(damage, source, target, move) {\n\t\t\tif (target !== this.effectState.target && target.isAlly(this.effectState.target)) {\n\t\t\t\tthis.debug('Friend Guard weaken');\n\t\t\t\treturn this.chainModify(0.75);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Friend Guard\",\n\t\trating: 0,\n\t\tnum: 132,\n\t},\n\tfrisk: {\n\t\tonStart(pokemon) {\n\t\t\tfor (const target of pokemon.foes()) {\n\t\t\t\tif (target.item) {\n\t\t\t\t\tthis.add('-item', target, target.getItem().name, '[from] ability: Frisk', `[of] ${pokemon}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Frisk\",\n\t\trating: 1.5,\n\t\tnum: 119,\n\t},\n\tfullmetalbody: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (source && target === source) return;\n\t\t\tlet showMsg = false;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tif (boost[i]! < 0) {\n\t\t\t\t\tdelete boost[i];\n\t\t\t\t\tshowMsg = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (showMsg && !(effect as ActiveMove).secondaries && effect.id !== 'octolock') {\n\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"[from] ability: Full Metal Body\", `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Full Metal Body\",\n\t\trating: 2,\n\t\tnum: 230,\n\t},\n\tfurcoat: {\n\t\tonModifyDefPriority: 6,\n\t\tonModifyDef(def) {\n\t\t\treturn this.chainModify(2);\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Fur Coat\",\n\t\trating: 4,\n\t\tnum: 169,\n\t},\n\tgalewings: {\n\t\tonModifyPriority(priority, pokemon, target, move) {\n\t\t\tif (move?.type === 'Flying' && pokemon.hp === pokemon.maxhp) return priority + 1;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Gale Wings\",\n\t\trating: 1.5,\n\t\tnum: 177,\n\t},\n\tgalvanize: {\n\t\tonModifyTypePriority: -1,\n\t\tonModifyType(move, pokemon) {\n\t\t\tconst noModifyType = [\n\t\t\t\t'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',\n\t\t\t];\n\t\t\tif (move.type === 'Normal' && !noModifyType.includes(move.id) &&\n\t\t\t\t!(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {\n\t\t\t\tmove.type = 'Electric';\n\t\t\t\tmove.typeChangerBoosted = this.effect;\n\t\t\t}\n\t\t},\n\t\tonBasePowerPriority: 23,\n\t\tonBasePower(basePower, pokemon, target, move) {\n\t\t\tif (move.typeChangerBoosted === this.effect) return this.chainModify([4915, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Galvanize\",\n\t\trating: 4,\n\t\tnum: 206,\n\t},\n\tgluttony: {\n\t\tonStart(pokemon) {\n\t\t\tpokemon.abilityState.gluttony = true;\n\t\t},\n\t\tonDamage(item, pokemon) {\n\t\t\tpokemon.abilityState.gluttony = true;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Gluttony\",\n\t\trating: 1.5,\n\t\tnum: 82,\n\t},\n\tgoodasgold: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (move.category === 'Status' && target !== source) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Good as Gold');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Good as Gold\",\n\t\trating: 5,\n\t\tnum: 283,\n\t},\n\tgooey: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target, true)) {\n\t\t\t\tthis.add('-ability', target, 'Gooey');\n\t\t\t\tthis.boost({ spe: -1 }, source, target, null, true);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Gooey\",\n\t\trating: 2,\n\t\tnum: 183,\n\t},\n\tgorillatactics: {\n\t\tonStart(pokemon) {\n\t\t\tpokemon.abilityState.choiceLock = \"\";\n\t\t},\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tif (move.isZOrMaxPowered || move.id === 'struggle') return;\n\t\t\tif (pokemon.abilityState.choiceLock && pokemon.abilityState.choiceLock !== move.id) {\n\t\t\t\t// Fails unless ability is being ignored (these events will not run), no PP lost.\n\t\t\t\tthis.addMove('move', pokemon, move.name);\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\tthis.debug(\"Disabled by Gorilla Tactics\");\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tonModifyMove(move, pokemon) {\n\t\t\tif (pokemon.abilityState.choiceLock || move.isZOrMaxPowered || move.id === 'struggle') return;\n\t\t\tpokemon.abilityState.choiceLock = move.id;\n\t\t},\n\t\tonModifyAtkPriority: 1,\n\t\tonModifyAtk(atk, pokemon) {\n\t\t\tif (pokemon.volatiles['dynamax']) return;\n\t\t\t// PLACEHOLDER\n\t\t\tthis.debug('Gorilla Tactics Atk Boost');\n\t\t\treturn this.chainModify(1.5);\n\t\t},\n\t\tonDisableMove(pokemon) {\n\t\t\tif (!pokemon.abilityState.choiceLock) return;\n\t\t\tif (pokemon.volatiles['dynamax']) return;\n\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\tif (moveSlot.id !== pokemon.abilityState.choiceLock) {\n\t\t\t\t\tpokemon.disableMove(moveSlot.id, false, this.effectState.sourceEffect);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tpokemon.abilityState.choiceLock = \"\";\n\t\t},\n\t\tflags: {},\n\t\tname: \"Gorilla Tactics\",\n\t\trating: 4.5,\n\t\tnum: 255,\n\t},\n\tgrasspelt: {\n\t\tonModifyDefPriority: 6,\n\t\tonModifyDef(pokemon) {\n\t\t\tif (this.field.isTerrain('grassyterrain')) return this.chainModify(1.5);\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Grass Pelt\",\n\t\trating: 0.5,\n\t\tnum: 179,\n\t},\n\tgrassysurge: {\n\t\tonStart(source) {\n\t\t\tthis.field.setTerrain('grassyterrain');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Grassy Surge\",\n\t\trating: 4,\n\t\tnum: 229,\n\t},\n\tgrimneigh: {\n\t\tonSourceAfterFaint(length, target, source, effect) {\n\t\t\tif (effect && effect.effectType === 'Move') {\n\t\t\t\tthis.boost({ spa: length }, source);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Grim Neigh\",\n\t\trating: 3,\n\t\tnum: 265,\n\t},\n\tguarddog: {\n\t\tonDragOutPriority: 1,\n\t\tonDragOut(pokemon) {\n\t\t\tthis.add('-activate', pokemon, 'ability: Guard Dog');\n\t\t\treturn null;\n\t\t},\n\t\tonTryBoostPriority: 2,\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (effect.name === 'Intimidate' && boost.atk) {\n\t\t\t\tdelete boost.atk;\n\t\t\t\tthis.boost({ atk: 1 }, target, target, null, false, true);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Guard Dog\",\n\t\trating: 2,\n\t\tnum: 275,\n\t},\n\tgulpmissile: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (!source.hp || !source.isActive || target.isSemiInvulnerable()) return;\n\t\t\tif (['cramorantgulping', 'cramorantgorging'].includes(target.species.id)) {\n\t\t\t\tthis.damage(source.baseMaxhp / 4, source, target);\n\t\t\t\tif (target.species.id === 'cramorantgulping') {\n\t\t\t\t\tthis.boost({ def: -1 }, source, target, null, true);\n\t\t\t\t} else {\n\t\t\t\t\tsource.trySetStatus('par', target, move);\n\t\t\t\t}\n\t\t\t\ttarget.formeChange('cramorant', move);\n\t\t\t}\n\t\t},\n\t\t// The Dive part of this mechanic is implemented in Dive's `onTryMove` in moves.ts\n\t\tonSourceTryPrimaryHit(target, source, effect) {\n\t\t\tif (effect?.id === 'surf' && source.hasAbility('gulpmissile') && source.species.name === 'Cramorant') {\n\t\t\t\tconst forme = source.hp <= source.maxhp / 2 ? 'cramorantgorging' : 'cramorantgulping';\n\t\t\t\tsource.formeChange(forme, effect);\n\t\t\t}\n\t\t},\n\t\tflags: { cantsuppress: 1, notransform: 1 },\n\t\tname: \"Gulp Missile\",\n\t\trating: 2.5,\n\t\tnum: 241,\n\t},\n\tguts: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, pokemon) {\n\t\t\tif (pokemon.status) {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Guts\",\n\t\trating: 3.5,\n\t\tnum: 62,\n\t},\n\thadronengine: {\n\t\tonStart(pokemon) {\n\t\t\tif (!this.field.setTerrain('electricterrain') && this.field.isTerrain('electricterrain')) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Hadron Engine');\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (this.field.isTerrain('electricterrain')) {\n\t\t\t\tthis.debug('Hadron Engine boost');\n\t\t\t\treturn this.chainModify([5461, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Hadron Engine\",\n\t\trating: 4.5,\n\t\tnum: 289,\n\t},\n\tharvest: {\n\t\tonResidualOrder: 28,\n\t\tonResidualSubOrder: 2,\n\t\tonResidual(pokemon) {\n\t\t\tif (this.field.isWeather(['sunnyday', 'desolateland']) || this.randomChance(1, 2)) {\n\t\t\t\tif (pokemon.hp && !pokemon.item && this.dex.items.get(pokemon.lastItem).isBerry) {\n\t\t\t\t\tpokemon.setItem(pokemon.lastItem);\n\t\t\t\t\tpokemon.lastItem = '';\n\t\t\t\t\tthis.add('-item', pokemon, pokemon.getItem(), '[from] ability: Harvest');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Harvest\",\n\t\trating: 2.5,\n\t\tnum: 139,\n\t},\n\thealer: {\n\t\tonResidualOrder: 5,\n\t\tonResidualSubOrder: 3,\n\t\tonResidual(pokemon) {\n\t\t\tfor (const allyActive of pokemon.adjacentAllies()) {\n\t\t\t\tif (allyActive.status && this.randomChance(3, 10)) {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Healer');\n\t\t\t\t\tallyActive.cureStatus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Healer\",\n\t\trating: 0,\n\t\tnum: 131,\n\t},\n\theatproof: {\n\t\tonSourceModifyAtkPriority: 6,\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\tthis.debug('Heatproof Atk weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonSourceModifySpAPriority: 5,\n\t\tonSourceModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\tthis.debug('Heatproof SpA weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect && effect.id === 'brn') {\n\t\t\t\treturn damage / 2;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Heatproof\",\n\t\trating: 2,\n\t\tnum: 85,\n\t},\n\theavymetal: {\n\t\tonModifyWeightPriority: 1,\n\t\tonModifyWeight(weighthg) {\n\t\t\treturn weighthg * 2;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Heavy Metal\",\n\t\trating: 0,\n\t\tnum: 134,\n\t},\n\thoneygather: {\n\t\tflags: {},\n\t\tname: \"Honey Gather\",\n\t\trating: 0,\n\t\tnum: 118,\n\t},\n\thospitality: {\n\t\tonSwitchInPriority: -2,\n\t\tonStart(pokemon) {\n\t\t\tfor (const ally of pokemon.adjacentAllies()) {\n\t\t\t\tthis.heal(ally.baseMaxhp / 4, ally, pokemon);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Hospitality\",\n\t\trating: 0,\n\t\tnum: 299,\n\t},\n\thugepower: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk) {\n\t\t\treturn this.chainModify(2);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Huge Power\",\n\t\trating: 5,\n\t\tnum: 37,\n\t},\n\thungerswitch: {\n\t\tonResidualOrder: 29,\n\t\tonResidual(pokemon) {\n\t\t\tif (pokemon.species.baseSpecies !== 'Morpeko' || pokemon.terastallized) return;\n\t\t\tconst targetForme = pokemon.species.name === 'Morpeko' ? 'Morpeko-Hangry' : 'Morpeko';\n\t\t\tpokemon.formeChange(targetForme);\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },\n\t\tname: \"Hunger Switch\",\n\t\trating: 1,\n\t\tnum: 258,\n\t},\n\thustle: {\n\t\t// This should be applied directly to the stat as opposed to chaining with the others\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk) {\n\t\t\treturn this.modify(atk, 1.5);\n\t\t},\n\t\tonSourceModifyAccuracyPriority: -1,\n\t\tonSourceModifyAccuracy(accuracy, target, source, move) {\n\t\t\tif (move.category === 'Physical' && typeof accuracy === 'number') {\n\t\t\t\treturn this.chainModify([3277, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Hustle\",\n\t\trating: 3.5,\n\t\tnum: 55,\n\t},\n\thydration: {\n\t\tonResidualOrder: 5,\n\t\tonResidualSubOrder: 3,\n\t\tonResidual(pokemon) {\n\t\t\tif (pokemon.status && ['raindance', 'primordialsea'].includes(pokemon.effectiveWeather())) {\n\t\t\t\tthis.debug('hydration');\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Hydration');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Hydration\",\n\t\trating: 1.5,\n\t\tnum: 93,\n\t},\n\thypercutter: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (source && target === source) return;\n\t\t\tif (boost.atk && boost.atk < 0) {\n\t\t\t\tdelete boost.atk;\n\t\t\t\tif (!(effect as ActiveMove).secondaries) {\n\t\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"Attack\", \"[from] ability: Hyper Cutter\", `[of] ${target}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Hyper Cutter\",\n\t\trating: 1.5,\n\t\tnum: 52,\n\t},\n\ticebody: {\n\t\tonWeather(target, source, effect) {\n\t\t\tif (effect.id === 'hail' || effect.id === 'snowscape') {\n\t\t\t\tthis.heal(target.baseMaxhp / 16);\n\t\t\t}\n\t\t},\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (type === 'hail') return false;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Ice Body\",\n\t\trating: 1,\n\t\tnum: 115,\n\t},\n\ticeface: {\n\t\tonSwitchInPriority: -2,\n\t\tonStart(pokemon) {\n\t\t\tif (this.field.isWeather(['hail', 'snowscape']) && pokemon.species.id === 'eiscuenoice') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Ice Face');\n\t\t\t\tthis.effectState.busted = false;\n\t\t\t\tpokemon.formeChange('Eiscue', this.effect, true);\n\t\t\t}\n\t\t},\n\t\tonDamagePriority: 1,\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect?.effectType === 'Move' && effect.category === 'Physical' && target.species.id === 'eiscue') {\n\t\t\t\tthis.add('-activate', target, 'ability: Ice Face');\n\t\t\t\tthis.effectState.busted = true;\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\tonCriticalHit(target, type, move) {\n\t\t\tif (!target) return;\n\t\t\tif (move.category !== 'Physical' || target.species.id !== 'eiscue') return;\n\t\t\tif (target.volatiles['substitute'] && !(move.flags['bypasssub'] || move.infiltrates)) return;\n\t\t\tif (!target.runImmunity(move.type)) return;\n\t\t\treturn false;\n\t\t},\n\t\tonEffectiveness(typeMod, target, type, move) {\n\t\t\tif (!target) return;\n\t\t\tif (move.category !== 'Physical' || target.species.id !== 'eiscue') return;\n\n\t\t\tconst hitSub = target.volatiles['substitute'] && !move.flags['bypasssub'] && !(move.infiltrates && this.gen >= 6);\n\t\t\tif (hitSub) return;\n\n\t\t\tif (!target.runImmunity(move.type)) return;\n\t\t\treturn 0;\n\t\t},\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.species.id === 'eiscue' && this.effectState.busted) {\n\t\t\t\tpokemon.formeChange('Eiscue-Noice', this.effect, true);\n\t\t\t}\n\t\t},\n\t\tonWeatherChange(pokemon, source, sourceEffect) {\n\t\t\t// snow/hail resuming because Cloud Nine/Air Lock ended does not trigger Ice Face\n\t\t\tif ((sourceEffect as Ability)?.suppressWeather) return;\n\t\t\tif (!pokemon.hp) return;\n\t\t\tif (this.field.isWeather(['hail', 'snowscape']) && pokemon.species.id === 'eiscuenoice') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Ice Face');\n\t\t\t\tthis.effectState.busted = false;\n\t\t\t\tpokemon.formeChange('Eiscue', this.effect, true);\n\t\t\t}\n\t\t},\n\t\tflags: {\n\t\t\tfailroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1,\n\t\t\tbreakable: 1, notransform: 1,\n\t\t},\n\t\tname: \"Ice Face\",\n\t\trating: 3,\n\t\tnum: 248,\n\t},\n\ticescales: {\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (move.category === 'Special') {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Ice Scales\",\n\t\trating: 4,\n\t\tnum: 246,\n\t},\n\tilluminate: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (source && target === source) return;\n\t\t\tif (boost.accuracy && boost.accuracy < 0) {\n\t\t\t\tdelete boost.accuracy;\n\t\t\t\tif (!(effect as ActiveMove).secondaries) {\n\t\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"accuracy\", \"[from] ability: Illuminate\", `[of] ${target}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonModifyMove(move) {\n\t\t\tmove.ignoreEvasion = true;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Illuminate\",\n\t\trating: 0.5,\n\t\tnum: 35,\n\t},\n\tillusion: {\n\t\tonBeforeSwitchIn(pokemon) {\n\t\t\tpokemon.illusion = null;\n\t\t\t// yes, you can Illusion an active pokemon but only if it's to your right\n\t\t\tfor (let i = pokemon.side.pokemon.length - 1; i > pokemon.position; i--) {\n\t\t\t\tconst possibleTarget = pokemon.side.pokemon[i];\n\t\t\t\tif (!possibleTarget.fainted) {\n\t\t\t\t\t// If Ogerpon is in the last slot while the Illusion Pokemon is Terastallized\n\t\t\t\t\t// Illusion will not disguise as anything\n\t\t\t\t\tif (!pokemon.terastallized || possibleTarget.species.baseSpecies !== 'Ogerpon') {\n\t\t\t\t\t\tpokemon.illusion = possibleTarget;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (target.illusion) {\n\t\t\t\tthis.singleEvent('End', this.dex.abilities.get('Illusion'), target.abilityState, target, source, move);\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tif (pokemon.illusion) {\n\t\t\t\tthis.debug('illusion cleared');\n\t\t\t\tpokemon.illusion = null;\n\t\t\t\tconst details = pokemon.getUpdatedDetails();\n\t\t\t\tthis.add('replace', pokemon, details);\n\t\t\t\tthis.add('-end', pokemon, 'Illusion');\n\t\t\t\tif (this.ruleTable.has('illusionlevelmod')) {\n\t\t\t\t\tthis.hint(\"Illusion Level Mod is active, so this Pok\\u00e9mon's true level was hidden.\", true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonFaint(pokemon) {\n\t\t\tpokemon.illusion = null;\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1 },\n\t\tname: \"Illusion\",\n\t\trating: 4.5,\n\t\tnum: 149,\n\t},\n\timmunity: {\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'psn' || pokemon.status === 'tox') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Immunity');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (status.id !== 'psn' && status.id !== 'tox') return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Immunity');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Immunity\",\n\t\trating: 2,\n\t\tnum: 17,\n\t},\n\timposter: {\n\t\tonSwitchIn(pokemon) {\n\t\t\t// Imposter does not activate when Skill Swapped or when Neutralizing Gas leaves the field\n\t\t\t// Imposter copies across in doubles/triples\n\t\t\t// (also copies across in multibattle and diagonally in free-for-all,\n\t\t\t// but side.foe already takes care of those)\n\t\t\tconst target = pokemon.side.foe.active[pokemon.side.foe.active.length - 1 - pokemon.position];\n\t\t\tif (target) {\n\t\t\t\tpokemon.transformInto(target, this.dex.abilities.get('imposter'));\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1 },\n\t\tname: \"Imposter\",\n\t\trating: 5,\n\t\tnum: 150,\n\t},\n\tinfiltrator: {\n\t\tonModifyMove(move) {\n\t\t\tmove.infiltrates = true;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Infiltrator\",\n\t\trating: 2.5,\n\t\tnum: 151,\n\t},\n\tinnardsout: {\n\t\tonDamagingHitOrder: 1,\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (!target.hp) {\n\t\t\t\tthis.damage(target.getUndynamaxedHP(damage), source, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Innards Out\",\n\t\trating: 4,\n\t\tnum: 215,\n\t},\n\tinnerfocus: {\n\t\tonTryAddVolatile(status, pokemon) {\n\t\t\tif (status.id === 'flinch') return null;\n\t\t},\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (effect.name === 'Intimidate' && boost.atk) {\n\t\t\t\tdelete boost.atk;\n\t\t\t\tthis.add('-fail', target, 'unboost', 'Attack', '[from] ability: Inner Focus', `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Inner Focus\",\n\t\trating: 1,\n\t\tnum: 39,\n\t},\n\tinsomnia: {\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'slp') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Insomnia');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (status.id !== 'slp') return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Insomnia');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tonTryAddVolatile(status, target) {\n\t\t\tif (status.id === 'yawn') {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Insomnia');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Insomnia\",\n\t\trating: 1.5,\n\t\tnum: 15,\n\t},\n\tintimidate: {\n\t\tonStart(pokemon) {\n\t\t\tlet activated = false;\n\t\t\tfor (const target of pokemon.adjacentFoes()) {\n\t\t\t\tif (!activated) {\n\t\t\t\t\tthis.add('-ability', pokemon, 'Intimidate', 'boost');\n\t\t\t\t\tactivated = true;\n\t\t\t\t}\n\t\t\t\tif (target.volatiles['substitute']) {\n\t\t\t\t\tthis.add('-immune', target);\n\t\t\t\t} else {\n\t\t\t\t\tthis.boost({ atk: -1 }, target, pokemon, null, true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Intimidate\",\n\t\trating: 3.5,\n\t\tnum: 22,\n\t},\n\tintrepidsword: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.swordBoost) return;\n\t\t\tpokemon.swordBoost = true;\n\t\t\tthis.boost({ atk: 1 }, pokemon);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Intrepid Sword\",\n\t\trating: 4,\n\t\tnum: 234,\n\t},\n\tironbarbs: {\n\t\tonDamagingHitOrder: 1,\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target, true)) {\n\t\t\t\tthis.damage(source.baseMaxhp / 8, source, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Iron Barbs\",\n\t\trating: 2.5,\n\t\tnum: 160,\n\t},\n\tironfist: {\n\t\tonBasePowerPriority: 23,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.flags['punch']) {\n\t\t\t\tthis.debug('Iron Fist boost');\n\t\t\t\treturn this.chainModify([4915, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Iron Fist\",\n\t\trating: 3,\n\t\tnum: 89,\n\t},\n\tjustified: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (move.type === 'Dark') {\n\t\t\t\tthis.boost({ atk: 1 });\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Justified\",\n\t\trating: 2.5,\n\t\tnum: 154,\n\t},\n\tkeeneye: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (source && target === source) return;\n\t\t\tif (boost.accuracy && boost.accuracy < 0) {\n\t\t\t\tdelete boost.accuracy;\n\t\t\t\tif (!(effect as ActiveMove).secondaries) {\n\t\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"accuracy\", \"[from] ability: Keen Eye\", `[of] ${target}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonModifyMove(move) {\n\t\t\tmove.ignoreEvasion = true;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Keen Eye\",\n\t\trating: 0.5,\n\t\tnum: 51,\n\t},\n\tklutz: {\n\t\t// Klutz isn't technically active immediately in-game, but it activates early enough to beat all items\n\t\t// we should keep an eye out in future gens for items that activate on switch-in before Unnerve\n\t\tonSwitchInPriority: 1,\n\t\t// Item suppression implemented in Pokemon.ignoringItem() within sim/pokemon.js\n\t\tonStart(pokemon) {\n\t\t\tthis.singleEvent('End', pokemon.getItem(), pokemon.itemState, pokemon);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Klutz\",\n\t\trating: -1,\n\t\tnum: 103,\n\t},\n\tleafguard: {\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (['sunnyday', 'desolateland'].includes(target.effectiveWeather())) {\n\t\t\t\tif ((effect as Move)?.status) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Leaf Guard');\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tonTryAddVolatile(status, target) {\n\t\t\tif (status.id === 'yawn' && ['sunnyday', 'desolateland'].includes(target.effectiveWeather())) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Leaf Guard');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Leaf Guard\",\n\t\trating: 0.5,\n\t\tnum: 102,\n\t},\n\tlevitate: {\n\t\t// airborneness implemented in sim/pokemon.js:Pokemon#isGrounded\n\t\tflags: { breakable: 1 },\n\t\tname: \"Levitate\",\n\t\trating: 3.5,\n\t\tnum: 26,\n\t},\n\tlibero: {\n\t\tonPrepareHit(source, target, move) {\n\t\t\tif (this.effectState.libero === source.previouslySwitchedIn) return;\n\t\t\tif (move.hasBounced || move.flags['futuremove'] || move.sourceEffect === 'snatch' || move.callsMove) return;\n\t\t\tconst type = move.type;\n\t\t\tif (type && type !== '???' && source.getTypes().join() !== type) {\n\t\t\t\tif (!source.setType(type)) return;\n\t\t\t\tthis.effectState.libero = source.previouslySwitchedIn;\n\t\t\t\tthis.add('-start', source, 'typechange', type, '[from] ability: Libero');\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Libero\",\n\t\trating: 4,\n\t\tnum: 236,\n\t},\n\tlightmetal: {\n\t\tonModifyWeight(weighthg) {\n\t\t\treturn this.trunc(weighthg / 2);\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Light Metal\",\n\t\trating: 1,\n\t\tnum: 135,\n\t},\n\tlightningrod: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Electric') {\n\t\t\t\tif (!this.boost({ spa: 1 })) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Lightning Rod');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonAnyRedirectTarget(target, source, source2, move) {\n\t\t\tif (move.type !== 'Electric' || move.flags['pledgecombo']) return;\n\t\t\tconst redirectTarget = ['randomNormal', 'adjacentFoe'].includes(move.target) ? 'normal' : move.target;\n\t\t\tif (this.validTarget(this.effectState.target, source, redirectTarget)) {\n\t\t\t\tif (move.smartTarget) move.smartTarget = false;\n\t\t\t\tif (this.effectState.target !== target) {\n\t\t\t\t\tthis.add('-activate', this.effectState.target, 'ability: Lightning Rod');\n\t\t\t\t}\n\t\t\t\treturn this.effectState.target;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Lightning Rod\",\n\t\trating: 3,\n\t\tnum: 31,\n\t},\n\tlimber: {\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'par') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Limber');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (status.id !== 'par') return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Limber');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Limber\",\n\t\trating: 2,\n\t\tnum: 7,\n\t},\n\tlingeringaroma: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tconst sourceAbility = source.getAbility();\n\t\t\tif (sourceAbility.flags['cantsuppress'] || sourceAbility.id === 'lingeringaroma') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) {\n\t\t\t\tconst oldAbility = source.setAbility('lingeringaroma', target);\n\t\t\t\tif (oldAbility) {\n\t\t\t\t\tthis.add('-activate', target, 'ability: Lingering Aroma', this.dex.abilities.get(oldAbility).name, `[of] ${source}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Lingering Aroma\",\n\t\trating: 2,\n\t\tnum: 268,\n\t},\n\tliquidooze: {\n\t\tonSourceTryHeal(damage, target, source, effect) {\n\t\t\tthis.debug(`Heal is occurring: ${target} <- ${source} :: ${effect.id}`);\n\t\t\tconst canOoze = ['drain', 'leechseed', 'strengthsap'];\n\t\t\tif (canOoze.includes(effect.id)) {\n\t\t\t\tthis.damage(damage);\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Liquid Ooze\",\n\t\trating: 2.5,\n\t\tnum: 64,\n\t},\n\tliquidvoice: {\n\t\tonModifyTypePriority: -1,\n\t\tonModifyType(move, pokemon) {\n\t\t\tif (move.flags['sound'] && !pokemon.volatiles['dynamax']) { // hardcode\n\t\t\t\tmove.type = 'Water';\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Liquid Voice\",\n\t\trating: 1.5,\n\t\tnum: 204,\n\t},\n\tlongreach: {\n\t\tonModifyMove(move) {\n\t\t\tdelete move.flags['contact'];\n\t\t},\n\t\tflags: {},\n\t\tname: \"Long Reach\",\n\t\trating: 1,\n\t\tnum: 203,\n\t},\n\tmagicbounce: {\n\t\tonTryHitPriority: 1,\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target === source || move.hasBounced || !move.flags['reflectable'] || target.isSemiInvulnerable()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newMove = this.dex.getActiveMove(move.id);\n\t\t\tnewMove.hasBounced = true;\n\t\t\tnewMove.pranksterBoosted = false;\n\t\t\tthis.actions.useMove(newMove, target, { target: source });\n\t\t\treturn null;\n\t\t},\n\t\tonAllyTryHitSide(target, source, move) {\n\t\t\tif (target.isAlly(source) || move.hasBounced || !move.flags['reflectable'] || target.isSemiInvulnerable()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newMove = this.dex.getActiveMove(move.id);\n\t\t\tnewMove.hasBounced = true;\n\t\t\tnewMove.pranksterBoosted = false;\n\t\t\tthis.actions.useMove(newMove, this.effectState.target, { target: source });\n\t\t\treturn null;\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Magic Bounce\",\n\t\trating: 4,\n\t\tnum: 156,\n\t},\n\tmagicguard: {\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect.effectType !== 'Move') {\n\t\t\t\tif (effect.effectType === 'Ability') this.add('-activate', source, 'ability: ' + effect.name);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Magic Guard\",\n\t\trating: 4,\n\t\tnum: 98,\n\t},\n\tmagician: {\n\t\tonAfterMoveSecondarySelf(source, target, move) {\n\t\t\tif (!move || !target || source.switchFlag === true) return;\n\t\t\tif (target !== source && move.category !== 'Status') {\n\t\t\t\tif (source.item || source.volatiles['gem'] || move.id === 'fling') return;\n\t\t\t\tconst yourItem = target.takeItem(source);\n\t\t\t\tif (!yourItem) return;\n\t\t\t\tif (!source.setItem(yourItem)) {\n\t\t\t\t\ttarget.item = yourItem.id; // bypass setItem so we don't break choicelock or anything\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.add('-item', source, yourItem, '[from] ability: Magician', `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Magician\",\n\t\trating: 1,\n\t\tnum: 170,\n\t},\n\tmagmaarmor: {\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'frz') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Magma Armor');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (type === 'frz') return false;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Magma Armor\",\n\t\trating: 0.5,\n\t\tnum: 40,\n\t},\n\tmagnetpull: {\n\t\tonFoeTrapPokemon(pokemon) {\n\t\t\tif (pokemon.hasType('Steel') && pokemon.isAdjacent(this.effectState.target)) {\n\t\t\t\tpokemon.tryTrap(true);\n\t\t\t}\n\t\t},\n\t\tonFoeMaybeTrapPokemon(pokemon, source) {\n\t\t\tif (!source) source = this.effectState.target;\n\t\t\tif (!source || !pokemon.isAdjacent(source)) return;\n\t\t\tif (!pokemon.knownType || pokemon.hasType('Steel')) {\n\t\t\t\tpokemon.maybeTrapped = true;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Magnet Pull\",\n\t\trating: 4,\n\t\tnum: 42,\n\t},\n\tmarvelscale: {\n\t\tonModifyDefPriority: 6,\n\t\tonModifyDef(def, pokemon) {\n\t\t\tif (pokemon.status) {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Marvel Scale\",\n\t\trating: 2.5,\n\t\tnum: 63,\n\t},\n\tmegalauncher: {\n\t\tonBasePowerPriority: 19,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.flags['pulse']) {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Mega Launcher\",\n\t\trating: 3,\n\t\tnum: 178,\n\t},\n\tmerciless: {\n\t\tonModifyCritRatio(critRatio, source, target) {\n\t\t\tif (target && ['psn', 'tox'].includes(target.status)) return 5;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Merciless\",\n\t\trating: 1.5,\n\t\tnum: 196,\n\t},\n\tmimicry: {\n\t\tonSwitchInPriority: -1,\n\t\tonStart(pokemon) {\n\t\t\tthis.singleEvent('TerrainChange', this.effect, this.effectState, pokemon);\n\t\t},\n\t\tonTerrainChange(pokemon) {\n\t\t\tlet types;\n\t\t\tswitch (this.field.terrain) {\n\t\t\tcase 'electricterrain':\n\t\t\t\ttypes = ['Electric'];\n\t\t\t\tbreak;\n\t\t\tcase 'grassyterrain':\n\t\t\t\ttypes = ['Grass'];\n\t\t\t\tbreak;\n\t\t\tcase 'mistyterrain':\n\t\t\t\ttypes = ['Fairy'];\n\t\t\t\tbreak;\n\t\t\tcase 'psychicterrain':\n\t\t\t\ttypes = ['Psychic'];\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttypes = pokemon.baseSpecies.types;\n\t\t\t}\n\t\t\tconst oldTypes = pokemon.getTypes();\n\t\t\tif (oldTypes.join() === types.join() || !pokemon.setType(types)) return;\n\t\t\tif (this.field.terrain || pokemon.transformed) {\n\t\t\t\tthis.add('-start', pokemon, 'typechange', types.join('/'), '[from] ability: Mimicry');\n\t\t\t\tif (!this.field.terrain) this.hint(\"Transform Mimicry changes you to your original un-transformed types.\");\n\t\t\t} else {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Mimicry');\n\t\t\t\tthis.add('-end', pokemon, 'typechange', '[silent]');\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Mimicry\",\n\t\trating: 0,\n\t\tnum: 250,\n\t},\n\tmindseye: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (source && target === source) return;\n\t\t\tif (boost.accuracy && boost.accuracy < 0) {\n\t\t\t\tdelete boost.accuracy;\n\t\t\t\tif (!(effect as ActiveMove).secondaries) {\n\t\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"accuracy\", \"[from] ability: Mind's Eye\", `[of] ${target}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonModifyMovePriority: -5,\n\t\tonModifyMove(move) {\n\t\t\tmove.ignoreEvasion = true;\n\t\t\tif (!move.ignoreImmunity) move.ignoreImmunity = {};\n\t\t\tif (move.ignoreImmunity !== true) {\n\t\t\t\tmove.ignoreImmunity['Fighting'] = true;\n\t\t\t\tmove.ignoreImmunity['Normal'] = true;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Mind's Eye\",\n\t\trating: 0,\n\t\tnum: 300,\n\t},\n\tminus: {\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(spa, pokemon) {\n\t\t\tfor (const allyActive of pokemon.allies()) {\n\t\t\t\tif (allyActive.hasAbility(['minus', 'plus'])) {\n\t\t\t\t\treturn this.chainModify(1.5);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Minus\",\n\t\trating: 0,\n\t\tnum: 58,\n\t},\n\tmirrorarmor: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\t// Don't bounce self stat changes, or boosts that have already bounced\n\t\t\tif (!source || target === source || !boost || effect.name === 'Mirror Armor') return;\n\t\t\tlet b: BoostID;\n\t\t\tfor (b in boost) {\n\t\t\t\tif (boost[b]! < 0) {\n\t\t\t\t\tif (target.boosts[b] === -6) continue;\n\t\t\t\t\tconst negativeBoost: SparseBoostsTable = {};\n\t\t\t\t\tnegativeBoost[b] = boost[b];\n\t\t\t\t\tdelete boost[b];\n\t\t\t\t\tif (source.hp) {\n\t\t\t\t\t\tthis.add('-ability', target, 'Mirror Armor');\n\t\t\t\t\t\tthis.boost(negativeBoost, source, target, null, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Mirror Armor\",\n\t\trating: 2,\n\t\tnum: 240,\n\t},\n\tmistysurge: {\n\t\tonStart(source) {\n\t\t\tthis.field.setTerrain('mistyterrain');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Misty Surge\",\n\t\trating: 3.5,\n\t\tnum: 228,\n\t},\n\tmoldbreaker: {\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Mold Breaker');\n\t\t},\n\t\tonModifyMove(move) {\n\t\t\tmove.ignoreAbility = true;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Mold Breaker\",\n\t\trating: 3,\n\t\tnum: 104,\n\t},\n\tmoody: {\n\t\tonResidualOrder: 28,\n\t\tonResidualSubOrder: 2,\n\t\tonResidual(pokemon) {\n\t\t\tlet stats: BoostID[] = [];\n\t\t\tconst boost: SparseBoostsTable = {};\n\t\t\tlet statPlus: BoostID;\n\t\t\tfor (statPlus in pokemon.boosts) {\n\t\t\t\tif (statPlus === 'accuracy' || statPlus === 'evasion') continue;\n\t\t\t\tif (pokemon.boosts[statPlus] < 6) {\n\t\t\t\t\tstats.push(statPlus);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet randomStat: BoostID | undefined = stats.length ? this.sample(stats) : undefined;\n\t\t\tif (randomStat) boost[randomStat] = 2;\n\n\t\t\tstats = [];\n\t\t\tlet statMinus: BoostID;\n\t\t\tfor (statMinus in pokemon.boosts) {\n\t\t\t\tif (statMinus === 'accuracy' || statMinus === 'evasion') continue;\n\t\t\t\tif (pokemon.boosts[statMinus] > -6 && statMinus !== randomStat) {\n\t\t\t\t\tstats.push(statMinus);\n\t\t\t\t}\n\t\t\t}\n\t\t\trandomStat = stats.length ? this.sample(stats) : undefined;\n\t\t\tif (randomStat) boost[randomStat] = -1;\n\n\t\t\tthis.boost(boost, pokemon, pokemon);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Moody\",\n\t\trating: 5,\n\t\tnum: 141,\n\t},\n\tmotordrive: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Electric') {\n\t\t\t\tif (!this.boost({ spe: 1 })) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Motor Drive');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Motor Drive\",\n\t\trating: 3,\n\t\tnum: 78,\n\t},\n\tmoxie: {\n\t\tonSourceAfterFaint(length, target, source, effect) {\n\t\t\tif (effect && effect.effectType === 'Move') {\n\t\t\t\tthis.boost({ atk: length }, source);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Moxie\",\n\t\trating: 3,\n\t\tnum: 153,\n\t},\n\tmultiscale: {\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.hp >= target.maxhp) {\n\t\t\t\tthis.debug('Multiscale weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Multiscale\",\n\t\trating: 3.5,\n\t\tnum: 136,\n\t},\n\tmultitype: {\n\t\t// Multitype's type-changing itself is implemented in statuses.js\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"Multitype\",\n\t\trating: 4,\n\t\tnum: 121,\n\t},\n\tmummy: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tconst sourceAbility = source.getAbility();\n\t\t\tif (sourceAbility.flags['cantsuppress'] || sourceAbility.id === 'mummy') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) {\n\t\t\t\tconst oldAbility = source.setAbility('mummy', target);\n\t\t\t\tif (oldAbility) {\n\t\t\t\t\tthis.add('-activate', target, 'ability: Mummy', this.dex.abilities.get(oldAbility).name, `[of] ${source}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Mummy\",\n\t\trating: 2,\n\t\tnum: 152,\n\t},\n\tmyceliummight: {\n\t\tonFractionalPriorityPriority: -1,\n\t\tonFractionalPriority(priority, pokemon, target, move) {\n\t\t\tif (move.category === 'Status') {\n\t\t\t\treturn -0.1;\n\t\t\t}\n\t\t},\n\t\tonModifyMove(move) {\n\t\t\tif (move.category === 'Status') {\n\t\t\t\tmove.ignoreAbility = true;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Mycelium Might\",\n\t\trating: 2,\n\t\tnum: 298,\n\t},\n\tnaturalcure: {\n\t\tonCheckShow(pokemon) {\n\t\t\t// This is complicated\n\t\t\t// For the most part, in-game, it's obvious whether or not Natural Cure activated,\n\t\t\t// since you can see how many of your opponent's pokemon are statused.\n\t\t\t// The only ambiguous situation happens in Doubles/Triples, where multiple pokemon\n\t\t\t// that could have Natural Cure switch out, but only some of them get cured.\n\t\t\tif (pokemon.side.active.length === 1) return;\n\t\t\tif (pokemon.showCure === true || pokemon.showCure === false) return;\n\n\t\t\tconst cureList = [];\n\t\t\tlet noCureCount = 0;\n\t\t\tfor (const curPoke of pokemon.side.active) {\n\t\t\t\t// pokemon not statused\n\t\t\t\tif (!curPoke?.status) {\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: not statused or doesn't exist\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (curPoke.showCure) {\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: Natural Cure already known\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst species = curPoke.species;\n\t\t\t\t// pokemon can't get Natural Cure\n\t\t\t\tif (!Object.values(species.abilities).includes('Natural Cure')) {\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: no Natural Cure\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// pokemon's ability is known to be Natural Cure\n\t\t\t\tif (!species.abilities['1'] && !species.abilities['H']) {\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: only one ability\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// pokemon isn't switching this turn\n\t\t\t\tif (curPoke !== pokemon && !this.queue.willSwitch(curPoke)) {\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" skipped: not switching\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (curPoke.hasAbility('naturalcure')) {\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" confirmed: could be Natural Cure (and is)\");\n\t\t\t\t\tcureList.push(curPoke);\n\t\t\t\t} else {\n\t\t\t\t\t// this.add('-message', \"\" + curPoke + \" confirmed: could be Natural Cure (but isn't)\");\n\t\t\t\t\tnoCureCount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!cureList.length || !noCureCount) {\n\t\t\t\t// It's possible to know what pokemon were cured\n\t\t\t\tfor (const pkmn of cureList) {\n\t\t\t\t\tpkmn.showCure = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// It's not possible to know what pokemon were cured\n\n\t\t\t\t// Unlike a -hint, this is real information that battlers need, so we use a -message\n\t\t\t\tthis.add('-message', `(${cureList.length} of ${pokemon.side.name}'s pokemon ${cureList.length === 1 ? \"was\" : \"were\"} cured by Natural Cure.)`);\n\n\t\t\t\tfor (const pkmn of cureList) {\n\t\t\t\t\tpkmn.showCure = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSwitchOut(pokemon) {\n\t\t\tif (!pokemon.status) return;\n\n\t\t\t// if pokemon.showCure is undefined, it was skipped because its ability\n\t\t\t// is known\n\t\t\tif (pokemon.showCure === undefined) pokemon.showCure = true;\n\n\t\t\tif (pokemon.showCure) this.add('-curestatus', pokemon, pokemon.status, '[from] ability: Natural Cure');\n\t\t\tpokemon.clearStatus();\n\n\t\t\t// only reset .showCure if it's false\n\t\t\t// (once you know a Pokemon has Natural Cure, its cures are always known)\n\t\t\tif (!pokemon.showCure) pokemon.showCure = undefined;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Natural Cure\",\n\t\trating: 2.5,\n\t\tnum: 30,\n\t},\n\tneuroforce: {\n\t\tonModifyDamage(damage, source, target, move) {\n\t\t\tif (move && target.getMoveHitData(move).typeMod > 0) {\n\t\t\t\treturn this.chainModify([5120, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Neuroforce\",\n\t\trating: 2.5,\n\t\tnum: 233,\n\t},\n\tneutralizinggas: {\n\t\t// Ability suppression implemented in sim/pokemon.ts:Pokemon#ignoringAbility\n\t\tonSwitchInPriority: 2,\n\t\tonSwitchIn(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Neutralizing Gas');\n\t\t\tpokemon.abilityState.ending = false;\n\t\t\tconst strongWeathers = ['desolateland', 'primordialsea', 'deltastream'];\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target.hasItem('Ability Shield')) {\n\t\t\t\t\tthis.add('-block', target, 'item: Ability Shield');\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Can't suppress a Tatsugiri inside of Dondozo already\n\t\t\t\tif (target.volatiles['commanding']) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (target.illusion) {\n\t\t\t\t\tthis.singleEvent('End', this.dex.abilities.get('Illusion'), target.abilityState, target, pokemon, 'neutralizinggas');\n\t\t\t\t}\n\t\t\t\tif (target.volatiles['slowstart']) {\n\t\t\t\t\tdelete target.volatiles['slowstart'];\n\t\t\t\t\tthis.add('-end', target, 'Slow Start', '[silent]');\n\t\t\t\t}\n\t\t\t\tif (strongWeathers.includes(target.getAbility().id)) {\n\t\t\t\t\tthis.singleEvent('End', this.dex.abilities.get(target.getAbility().id), target.abilityState, target, pokemon, 'neutralizinggas');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonEnd(source) {\n\t\t\tif (source.transformed) return;\n\t\t\tfor (const pokemon of this.getAllActive()) {\n\t\t\t\tif (pokemon !== source && pokemon.hasAbility('Neutralizing Gas')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.add('-end', source, 'ability: Neutralizing Gas');\n\n\t\t\t// FIXME this happens before the pokemon switches out, should be the opposite order.\n\t\t\t// Not an easy fix since we cant use a supported event. Would need some kind of special event that\n\t\t\t// gathers events to run after the switch and then runs them when the ability is no longer accessible.\n\t\t\t// (If you're tackling this, do note extreme weathers have the same issue)\n\n\t\t\t// Mark this pokemon's ability as ending so Pokemon#ignoringAbility skips it\n\t\t\tif (source.abilityState.ending) return;\n\t\t\tsource.abilityState.ending = true;\n\t\t\tconst sortedActive = this.getAllActive();\n\t\t\tthis.speedSort(sortedActive);\n\t\t\tfor (const pokemon of sortedActive) {\n\t\t\t\tif (pokemon !== source) {\n\t\t\t\t\tif (pokemon.getAbility().flags['cantsuppress']) continue; // does not interact with e.g Ice Face, Zen Mode\n\t\t\t\t\tif (pokemon.hasItem('abilityshield')) continue; // don't restart abilities that weren't suppressed\n\n\t\t\t\t\t// Will be suppressed by Pokemon#ignoringAbility if needed\n\t\t\t\t\tthis.singleEvent('Start', pokemon.getAbility(), pokemon.abilityState, pokemon);\n\t\t\t\t\tif (pokemon.ability === \"gluttony\") {\n\t\t\t\t\t\tpokemon.abilityState.gluttony = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },\n\t\tname: \"Neutralizing Gas\",\n\t\trating: 3.5,\n\t\tnum: 256,\n\t},\n\tnoguard: {\n\t\tonAnyInvulnerabilityPriority: 1,\n\t\tonAnyInvulnerability(target, source, move) {\n\t\t\tif (move && (source === this.effectState.target || target === this.effectState.target)) return 0;\n\t\t},\n\t\tonAnyAccuracy(accuracy, target, source, move) {\n\t\t\tif (move && (source === this.effectState.target || target === this.effectState.target)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn accuracy;\n\t\t},\n\t\tflags: {},\n\t\tname: \"No Guard\",\n\t\trating: 4,\n\t\tnum: 99,\n\t},\n\tnormalize: {\n\t\tonModifyTypePriority: 1,\n\t\tonModifyType(move, pokemon) {\n\t\t\tconst noModifyType = [\n\t\t\t\t'hiddenpower', 'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'struggle', 'technoblast', 'terrainpulse', 'weatherball',\n\t\t\t];\n\t\t\tif (!(move.isZ && move.category !== 'Status') && !noModifyType.includes(move.id) &&\n\t\t\t\t// TODO: Figure out actual interaction\n\t\t\t\t!(move.name === 'Tera Blast' && pokemon.terastallized)) {\n\t\t\t\tmove.type = 'Normal';\n\t\t\t\tmove.typeChangerBoosted = this.effect;\n\t\t\t}\n\t\t},\n\t\tonBasePowerPriority: 23,\n\t\tonBasePower(basePower, pokemon, target, move) {\n\t\t\tif (move.typeChangerBoosted === this.effect) return this.chainModify([4915, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Normalize\",\n\t\trating: 0,\n\t\tnum: 96,\n\t},\n\toblivious: {\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.volatiles['attract']) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Oblivious');\n\t\t\t\tpokemon.removeVolatile('attract');\n\t\t\t\tthis.add('-end', pokemon, 'move: Attract', '[from] ability: Oblivious');\n\t\t\t}\n\t\t\tif (pokemon.volatiles['taunt']) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Oblivious');\n\t\t\t\tpokemon.removeVolatile('taunt');\n\t\t\t\t// Taunt's volatile already sends the -end message when removed\n\t\t\t}\n\t\t},\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (type === 'attract') return false;\n\t\t},\n\t\tonTryHit(pokemon, target, move) {\n\t\t\tif (move.id === 'attract' || move.id === 'captivate' || move.id === 'taunt') {\n\t\t\t\tthis.add('-immune', pokemon, '[from] ability: Oblivious');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (effect.name === 'Intimidate' && boost.atk) {\n\t\t\t\tdelete boost.atk;\n\t\t\t\tthis.add('-fail', target, 'unboost', 'Attack', '[from] ability: Oblivious', `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Oblivious\",\n\t\trating: 1.5,\n\t\tnum: 12,\n\t},\n\topportunist: {\n\t\tonFoeAfterBoost(boost, target, source, effect) {\n\t\t\tif (effect?.name === 'Opportunist' || effect?.name === 'Mirror Herb') return;\n\t\t\tif (!this.effectState.boosts) this.effectState.boosts = {} as SparseBoostsTable;\n\t\t\tconst boostPlus = this.effectState.boosts;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tif (boost[i]! > 0) {\n\t\t\t\t\tboostPlus[i] = (boostPlus[i] || 0) + boost[i]!;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAnySwitchInPriority: -3,\n\t\tonAnySwitchIn() {\n\t\t\tif (!this.effectState.boosts) return;\n\t\t\tthis.boost(this.effectState.boosts, this.effectState.target);\n\t\t\tdelete this.effectState.boosts;\n\t\t},\n\t\tonAnyAfterMove() {\n\t\t\tif (!this.effectState.boosts) return;\n\t\t\tthis.boost(this.effectState.boosts, this.effectState.target);\n\t\t\tdelete this.effectState.boosts;\n\t\t},\n\t\tonResidualOrder: 29,\n\t\tonResidual(pokemon) {\n\t\t\tif (!this.effectState.boosts) return;\n\t\t\tthis.boost(this.effectState.boosts, this.effectState.target);\n\t\t\tdelete this.effectState.boosts;\n\t\t},\n\t\tonEnd() {\n\t\t\tdelete this.effectState.boosts;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Opportunist\",\n\t\trating: 3,\n\t\tnum: 290,\n\t},\n\torichalcumpulse: {\n\t\tonStart(pokemon) {\n\t\t\tif (this.field.setWeather('sunnyday')) {\n\t\t\t\tthis.add('-activate', pokemon, 'Orichalcum Pulse', '[source]');\n\t\t\t} else if (this.field.isWeather('sunnyday')) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Orichalcum Pulse');\n\t\t\t}\n\t\t},\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, pokemon) {\n\t\t\tif (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) {\n\t\t\t\tthis.debug('Orichalcum boost');\n\t\t\t\treturn this.chainModify([5461, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Orichalcum Pulse\",\n\t\trating: 4.5,\n\t\tnum: 288,\n\t},\n\tovercoat: {\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (type === 'sandstorm' || type === 'hail' || type === 'powder') return false;\n\t\t},\n\t\tonTryHitPriority: 1,\n\t\tonTryHit(target, source, move) {\n\t\t\tif (move.flags['powder'] && target !== source && this.dex.getImmunity('powder', target)) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Overcoat');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Overcoat\",\n\t\trating: 2,\n\t\tnum: 142,\n\t},\n\tovergrow: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Grass' && attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Overgrow boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Grass' && attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Overgrow boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Overgrow\",\n\t\trating: 2,\n\t\tnum: 65,\n\t},\n\towntempo: {\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.volatiles['confusion']) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Own Tempo');\n\t\t\t\tpokemon.removeVolatile('confusion');\n\t\t\t}\n\t\t},\n\t\tonTryAddVolatile(status, pokemon) {\n\t\t\tif (status.id === 'confusion') return null;\n\t\t},\n\t\tonHit(target, source, move) {\n\t\t\tif (move?.volatileStatus === 'confusion') {\n\t\t\t\tthis.add('-immune', target, 'confusion', '[from] ability: Own Tempo');\n\t\t\t}\n\t\t},\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (effect.name === 'Intimidate' && boost.atk) {\n\t\t\t\tdelete boost.atk;\n\t\t\t\tthis.add('-fail', target, 'unboost', 'Attack', '[from] ability: Own Tempo', `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Own Tempo\",\n\t\trating: 1.5,\n\t\tnum: 20,\n\t},\n\tparentalbond: {\n\t\tonPrepareHit(source, target, move) {\n\t\t\tif (move.category === 'Status' || move.multihit || move.flags['noparentalbond'] || move.flags['charge'] ||\n\t\t\t\tmove.flags['futuremove'] || move.spreadHit || move.isZ || move.isMax) return;\n\t\t\tmove.multihit = 2;\n\t\t\tmove.multihitType = 'parentalbond';\n\t\t},\n\t\t// Damage modifier implemented in BattleActions#modifyDamage()\n\t\tonSourceModifySecondaries(secondaries, target, source, move) {\n\t\t\tif (move.multihitType === 'parentalbond' && move.id === 'secretpower' && move.hit < 2) {\n\t\t\t\t// hack to prevent accidentally suppressing King's Rock/Razor Fang\n\t\t\t\treturn secondaries.filter(effect => effect.volatileStatus === 'flinch');\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Parental Bond\",\n\t\trating: 4.5,\n\t\tnum: 185,\n\t},\n\tpastelveil: {\n\t\tonStart(pokemon) {\n\t\t\tfor (const ally of pokemon.alliesAndSelf()) {\n\t\t\t\tif (['psn', 'tox'].includes(ally.status)) {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Pastel Veil');\n\t\t\t\t\tally.cureStatus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonUpdate(pokemon) {\n\t\t\tif (['psn', 'tox'].includes(pokemon.status)) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Pastel Veil');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonAnySwitchIn() {\n\t\t\t((this.effect as any).onStart as (p: Pokemon) => void).call(this, this.effectState.target);\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (!['psn', 'tox'].includes(status.id)) return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Pastel Veil');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tonAllySetStatus(status, target, source, effect) {\n\t\t\tif (!['psn', 'tox'].includes(status.id)) return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tconst effectHolder = this.effectState.target;\n\t\t\t\tthis.add('-block', target, 'ability: Pastel Veil', `[of] ${effectHolder}`);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Pastel Veil\",\n\t\trating: 2,\n\t\tnum: 257,\n\t},\n\tperishbody: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (!this.checkMoveMakesContact(move, source, target) || source.volatiles['perishsong']) return;\n\t\t\tthis.add('-ability', target, 'Perish Body');\n\t\t\tsource.addVolatile('perishsong');\n\t\t\ttarget.addVolatile('perishsong');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Perish Body\",\n\t\trating: 1,\n\t\tnum: 253,\n\t},\n\tpickpocket: {\n\t\tonAfterMoveSecondary(target, source, move) {\n\t\t\tif (source && source !== target && move?.flags['contact']) {\n\t\t\t\tif (target.item || target.switchFlag || target.forceSwitchFlag || source.switchFlag === true) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst yourItem = source.takeItem(target);\n\t\t\t\tif (!yourItem) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!target.setItem(yourItem)) {\n\t\t\t\t\tsource.item = yourItem.id;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.add('-enditem', source, yourItem, '[silent]', '[from] ability: Pickpocket', `[of] ${source}`);\n\t\t\t\tthis.add('-item', target, yourItem, '[from] ability: Pickpocket', `[of] ${source}`);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Pickpocket\",\n\t\trating: 1,\n\t\tnum: 124,\n\t},\n\tpickup: {\n\t\tonResidualOrder: 28,\n\t\tonResidualSubOrder: 2,\n\t\tonResidual(pokemon) {\n\t\t\tif (pokemon.item) return;\n\t\t\tconst pickupTargets = this.getAllActive().filter(target => (\n\t\t\t\ttarget.lastItem && target.usedItemThisTurn && pokemon.isAdjacent(target)\n\t\t\t));\n\t\t\tif (!pickupTargets.length) return;\n\t\t\tconst randomTarget = this.sample(pickupTargets);\n\t\t\tconst item = randomTarget.lastItem;\n\t\t\trandomTarget.lastItem = '';\n\t\t\tthis.add('-item', pokemon, this.dex.items.get(item), '[from] ability: Pickup');\n\t\t\tpokemon.setItem(item);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Pickup\",\n\t\trating: 0.5,\n\t\tnum: 53,\n\t},\n\tpixilate: {\n\t\tonModifyTypePriority: -1,\n\t\tonModifyType(move, pokemon) {\n\t\t\tconst noModifyType = [\n\t\t\t\t'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',\n\t\t\t];\n\t\t\tif (move.type === 'Normal' && !noModifyType.includes(move.id) &&\n\t\t\t\t!(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {\n\t\t\t\tmove.type = 'Fairy';\n\t\t\t\tmove.typeChangerBoosted = this.effect;\n\t\t\t}\n\t\t},\n\t\tonBasePowerPriority: 23,\n\t\tonBasePower(basePower, pokemon, target, move) {\n\t\t\tif (move.typeChangerBoosted === this.effect) return this.chainModify([4915, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Pixilate\",\n\t\trating: 4,\n\t\tnum: 182,\n\t},\n\tplus: {\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(spa, pokemon) {\n\t\t\tfor (const allyActive of pokemon.allies()) {\n\t\t\t\tif (allyActive.hasAbility(['minus', 'plus'])) {\n\t\t\t\t\treturn this.chainModify(1.5);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Plus\",\n\t\trating: 0,\n\t\tnum: 57,\n\t},\n\tpoisonheal: {\n\t\tonDamagePriority: 1,\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect.id === 'psn' || effect.id === 'tox') {\n\t\t\t\tthis.heal(target.baseMaxhp / 8);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Poison Heal\",\n\t\trating: 4,\n\t\tnum: 90,\n\t},\n\tpoisonpoint: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target)) {\n\t\t\t\tif (this.randomChance(3, 10)) {\n\t\t\t\t\tsource.trySetStatus('psn', target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Poison Point\",\n\t\trating: 1.5,\n\t\tnum: 38,\n\t},\n\tpoisonpuppeteer: {\n\t\tonAnyAfterSetStatus(status, target, source, effect) {\n\t\t\tif (source.baseSpecies.name !== \"Pecharunt\") return;\n\t\t\tif (source !== this.effectState.target || target === source || effect.effectType !== 'Move') return;\n\t\t\tif (status.id === 'psn' || status.id === 'tox') {\n\t\t\t\ttarget.addVolatile('confusion');\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1 },\n\t\tname: \"Poison Puppeteer\",\n\t\trating: 3,\n\t\tnum: 310,\n\t},\n\tpoisontouch: {\n\t\tonSourceDamagingHit(damage, target, source, move) {\n\t\t\t// Despite not being a secondary, Shield Dust / Covert Cloak block Poison Touch's effect\n\t\t\tif (target.hasAbility('shielddust') || target.hasItem('covertcloak')) return;\n\t\t\tif (this.checkMoveMakesContact(move, target, source)) {\n\t\t\t\tif (this.randomChance(3, 10)) {\n\t\t\t\t\ttarget.trySetStatus('psn', source);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Poison Touch\",\n\t\trating: 2,\n\t\tnum: 143,\n\t},\n\tpowerconstruct: {\n\t\tonResidualOrder: 29,\n\t\tonResidual(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Zygarde' || pokemon.transformed || !pokemon.hp) return;\n\t\t\tif (pokemon.species.id === 'zygardecomplete' || pokemon.hp > pokemon.maxhp / 2) return;\n\t\t\tthis.add('-activate', pokemon, 'ability: Power Construct');\n\t\t\tpokemon.formeChange('Zygarde-Complete', this.effect, true);\n\t\t\tpokemon.baseMaxhp = Math.floor(Math.floor(\n\t\t\t\t2 * pokemon.species.baseStats['hp'] + pokemon.set.ivs['hp'] + Math.floor(pokemon.set.evs['hp'] / 4) + 100\n\t\t\t) * pokemon.level / 100 + 10);\n\t\t\tconst newMaxHP = pokemon.volatiles['dynamax'] ? (2 * pokemon.baseMaxhp) : pokemon.baseMaxhp;\n\t\t\tpokemon.hp = newMaxHP - (pokemon.maxhp - pokemon.hp);\n\t\t\tpokemon.maxhp = newMaxHP;\n\t\t\tthis.add('-heal', pokemon, pokemon.getHealth, '[silent]');\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"Power Construct\",\n\t\trating: 5,\n\t\tnum: 211,\n\t},\n\tpowerofalchemy: {\n\t\tonAllyFaint(target) {\n\t\t\tif (!this.effectState.target.hp) return;\n\t\t\tconst ability = target.getAbility();\n\t\t\tif (ability.flags['noreceiver'] || ability.id === 'noability') return;\n\t\t\tif (this.effectState.target.setAbility(ability)) {\n\t\t\t\tthis.add('-ability', this.effectState.target, ability, '[from] ability: Power of Alchemy', `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1 },\n\t\tname: \"Power of Alchemy\",\n\t\trating: 0,\n\t\tnum: 223,\n\t},\n\tpowerspot: {\n\t\tonAllyBasePowerPriority: 22,\n\t\tonAllyBasePower(basePower, attacker, defender, move) {\n\t\t\tif (attacker !== this.effectState.target) {\n\t\t\t\tthis.debug('Power Spot boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Power Spot\",\n\t\trating: 0,\n\t\tnum: 249,\n\t},\n\tprankster: {\n\t\tonModifyPriority(priority, pokemon, target, move) {\n\t\t\tif (move?.category === 'Status') {\n\t\t\t\tmove.pranksterBoosted = true;\n\t\t\t\treturn priority + 1;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Prankster\",\n\t\trating: 4,\n\t\tnum: 158,\n\t},\n\tpressure: {\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Pressure');\n\t\t},\n\t\tonDeductPP(target, source) {\n\t\t\tif (target.isAlly(source)) return;\n\t\t\treturn 1;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Pressure\",\n\t\trating: 2.5,\n\t\tnum: 46,\n\t},\n\tprimordialsea: {\n\t\tonStart(source) {\n\t\t\tthis.field.setWeather('primordialsea');\n\t\t},\n\t\tonAnySetWeather(target, source, weather) {\n\t\t\tconst strongWeathers = ['desolateland', 'primordialsea', 'deltastream'];\n\t\t\tif (this.field.getWeather().id === 'primordialsea' && !strongWeathers.includes(weather.id)) return false;\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tif (this.field.weatherState.source !== pokemon) return;\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target === pokemon) continue;\n\t\t\t\tif (target.hasAbility('primordialsea')) {\n\t\t\t\t\tthis.field.weatherState.source = target;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.field.clearWeather();\n\t\t},\n\t\tflags: {},\n\t\tname: \"Primordial Sea\",\n\t\trating: 4.5,\n\t\tnum: 189,\n\t},\n\tprismarmor: {\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.getMoveHitData(move).typeMod > 0) {\n\t\t\t\tthis.debug('Prism Armor neutralize');\n\t\t\t\treturn this.chainModify(0.75);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Prism Armor\",\n\t\trating: 3,\n\t\tnum: 232,\n\t},\n\tpropellertail: {\n\t\tonModifyMovePriority: 1,\n\t\tonModifyMove(move) {\n\t\t\t// most of the implementation is in Battle#getTarget\n\t\t\tmove.tracksTarget = move.target !== 'scripted';\n\t\t},\n\t\tflags: {},\n\t\tname: \"Propeller Tail\",\n\t\trating: 0,\n\t\tnum: 239,\n\t},\n\tprotean: {\n\t\tonPrepareHit(source, target, move) {\n\t\t\tif (this.effectState.protean === source.previouslySwitchedIn) return;\n\t\t\tif (move.hasBounced || move.flags['futuremove'] || move.sourceEffect === 'snatch' || move.callsMove) return;\n\t\t\tconst type = move.type;\n\t\t\tif (type && type !== '???' && source.getTypes().join() !== type) {\n\t\t\t\tif (!source.setType(type)) return;\n\t\t\t\tthis.effectState.protean = source.previouslySwitchedIn;\n\t\t\t\tthis.add('-start', source, 'typechange', type, '[from] ability: Protean');\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Protean\",\n\t\trating: 4,\n\t\tnum: 168,\n\t},\n\tprotosynthesis: {\n\t\tonSwitchInPriority: -2,\n\t\tonStart(pokemon) {\n\t\t\tthis.singleEvent('WeatherChange', this.effect, this.effectState, pokemon);\n\t\t},\n\t\tonWeatherChange(pokemon) {\n\t\t\t// Protosynthesis is not affected by Utility Umbrella\n\t\t\tif (this.field.isWeather('sunnyday')) {\n\t\t\t\tpokemon.addVolatile('protosynthesis');\n\t\t\t} else if (!pokemon.volatiles['protosynthesis']?.fromBooster && !this.field.isWeather('sunnyday')) {\n\t\t\t\tpokemon.removeVolatile('protosynthesis');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['protosynthesis'];\n\t\t\tthis.add('-end', pokemon, 'Protosynthesis', '[silent]');\n\t\t},\n\t\tcondition: {\n\t\t\tnoCopy: true,\n\t\t\tonStart(pokemon, source, effect) {\n\t\t\t\tif (effect?.name === 'Booster Energy') {\n\t\t\t\t\tthis.effectState.fromBooster = true;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Protosynthesis', '[fromitem]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Protosynthesis');\n\t\t\t\t}\n\t\t\t\tthis.effectState.bestStat = pokemon.getBestStat(false, true);\n\t\t\t\tthis.add('-start', pokemon, 'protosynthesis' + this.effectState.bestStat);\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosynthesis atk boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifyDefPriority: 6,\n\t\t\tonModifyDef(def, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosynthesis def boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpAPriority: 5,\n\t\t\tonModifySpA(spa, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosynthesis spa boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpDPriority: 6,\n\t\t\tonModifySpD(spd, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosynthesis spd boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpe(spe, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'spe' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosynthesis spe boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t},\n\t\t\tonEnd(pokemon) {\n\t\t\t\tthis.add('-end', pokemon, 'Protosynthesis');\n\t\t\t},\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },\n\t\tname: \"Protosynthesis\",\n\t\trating: 3,\n\t\tnum: 281,\n\t},\n\tpsychicsurge: {\n\t\tonStart(source) {\n\t\t\tthis.field.setTerrain('psychicterrain');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Psychic Surge\",\n\t\trating: 4,\n\t\tnum: 227,\n\t},\n\tpunkrock: {\n\t\tonBasePowerPriority: 7,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.flags['sound']) {\n\t\t\t\tthis.debug('Punk Rock boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t}\n\t\t},\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (move.flags['sound']) {\n\t\t\t\tthis.debug('Punk Rock weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Punk Rock\",\n\t\trating: 3.5,\n\t\tnum: 244,\n\t},\n\tpurepower: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk) {\n\t\t\treturn this.chainModify(2);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Pure Power\",\n\t\trating: 5,\n\t\tnum: 74,\n\t},\n\tpurifyingsalt: {\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Purifying Salt');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tonTryAddVolatile(status, target) {\n\t\t\tif (status.id === 'yawn') {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Purifying Salt');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonSourceModifyAtkPriority: 6,\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Ghost') {\n\t\t\t\tthis.debug('Purifying Salt weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonSourceModifySpAPriority: 5,\n\t\tonSourceModifySpA(spa, attacker, defender, move) {\n\t\t\tif (move.type === 'Ghost') {\n\t\t\t\tthis.debug('Purifying Salt weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Purifying Salt\",\n\t\trating: 4,\n\t\tnum: 272,\n\t},\n\tquarkdrive: {\n\t\tonSwitchInPriority: -2,\n\t\tonStart(pokemon) {\n\t\t\tthis.singleEvent('TerrainChange', this.effect, this.effectState, pokemon);\n\t\t},\n\t\tonTerrainChange(pokemon) {\n\t\t\tif (this.field.isTerrain('electricterrain')) {\n\t\t\t\tpokemon.addVolatile('quarkdrive');\n\t\t\t} else if (!pokemon.volatiles['quarkdrive']?.fromBooster) {\n\t\t\t\tpokemon.removeVolatile('quarkdrive');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['quarkdrive'];\n\t\t\tthis.add('-end', pokemon, 'Quark Drive', '[silent]');\n\t\t},\n\t\tcondition: {\n\t\t\tnoCopy: true,\n\t\t\tonStart(pokemon, source, effect) {\n\t\t\t\tif (effect?.name === 'Booster Energy') {\n\t\t\t\t\tthis.effectState.fromBooster = true;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Quark Drive', '[fromitem]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Quark Drive');\n\t\t\t\t}\n\t\t\t\tthis.effectState.bestStat = pokemon.getBestStat(false, true);\n\t\t\t\tthis.add('-start', pokemon, 'quarkdrive' + this.effectState.bestStat);\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Quark Drive atk boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifyDefPriority: 6,\n\t\t\tonModifyDef(def, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Quark Drive def boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpAPriority: 5,\n\t\t\tonModifySpA(spa, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Quark Drive spa boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpDPriority: 6,\n\t\t\tonModifySpD(spd, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Quark Drive spd boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpe(spe, pokemon) {\n\t\t\t\tif (this.effectState.bestStat !== 'spe' || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Quark Drive spe boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t},\n\t\t\tonEnd(pokemon) {\n\t\t\t\tthis.add('-end', pokemon, 'Quark Drive');\n\t\t\t},\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },\n\t\tname: \"Quark Drive\",\n\t\trating: 3,\n\t\tnum: 282,\n\t},\n\tqueenlymajesty: {\n\t\tonFoeTryMove(target, source, move) {\n\t\t\tconst targetAllExceptions = ['perishsong', 'flowershield', 'rototiller'];\n\t\t\tif (move.target === 'foeSide' || (move.target === 'all' && !targetAllExceptions.includes(move.id))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst dazzlingHolder = this.effectState.target;\n\t\t\tif ((source.isAlly(dazzlingHolder) || move.target === 'all') && move.priority > 0.1) {\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\tthis.add('cant', dazzlingHolder, 'ability: Queenly Majesty', move, `[of] ${target}`);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Queenly Majesty\",\n\t\trating: 2.5,\n\t\tnum: 214,\n\t},\n\tquickdraw: {\n\t\tonFractionalPriorityPriority: -1,\n\t\tonFractionalPriority(priority, pokemon, target, move) {\n\t\t\tif (move.category !== \"Status\" && this.randomChance(3, 10)) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Quick Draw');\n\t\t\t\treturn 0.1;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Quick Draw\",\n\t\trating: 2.5,\n\t\tnum: 259,\n\t},\n\tquickfeet: {\n\t\tonModifySpe(spe, pokemon) {\n\t\t\tif (pokemon.status) {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Quick Feet\",\n\t\trating: 2.5,\n\t\tnum: 95,\n\t},\n\traindish: {\n\t\tonWeather(target, source, effect) {\n\t\t\tif (target.hasItem('utilityumbrella')) return;\n\t\t\tif (effect.id === 'raindance' || effect.id === 'primordialsea') {\n\t\t\t\tthis.heal(target.baseMaxhp / 16);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Rain Dish\",\n\t\trating: 1.5,\n\t\tnum: 44,\n\t},\n\trattled: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (['Dark', 'Bug', 'Ghost'].includes(move.type)) {\n\t\t\t\tthis.boost({ spe: 1 });\n\t\t\t}\n\t\t},\n\t\tonAfterBoost(boost, target, source, effect) {\n\t\t\tif (effect?.name === 'Intimidate' && boost.atk) {\n\t\t\t\tthis.boost({ spe: 1 });\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Rattled\",\n\t\trating: 1,\n\t\tnum: 155,\n\t},\n\treceiver: {\n\t\tonAllyFaint(target) {\n\t\t\tif (!this.effectState.target.hp) return;\n\t\t\tconst ability = target.getAbility();\n\t\t\tif (ability.flags['noreceiver'] || ability.id === 'noability') return;\n\t\t\tif (this.effectState.target.setAbility(ability)) {\n\t\t\t\tthis.add('-ability', this.effectState.target, ability, '[from] ability: Receiver', `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1 },\n\t\tname: \"Receiver\",\n\t\trating: 0,\n\t\tnum: 222,\n\t},\n\treckless: {\n\t\tonBasePowerPriority: 23,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.recoil || move.hasCrashDamage) {\n\t\t\t\tthis.debug('Reckless boost');\n\t\t\t\treturn this.chainModify([4915, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Reckless\",\n\t\trating: 3,\n\t\tnum: 120,\n\t},\n\trefrigerate: {\n\t\tonModifyTypePriority: -1,\n\t\tonModifyType(move, pokemon) {\n\t\t\tconst noModifyType = [\n\t\t\t\t'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',\n\t\t\t];\n\t\t\tif (move.type === 'Normal' && !noModifyType.includes(move.id) &&\n\t\t\t\t!(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {\n\t\t\t\tmove.type = 'Ice';\n\t\t\t\tmove.typeChangerBoosted = this.effect;\n\t\t\t}\n\t\t},\n\t\tonBasePowerPriority: 23,\n\t\tonBasePower(basePower, pokemon, target, move) {\n\t\t\tif (move.typeChangerBoosted === this.effect) return this.chainModify([4915, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Refrigerate\",\n\t\trating: 4,\n\t\tnum: 174,\n\t},\n\tregenerator: {\n\t\tonSwitchOut(pokemon) {\n\t\t\tpokemon.heal(pokemon.baseMaxhp / 3);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Regenerator\",\n\t\trating: 4.5,\n\t\tnum: 144,\n\t},\n\tripen: {\n\t\tonTryHeal(damage, target, source, effect) {\n\t\t\tif (!effect) return;\n\t\t\tif (effect.name === 'Berry Juice' || effect.name === 'Leftovers') {\n\t\t\t\tthis.add('-activate', target, 'ability: Ripen');\n\t\t\t}\n\t\t\tif ((effect as Item).isBerry) return this.chainModify(2);\n\t\t},\n\t\tonChangeBoost(boost, target, source, effect) {\n\t\t\tif (effect && (effect as Item).isBerry) {\n\t\t\t\tlet b: BoostID;\n\t\t\t\tfor (b in boost) {\n\t\t\t\t\tboost[b]! *= 2;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSourceModifyDamagePriority: -1,\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.abilityState.berryWeaken) {\n\t\t\t\ttarget.abilityState.berryWeaken = false;\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonTryEatItemPriority: -1,\n\t\tonTryEatItem(item, pokemon) {\n\t\t\tthis.add('-activate', pokemon, 'ability: Ripen');\n\t\t},\n\t\tonEatItem(item, pokemon) {\n\t\t\tconst weakenBerries = [\n\t\t\t\t'Babiri Berry', 'Charti Berry', 'Chilan Berry', 'Chople Berry', 'Coba Berry', 'Colbur Berry', 'Haban Berry', 'Kasib Berry', 'Kebia Berry', 'Occa Berry', 'Passho Berry', 'Payapa Berry', 'Rindo Berry', 'Roseli Berry', 'Shuca Berry', 'Tanga Berry', 'Wacan Berry', 'Yache Berry',\n\t\t\t];\n\t\t\t// Record if the pokemon ate a berry to resist the attack\n\t\t\tpokemon.abilityState.berryWeaken = weakenBerries.includes(item.name);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Ripen\",\n\t\trating: 2,\n\t\tnum: 247,\n\t},\n\trivalry: {\n\t\tonBasePowerPriority: 24,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (attacker.gender && defender.gender) {\n\t\t\t\tif (attacker.gender === defender.gender) {\n\t\t\t\t\tthis.debug('Rivalry boost');\n\t\t\t\t\treturn this.chainModify(1.25);\n\t\t\t\t} else {\n\t\t\t\t\tthis.debug('Rivalry weaken');\n\t\t\t\t\treturn this.chainModify(0.75);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Rivalry\",\n\t\trating: 0,\n\t\tnum: 79,\n\t},\n\trkssystem: {\n\t\t// RKS System's type-changing itself is implemented in statuses.js\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"RKS System\",\n\t\trating: 4,\n\t\tnum: 225,\n\t},\n\trockhead: {\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect.id === 'recoil') {\n\t\t\t\tif (!this.activeMove) throw new Error(\"Battle.activeMove is null\");\n\t\t\t\tif (this.activeMove.id !== 'struggle') return null;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Rock Head\",\n\t\trating: 3,\n\t\tnum: 69,\n\t},\n\trockypayload: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Rock') {\n\t\t\t\tthis.debug('Rocky Payload boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Rock') {\n\t\t\t\tthis.debug('Rocky Payload boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Rocky Payload\",\n\t\trating: 3.5,\n\t\tnum: 276,\n\t},\n\troughskin: {\n\t\tonDamagingHitOrder: 1,\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target, true)) {\n\t\t\t\tthis.damage(source.baseMaxhp / 8, source, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Rough Skin\",\n\t\trating: 2.5,\n\t\tnum: 24,\n\t},\n\trunaway: {\n\t\tflags: {},\n\t\tname: \"Run Away\",\n\t\trating: 0,\n\t\tnum: 50,\n\t},\n\tsandforce: {\n\t\tonBasePowerPriority: 21,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (this.field.isWeather('sandstorm')) {\n\t\t\t\tif (move.type === 'Rock' || move.type === 'Ground' || move.type === 'Steel') {\n\t\t\t\t\tthis.debug('Sand Force boost');\n\t\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (type === 'sandstorm') return false;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Sand Force\",\n\t\trating: 2,\n\t\tnum: 159,\n\t},\n\tsandrush: {\n\t\tonModifySpe(spe, pokemon) {\n\t\t\tif (this.field.isWeather('sandstorm')) {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (type === 'sandstorm') return false;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Sand Rush\",\n\t\trating: 3,\n\t\tnum: 146,\n\t},\n\tsandspit: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tthis.field.setWeather('sandstorm');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Sand Spit\",\n\t\trating: 1,\n\t\tnum: 245,\n\t},\n\tsandstream: {\n\t\tonStart(source) {\n\t\t\tthis.field.setWeather('sandstorm');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Sand Stream\",\n\t\trating: 4,\n\t\tnum: 45,\n\t},\n\tsandveil: {\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (type === 'sandstorm') return false;\n\t\t},\n\t\tonModifyAccuracyPriority: -1,\n\t\tonModifyAccuracy(accuracy) {\n\t\t\tif (typeof accuracy !== 'number') return;\n\t\t\tif (this.field.isWeather('sandstorm')) {\n\t\t\t\tthis.debug('Sand Veil - decreasing accuracy');\n\t\t\t\treturn this.chainModify([3277, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Sand Veil\",\n\t\trating: 1.5,\n\t\tnum: 8,\n\t},\n\tsapsipper: {\n\t\tonTryHitPriority: 1,\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Grass') {\n\t\t\t\tif (!this.boost({ atk: 1 })) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Sap Sipper');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonAllyTryHitSide(target, source, move) {\n\t\t\tif (source === this.effectState.target || !target.isAlly(source)) return;\n\t\t\tif (move.type === 'Grass') {\n\t\t\t\tthis.boost({ atk: 1 }, this.effectState.target);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Sap Sipper\",\n\t\trating: 3,\n\t\tnum: 157,\n\t},\n\tschooling: {\n\t\tonSwitchInPriority: -1,\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Wishiwashi' || pokemon.level < 20 || pokemon.transformed) return;\n\t\t\tif (pokemon.hp > pokemon.maxhp / 4) {\n\t\t\t\tif (pokemon.species.id === 'wishiwashi') {\n\t\t\t\t\tpokemon.formeChange('Wishiwashi-School');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (pokemon.species.id === 'wishiwashischool') {\n\t\t\t\t\tpokemon.formeChange('Wishiwashi');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonResidualOrder: 29,\n\t\tonResidual(pokemon) {\n\t\t\tif (\n\t\t\t\tpokemon.baseSpecies.baseSpecies !== 'Wishiwashi' || pokemon.level < 20 ||\n\t\t\t\tpokemon.transformed || !pokemon.hp\n\t\t\t) return;\n\t\t\tif (pokemon.hp > pokemon.maxhp / 4) {\n\t\t\t\tif (pokemon.species.id === 'wishiwashi') {\n\t\t\t\t\tpokemon.formeChange('Wishiwashi-School');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (pokemon.species.id === 'wishiwashischool') {\n\t\t\t\t\tpokemon.formeChange('Wishiwashi');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"Schooling\",\n\t\trating: 3,\n\t\tnum: 208,\n\t},\n\tscrappy: {\n\t\tonModifyMovePriority: -5,\n\t\tonModifyMove(move) {\n\t\t\tif (!move.ignoreImmunity) move.ignoreImmunity = {};\n\t\t\tif (move.ignoreImmunity !== true) {\n\t\t\t\tmove.ignoreImmunity['Fighting'] = true;\n\t\t\t\tmove.ignoreImmunity['Normal'] = true;\n\t\t\t}\n\t\t},\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (effect.name === 'Intimidate' && boost.atk) {\n\t\t\t\tdelete boost.atk;\n\t\t\t\tthis.add('-fail', target, 'unboost', 'Attack', '[from] ability: Scrappy', `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Scrappy\",\n\t\trating: 3,\n\t\tnum: 113,\n\t},\n\tscreencleaner: {\n\t\tonStart(pokemon) {\n\t\t\tlet activated = false;\n\t\t\tfor (const sideCondition of ['reflect', 'lightscreen', 'auroraveil']) {\n\t\t\t\tfor (const side of [pokemon.side, ...pokemon.side.foeSidesWithConditions()]) {\n\t\t\t\t\tif (side.getSideCondition(sideCondition)) {\n\t\t\t\t\t\tif (!activated) {\n\t\t\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Screen Cleaner');\n\t\t\t\t\t\t\tactivated = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside.removeSideCondition(sideCondition);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Screen Cleaner\",\n\t\trating: 2,\n\t\tnum: 251,\n\t},\n\tseedsower: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tthis.field.setTerrain('grassyterrain');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Seed Sower\",\n\t\trating: 2.5,\n\t\tnum: 269,\n\t},\n\tserenegrace: {\n\t\tonModifyMovePriority: -2,\n\t\tonModifyMove(move) {\n\t\t\tif (move.secondaries) {\n\t\t\t\tthis.debug('doubling secondary chance');\n\t\t\t\tfor (const secondary of move.secondaries) {\n\t\t\t\t\tif (secondary.chance) secondary.chance *= 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (move.self?.chance) move.self.chance *= 2;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Serene Grace\",\n\t\trating: 3.5,\n\t\tnum: 32,\n\t},\n\tshadowshield: {\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.hp >= target.maxhp) {\n\t\t\t\tthis.debug('Shadow Shield weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Shadow Shield\",\n\t\trating: 3.5,\n\t\tnum: 231,\n\t},\n\tshadowtag: {\n\t\tonFoeTrapPokemon(pokemon) {\n\t\t\tif (!pokemon.hasAbility('shadowtag') && pokemon.isAdjacent(this.effectState.target)) {\n\t\t\t\tpokemon.tryTrap(true);\n\t\t\t}\n\t\t},\n\t\tonFoeMaybeTrapPokemon(pokemon, source) {\n\t\t\tif (!source) source = this.effectState.target;\n\t\t\tif (!source || !pokemon.isAdjacent(source)) return;\n\t\t\tif (!pokemon.hasAbility('shadowtag')) {\n\t\t\t\tpokemon.maybeTrapped = true;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Shadow Tag\",\n\t\trating: 5,\n\t\tnum: 23,\n\t},\n\tsharpness: {\n\t\tonBasePowerPriority: 19,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.flags['slicing']) {\n\t\t\t\tthis.debug('Sharpness boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Sharpness\",\n\t\trating: 3.5,\n\t\tnum: 292,\n\t},\n\tshedskin: {\n\t\tonResidualOrder: 5,\n\t\tonResidualSubOrder: 3,\n\t\tonResidual(pokemon) {\n\t\t\tif (pokemon.hp && pokemon.status && this.randomChance(33, 100)) {\n\t\t\t\tthis.debug('shed skin');\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Shed Skin');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Shed Skin\",\n\t\trating: 3,\n\t\tnum: 61,\n\t},\n\tsheerforce: {\n\t\tonModifyMove(move, pokemon) {\n\t\t\tif (move.secondaries) {\n\t\t\t\tdelete move.secondaries;\n\t\t\t\t// Technically not a secondary effect, but it is negated\n\t\t\t\tdelete move.self;\n\t\t\t\tif (move.id === 'clangoroussoulblaze') delete move.selfBoost;\n\t\t\t\t// Actual negation of `AfterMoveSecondary` effects implemented in scripts.js\n\t\t\t\tmove.hasSheerForce = true;\n\t\t\t}\n\t\t},\n\t\tonBasePowerPriority: 21,\n\t\tonBasePower(basePower, pokemon, target, move) {\n\t\t\tif (move.hasSheerForce) return this.chainModify([5325, 4096]);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Sheer Force\",\n\t\trating: 3.5,\n\t\tnum: 125,\n\t},\n\tshellarmor: {\n\t\tonCriticalHit: false,\n\t\tflags: { breakable: 1 },\n\t\tname: \"Shell Armor\",\n\t\trating: 1,\n\t\tnum: 75,\n\t},\n\tshielddust: {\n\t\tonModifySecondaries(secondaries) {\n\t\t\tthis.debug('Shield Dust prevent secondary');\n\t\t\treturn secondaries.filter(effect => !!(effect.self || effect.dustproof));\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Shield Dust\",\n\t\trating: 2,\n\t\tnum: 19,\n\t},\n\tshieldsdown: {\n\t\tonSwitchInPriority: -1,\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Minior' || pokemon.transformed) return;\n\t\t\tif (pokemon.hp > pokemon.maxhp / 2) {\n\t\t\t\tif (pokemon.species.forme !== 'Meteor') {\n\t\t\t\t\tpokemon.formeChange('Minior-Meteor');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (pokemon.species.forme === 'Meteor') {\n\t\t\t\t\tpokemon.formeChange(pokemon.set.species);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonResidualOrder: 29,\n\t\tonResidual(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Minior' || pokemon.transformed || !pokemon.hp) return;\n\t\t\tif (pokemon.hp > pokemon.maxhp / 2) {\n\t\t\t\tif (pokemon.species.forme !== 'Meteor') {\n\t\t\t\t\tpokemon.formeChange('Minior-Meteor');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (pokemon.species.forme === 'Meteor') {\n\t\t\t\t\tpokemon.formeChange(pokemon.set.species);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (target.species.id !== 'miniormeteor' || target.transformed) return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Shields Down');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tonTryAddVolatile(status, target) {\n\t\t\tif (target.species.id !== 'miniormeteor' || target.transformed) return;\n\t\t\tif (status.id !== 'yawn') return;\n\t\t\tthis.add('-immune', target, '[from] ability: Shields Down');\n\t\t\treturn null;\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"Shields Down\",\n\t\trating: 3,\n\t\tnum: 197,\n\t},\n\tsimple: {\n\t\tonChangeBoost(boost, target, source, effect) {\n\t\t\tif (effect && effect.id === 'zpower') return;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tboost[i]! *= 2;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Simple\",\n\t\trating: 4,\n\t\tnum: 86,\n\t},\n\tskilllink: {\n\t\tonModifyMove(move) {\n\t\t\tif (move.multihit && Array.isArray(move.multihit) && move.multihit.length) {\n\t\t\t\tmove.multihit = move.multihit[1];\n\t\t\t}\n\t\t\tif (move.multiaccuracy) {\n\t\t\t\tdelete move.multiaccuracy;\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Skill Link\",\n\t\trating: 3,\n\t\tnum: 92,\n\t},\n\tslowstart: {\n\t\tonStart(pokemon) {\n\t\t\tpokemon.addVolatile('slowstart');\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['slowstart'];\n\t\t\tthis.add('-end', pokemon, 'Slow Start', '[silent]');\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tonResidualOrder: 28,\n\t\t\tonResidualSubOrder: 2,\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-start', target, 'ability: Slow Start');\n\t\t\t},\n\t\t\tonResidual(pokemon) {\n\t\t\t\tif (!pokemon.activeTurns) {\n\t\t\t\t\tthis.effectState.duration! += 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, pokemon) {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t},\n\t\t\tonModifySpe(spe, pokemon) {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t},\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'Slow Start');\n\t\t\t},\n\t\t},\n\t\tflags: {},\n\t\tname: \"Slow Start\",\n\t\trating: -1,\n\t\tnum: 112,\n\t},\n\tslushrush: {\n\t\tonModifySpe(spe, pokemon) {\n\t\t\tif (this.field.isWeather(['hail', 'snowscape'])) {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Slush Rush\",\n\t\trating: 3,\n\t\tnum: 202,\n\t},\n\tsniper: {\n\t\tonModifyDamage(damage, source, target, move) {\n\t\t\tif (target.getMoveHitData(move).crit) {\n\t\t\t\tthis.debug('Sniper boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Sniper\",\n\t\trating: 2,\n\t\tnum: 97,\n\t},\n\tsnowcloak: {\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (type === 'hail') return false;\n\t\t},\n\t\tonModifyAccuracyPriority: -1,\n\t\tonModifyAccuracy(accuracy) {\n\t\t\tif (typeof accuracy !== 'number') return;\n\t\t\tif (this.field.isWeather(['hail', 'snowscape'])) {\n\t\t\t\tthis.debug('Snow Cloak - decreasing accuracy');\n\t\t\t\treturn this.chainModify([3277, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Snow Cloak\",\n\t\trating: 1.5,\n\t\tnum: 81,\n\t},\n\tsnowwarning: {\n\t\tonStart(source) {\n\t\t\tthis.field.setWeather('snowscape');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Snow Warning\",\n\t\trating: 4,\n\t\tnum: 117,\n\t},\n\tsolarpower: {\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(spa, pokemon) {\n\t\t\tif (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonWeather(target, source, effect) {\n\t\t\tif (target.hasItem('utilityumbrella')) return;\n\t\t\tif (effect.id === 'sunnyday' || effect.id === 'desolateland') {\n\t\t\t\tthis.damage(target.baseMaxhp / 8, target, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Solar Power\",\n\t\trating: 2,\n\t\tnum: 94,\n\t},\n\tsolidrock: {\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.getMoveHitData(move).typeMod > 0) {\n\t\t\t\tthis.debug('Solid Rock neutralize');\n\t\t\t\treturn this.chainModify(0.75);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Solid Rock\",\n\t\trating: 3,\n\t\tnum: 116,\n\t},\n\tsoulheart: {\n\t\tonAnyFaintPriority: 1,\n\t\tonAnyFaint() {\n\t\t\tthis.boost({ spa: 1 }, this.effectState.target);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Soul-Heart\",\n\t\trating: 3.5,\n\t\tnum: 220,\n\t},\n\tsoundproof: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.flags['sound']) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Soundproof');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonAllyTryHitSide(target, source, move) {\n\t\t\tif (move.flags['sound']) {\n\t\t\t\tthis.add('-immune', this.effectState.target, '[from] ability: Soundproof');\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Soundproof\",\n\t\trating: 2,\n\t\tnum: 43,\n\t},\n\tspeedboost: {\n\t\tonResidualOrder: 28,\n\t\tonResidualSubOrder: 2,\n\t\tonResidual(pokemon) {\n\t\t\tif (pokemon.activeTurns) {\n\t\t\t\tthis.boost({ spe: 1 });\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Speed Boost\",\n\t\trating: 4.5,\n\t\tnum: 3,\n\t},\n\tstakeout: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender) {\n\t\t\tif (!defender.activeTurns) {\n\t\t\t\tthis.debug('Stakeout boost');\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender) {\n\t\t\tif (!defender.activeTurns) {\n\t\t\t\tthis.debug('Stakeout boost');\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Stakeout\",\n\t\trating: 4.5,\n\t\tnum: 198,\n\t},\n\tstall: {\n\t\tonFractionalPriority: -0.1,\n\t\tflags: {},\n\t\tname: \"Stall\",\n\t\trating: -1,\n\t\tnum: 100,\n\t},\n\tstalwart: {\n\t\tonModifyMovePriority: 1,\n\t\tonModifyMove(move) {\n\t\t\t// most of the implementation is in Battle#getTarget\n\t\t\tmove.tracksTarget = move.target !== 'scripted';\n\t\t},\n\t\tflags: {},\n\t\tname: \"Stalwart\",\n\t\trating: 0,\n\t\tnum: 242,\n\t},\n\tstamina: {\n\t\tonDamagingHit(damage, target, source, effect) {\n\t\t\tthis.boost({ def: 1 });\n\t\t},\n\t\tflags: {},\n\t\tname: \"Stamina\",\n\t\trating: 4,\n\t\tnum: 192,\n\t},\n\tstancechange: {\n\t\tonModifyMovePriority: 1,\n\t\tonModifyMove(move, attacker, defender) {\n\t\t\tif (attacker.species.baseSpecies !== 'Aegislash' || attacker.transformed) return;\n\t\t\tif (move.category === 'Status' && move.id !== 'kingsshield') return;\n\t\t\tconst targetForme = (move.id === 'kingsshield' ? 'Aegislash' : 'Aegislash-Blade');\n\t\t\tif (attacker.species.name !== targetForme) attacker.formeChange(targetForme);\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"Stance Change\",\n\t\trating: 4,\n\t\tnum: 176,\n\t},\n\tstatic: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target)) {\n\t\t\t\tif (this.randomChance(3, 10)) {\n\t\t\t\t\tsource.trySetStatus('par', target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Static\",\n\t\trating: 2,\n\t\tnum: 9,\n\t},\n\tsteadfast: {\n\t\tonFlinch(pokemon) {\n\t\t\tthis.boost({ spe: 1 });\n\t\t},\n\t\tflags: {},\n\t\tname: \"Steadfast\",\n\t\trating: 1,\n\t\tnum: 80,\n\t},\n\tsteamengine: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (['Water', 'Fire'].includes(move.type)) {\n\t\t\t\tthis.boost({ spe: 6 });\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Steam Engine\",\n\t\trating: 2,\n\t\tnum: 243,\n\t},\n\tsteelworker: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Steel') {\n\t\t\t\tthis.debug('Steelworker boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Steel') {\n\t\t\t\tthis.debug('Steelworker boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Steelworker\",\n\t\trating: 3.5,\n\t\tnum: 200,\n\t},\n\tsteelyspirit: {\n\t\tonAllyBasePowerPriority: 22,\n\t\tonAllyBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.type === 'Steel') {\n\t\t\t\tthis.debug('Steely Spirit boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Steely Spirit\",\n\t\trating: 3.5,\n\t\tnum: 252,\n\t},\n\tstench: {\n\t\tonModifyMovePriority: -1,\n\t\tonModifyMove(move) {\n\t\t\tif (move.category !== \"Status\") {\n\t\t\t\tthis.debug('Adding Stench flinch');\n\t\t\t\tif (!move.secondaries) move.secondaries = [];\n\t\t\t\tfor (const secondary of move.secondaries) {\n\t\t\t\t\tif (secondary.volatileStatus === 'flinch') return;\n\t\t\t\t}\n\t\t\t\tmove.secondaries.push({\n\t\t\t\t\tchance: 10,\n\t\t\t\t\tvolatileStatus: 'flinch',\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Stench\",\n\t\trating: 0.5,\n\t\tnum: 1,\n\t},\n\tstickyhold: {\n\t\tonTakeItem(item, pokemon, source) {\n\t\t\tif (!this.activeMove) throw new Error(\"Battle.activeMove is null\");\n\t\t\tif (!pokemon.hp || pokemon.item === 'stickybarb') return;\n\t\t\tif ((source && source !== pokemon) || this.activeMove.id === 'knockoff') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Sticky Hold');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Sticky Hold\",\n\t\trating: 1.5,\n\t\tnum: 60,\n\t},\n\tstormdrain: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Water') {\n\t\t\t\tif (!this.boost({ spa: 1 })) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Storm Drain');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonAnyRedirectTarget(target, source, source2, move) {\n\t\t\tif (move.type !== 'Water' || move.flags['pledgecombo']) return;\n\t\t\tconst redirectTarget = ['randomNormal', 'adjacentFoe'].includes(move.target) ? 'normal' : move.target;\n\t\t\tif (this.validTarget(this.effectState.target, source, redirectTarget)) {\n\t\t\t\tif (move.smartTarget) move.smartTarget = false;\n\t\t\t\tif (this.effectState.target !== target) {\n\t\t\t\t\tthis.add('-activate', this.effectState.target, 'ability: Storm Drain');\n\t\t\t\t}\n\t\t\t\treturn this.effectState.target;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Storm Drain\",\n\t\trating: 3,\n\t\tnum: 114,\n\t},\n\tstrongjaw: {\n\t\tonBasePowerPriority: 19,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.flags['bite']) {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Strong Jaw\",\n\t\trating: 3.5,\n\t\tnum: 173,\n\t},\n\tsturdy: {\n\t\tonTryHit(pokemon, target, move) {\n\t\t\tif (move.ohko) {\n\t\t\t\tthis.add('-immune', pokemon, '[from] ability: Sturdy');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonDamagePriority: -30,\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (target.hp === target.maxhp && damage >= target.hp && effect && effect.effectType === 'Move') {\n\t\t\t\tthis.add('-ability', target, 'Sturdy');\n\t\t\t\treturn target.hp - 1;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Sturdy\",\n\t\trating: 3,\n\t\tnum: 5,\n\t},\n\tsuctioncups: {\n\t\tonDragOutPriority: 1,\n\t\tonDragOut(pokemon) {\n\t\t\tthis.add('-activate', pokemon, 'ability: Suction Cups');\n\t\t\treturn null;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Suction Cups\",\n\t\trating: 1,\n\t\tnum: 21,\n\t},\n\tsuperluck: {\n\t\tonModifyCritRatio(critRatio) {\n\t\t\treturn critRatio + 1;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Super Luck\",\n\t\trating: 1.5,\n\t\tnum: 105,\n\t},\n\tsupersweetsyrup: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.syrupTriggered) return;\n\t\t\tpokemon.syrupTriggered = true;\n\t\t\tthis.add('-ability', pokemon, 'Supersweet Syrup');\n\t\t\tfor (const target of pokemon.adjacentFoes()) {\n\t\t\t\tif (target.volatiles['substitute']) {\n\t\t\t\t\tthis.add('-immune', target);\n\t\t\t\t} else {\n\t\t\t\t\tthis.boost({ evasion: -1 }, target, pokemon, null, true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Supersweet Syrup\",\n\t\trating: 1.5,\n\t\tnum: 306,\n\t},\n\tsupremeoverlord: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.side.totalFainted) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Supreme Overlord');\n\t\t\t\tconst fallen = Math.min(pokemon.side.totalFainted, 5);\n\t\t\t\tthis.add('-start', pokemon, `fallen${fallen}`, '[silent]');\n\t\t\t\tthis.effectState.fallen = fallen;\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tthis.add('-end', pokemon, `fallen${this.effectState.fallen}`, '[silent]');\n\t\t},\n\t\tonBasePowerPriority: 21,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (this.effectState.fallen) {\n\t\t\t\tconst powMod = [4096, 4506, 4915, 5325, 5734, 6144];\n\t\t\t\tthis.debug(`Supreme Overlord boost: ${powMod[this.effectState.fallen]}/4096`);\n\t\t\t\treturn this.chainModify([powMod[this.effectState.fallen], 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Supreme Overlord\",\n\t\trating: 4,\n\t\tnum: 293,\n\t},\n\tsurgesurfer: {\n\t\tonModifySpe(spe) {\n\t\t\tif (this.field.isTerrain('electricterrain')) {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Surge Surfer\",\n\t\trating: 3,\n\t\tnum: 207,\n\t},\n\tswarm: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Bug' && attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Swarm boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Bug' && attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Swarm boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Swarm\",\n\t\trating: 2,\n\t\tnum: 68,\n\t},\n\tsweetveil: {\n\t\tonAllySetStatus(status, target, source, effect) {\n\t\t\tif (status.id === 'slp') {\n\t\t\t\tthis.debug('Sweet Veil interrupts sleep');\n\t\t\t\tconst effectHolder = this.effectState.target;\n\t\t\t\tthis.add('-block', target, 'ability: Sweet Veil', `[of] ${effectHolder}`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonAllyTryAddVolatile(status, target) {\n\t\t\tif (status.id === 'yawn') {\n\t\t\t\tthis.debug('Sweet Veil blocking yawn');\n\t\t\t\tconst effectHolder = this.effectState.target;\n\t\t\t\tthis.add('-block', target, 'ability: Sweet Veil', `[of] ${effectHolder}`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Sweet Veil\",\n\t\trating: 2,\n\t\tnum: 175,\n\t},\n\tswiftswim: {\n\t\tonModifySpe(spe, pokemon) {\n\t\t\tif (['raindance', 'primordialsea'].includes(pokemon.effectiveWeather())) {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Swift Swim\",\n\t\trating: 3,\n\t\tnum: 33,\n\t},\n\tsymbiosis: {\n\t\tonAllyAfterUseItem(item, pokemon) {\n\t\t\tif (pokemon.switchFlag) return;\n\t\t\tconst source = this.effectState.target;\n\t\t\tconst myItem = source.takeItem();\n\t\t\tif (!myItem) return;\n\t\t\tif (\n\t\t\t\t!this.singleEvent('TakeItem', myItem, source.itemState, pokemon, source, this.effect, myItem) ||\n\t\t\t\t!pokemon.setItem(myItem)\n\t\t\t) {\n\t\t\t\tsource.item = myItem.id;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('-activate', source, 'ability: Symbiosis', myItem, `[of] ${pokemon}`);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Symbiosis\",\n\t\trating: 0,\n\t\tnum: 180,\n\t},\n\tsynchronize: {\n\t\tonAfterSetStatus(status, target, source, effect) {\n\t\t\tif (!source || source === target) return;\n\t\t\tif (effect && effect.id === 'toxicspikes') return;\n\t\t\tif (status.id === 'slp' || status.id === 'frz') return;\n\t\t\tthis.add('-activate', target, 'ability: Synchronize');\n\t\t\t// Hack to make status-prevention abilities think Synchronize is a status move\n\t\t\t// and show messages when activating against it.\n\t\t\tsource.trySetStatus(status, target, { status: status.id, id: 'synchronize' } as Effect);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Synchronize\",\n\t\trating: 2,\n\t\tnum: 28,\n\t},\n\tswordofruin: {\n\t\tonStart(pokemon) {\n\t\t\tif (this.suppressingAbility(pokemon)) return;\n\t\t\tthis.add('-ability', pokemon, 'Sword of Ruin');\n\t\t},\n\t\tonAnyModifyDef(def, target, source, move) {\n\t\t\tconst abilityHolder = this.effectState.target;\n\t\t\tif (target.hasAbility('Sword of Ruin')) return;\n\t\t\tif (!move.ruinedDef?.hasAbility('Sword of Ruin')) move.ruinedDef = abilityHolder;\n\t\t\tif (move.ruinedDef !== abilityHolder) return;\n\t\t\tthis.debug('Sword of Ruin Def drop');\n\t\t\treturn this.chainModify(0.75);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Sword of Ruin\",\n\t\trating: 4.5,\n\t\tnum: 285,\n\t},\n\ttabletsofruin: {\n\t\tonStart(pokemon) {\n\t\t\tif (this.suppressingAbility(pokemon)) return;\n\t\t\tthis.add('-ability', pokemon, 'Tablets of Ruin');\n\t\t},\n\t\tonAnyModifyAtk(atk, source, target, move) {\n\t\t\tconst abilityHolder = this.effectState.target;\n\t\t\tif (source.hasAbility('Tablets of Ruin')) return;\n\t\t\tif (!move.ruinedAtk) move.ruinedAtk = abilityHolder;\n\t\t\tif (move.ruinedAtk !== abilityHolder) return;\n\t\t\tthis.debug('Tablets of Ruin Atk drop');\n\t\t\treturn this.chainModify(0.75);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Tablets of Ruin\",\n\t\trating: 4.5,\n\t\tnum: 284,\n\t},\n\ttangledfeet: {\n\t\tonModifyAccuracyPriority: -1,\n\t\tonModifyAccuracy(accuracy, target) {\n\t\t\tif (typeof accuracy !== 'number') return;\n\t\t\tif (target?.volatiles['confusion']) {\n\t\t\t\tthis.debug('Tangled Feet - decreasing accuracy');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Tangled Feet\",\n\t\trating: 1,\n\t\tnum: 77,\n\t},\n\ttanglinghair: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (this.checkMoveMakesContact(move, source, target, true)) {\n\t\t\t\tthis.add('-ability', target, 'Tangling Hair');\n\t\t\t\tthis.boost({ spe: -1 }, source, target, null, true);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Tangling Hair\",\n\t\trating: 2,\n\t\tnum: 221,\n\t},\n\ttechnician: {\n\t\tonBasePowerPriority: 30,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tconst basePowerAfterMultiplier = this.modify(basePower, this.event.modifier);\n\t\t\tthis.debug(`Base Power: ${basePowerAfterMultiplier}`);\n\t\t\tif (basePowerAfterMultiplier <= 60) {\n\t\t\t\tthis.debug('Technician boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Technician\",\n\t\trating: 3.5,\n\t\tnum: 101,\n\t},\n\ttelepathy: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && target.isAlly(source) && move.category !== 'Status') {\n\t\t\t\tthis.add('-activate', target, 'ability: Telepathy');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Telepathy\",\n\t\trating: 0,\n\t\tnum: 140,\n\t},\n\tteraformzero: {\n\t\tonAfterTerastallization(pokemon) {\n\t\t\tif (pokemon.baseSpecies.name !== 'Terapagos-Stellar') return;\n\t\t\tif (this.field.weather || this.field.terrain) {\n\t\t\t\tthis.add('-ability', pokemon, 'Teraform Zero');\n\t\t\t\tthis.field.clearWeather();\n\t\t\t\tthis.field.clearTerrain();\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1 },\n\t\tname: \"Teraform Zero\",\n\t\trating: 3,\n\t\tnum: 309,\n\t},\n\tterashell: {\n\t\t// effectiveness implemented in sim/pokemon.ts:Pokemon#runEffectiveness\n\t\t// needs two checks to reset between regular moves and future attacks\n\t\tonAnyBeforeMove() {\n\t\t\tdelete this.effectState.resisted;\n\t\t},\n\t\tonAnyAfterMove() {\n\t\t\tdelete this.effectState.resisted;\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, breakable: 1 },\n\t\tname: \"Tera Shell\",\n\t\trating: 3.5,\n\t\tnum: 308,\n\t},\n\tterashift: {\n\t\tonSwitchInPriority: 2,\n\t\tonSwitchIn(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Terapagos') return;\n\t\t\tif (pokemon.species.forme !== 'Terastal') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Tera Shift');\n\t\t\t\tpokemon.formeChange('Terapagos-Terastal', this.effect, true);\n\t\t\t\tpokemon.regressionForme = false;\n\t\t\t\tpokemon.baseMaxhp = Math.floor(Math.floor(\n\t\t\t\t\t2 * pokemon.species.baseStats['hp'] + pokemon.set.ivs['hp'] + Math.floor(pokemon.set.evs['hp'] / 4) + 100\n\t\t\t\t) * pokemon.level / 100 + 10);\n\t\t\t\tconst newMaxHP = pokemon.baseMaxhp;\n\t\t\t\tpokemon.hp = newMaxHP - (pokemon.maxhp - pokemon.hp);\n\t\t\t\tpokemon.maxhp = newMaxHP;\n\t\t\t\tthis.add('-heal', pokemon, pokemon.getHealth, '[silent]');\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1, notransform: 1 },\n\t\tname: \"Tera Shift\",\n\t\trating: 3,\n\t\tnum: 307,\n\t},\n\tteravolt: {\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Teravolt');\n\t\t},\n\t\tonModifyMove(move) {\n\t\t\tmove.ignoreAbility = true;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Teravolt\",\n\t\trating: 3,\n\t\tnum: 164,\n\t},\n\tthermalexchange: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\tthis.boost({ atk: 1 });\n\t\t\t}\n\t\t},\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'brn') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Thermal Exchange');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (status.id !== 'brn') return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Thermal Exchange');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Thermal Exchange\",\n\t\trating: 2.5,\n\t\tnum: 270,\n\t},\n\tthickfat: {\n\t\tonSourceModifyAtkPriority: 6,\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Ice' || move.type === 'Fire') {\n\t\t\t\tthis.debug('Thick Fat weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonSourceModifySpAPriority: 5,\n\t\tonSourceModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Ice' || move.type === 'Fire') {\n\t\t\t\tthis.debug('Thick Fat weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Thick Fat\",\n\t\trating: 3.5,\n\t\tnum: 47,\n\t},\n\ttintedlens: {\n\t\tonModifyDamage(damage, source, target, move) {\n\t\t\tif (target.getMoveHitData(move).typeMod < 0) {\n\t\t\t\tthis.debug('Tinted Lens boost');\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Tinted Lens\",\n\t\trating: 4,\n\t\tnum: 110,\n\t},\n\ttorrent: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Water' && attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Torrent boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Water' && attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Torrent boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Torrent\",\n\t\trating: 2,\n\t\tnum: 67,\n\t},\n\ttoughclaws: {\n\t\tonBasePowerPriority: 21,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (move.flags['contact']) {\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Tough Claws\",\n\t\trating: 3.5,\n\t\tnum: 181,\n\t},\n\ttoxicboost: {\n\t\tonBasePowerPriority: 19,\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif ((attacker.status === 'psn' || attacker.status === 'tox') && move.category === 'Physical') {\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Toxic Boost\",\n\t\trating: 3,\n\t\tnum: 137,\n\t},\n\ttoxicchain: {\n\t\tonSourceDamagingHit(damage, target, source, move) {\n\t\t\t// Despite not being a secondary, Shield Dust / Covert Cloak block Toxic Chain's effect\n\t\t\tif (target.hasAbility('shielddust') || target.hasItem('covertcloak')) return;\n\n\t\t\tif (this.randomChance(3, 10)) {\n\t\t\t\ttarget.trySetStatus('tox', source);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Toxic Chain\",\n\t\trating: 4.5,\n\t\tnum: 305,\n\t},\n\ttoxicdebris: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tconst side = source.isAlly(target) ? source.side.foe : source.side;\n\t\t\tconst toxicSpikes = side.sideConditions['toxicspikes'];\n\t\t\tif (move.category === 'Physical' && (!toxicSpikes || toxicSpikes.layers < 2)) {\n\t\t\t\tthis.add('-activate', target, 'ability: Toxic Debris');\n\t\t\t\tside.addSideCondition('toxicspikes', target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Toxic Debris\",\n\t\trating: 3.5,\n\t\tnum: 295,\n\t},\n\ttrace: {\n\t\tonStart(pokemon) {\n\t\t\tthis.effectState.seek = true;\n\t\t\t// n.b. only affects Hackmons\n\t\t\t// interaction with No Ability is complicated: https://www.smogon.com/forums/threads/pokemon-sun-moon-battle-mechanics-research.3586701/page-76#post-7790209\n\t\t\tif (pokemon.adjacentFoes().some(foeActive => foeActive.ability === 'noability')) {\n\t\t\t\tthis.effectState.seek = false;\n\t\t\t}\n\t\t\t// interaction with Ability Shield is similar to No Ability\n\t\t\tif (pokemon.hasItem('Ability Shield')) {\n\t\t\t\tthis.add('-block', pokemon, 'item: Ability Shield');\n\t\t\t\tthis.effectState.seek = false;\n\t\t\t}\n\t\t\tif (this.effectState.seek) {\n\t\t\t\tthis.singleEvent('Update', this.effect, this.effectState, pokemon);\n\t\t\t}\n\t\t},\n\t\tonUpdate(pokemon) {\n\t\t\tif (!this.effectState.seek) return;\n\n\t\t\tconst possibleTargets = pokemon.adjacentFoes().filter(\n\t\t\t\ttarget => !target.getAbility().flags['notrace'] && target.ability !== 'noability'\n\t\t\t);\n\t\t\tif (!possibleTargets.length) return;\n\n\t\t\tconst target = this.sample(possibleTargets);\n\t\t\tconst ability = target.getAbility();\n\t\t\tif (pokemon.setAbility(ability)) {\n\t\t\t\tthis.add('-ability', pokemon, ability, '[from] ability: Trace', `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1 },\n\t\tname: \"Trace\",\n\t\trating: 2.5,\n\t\tnum: 36,\n\t},\n\ttransistor: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Electric') {\n\t\t\t\tthis.debug('Transistor boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Electric') {\n\t\t\t\tthis.debug('Transistor boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Transistor\",\n\t\trating: 3.5,\n\t\tnum: 262,\n\t},\n\ttriage: {\n\t\tonModifyPriority(priority, pokemon, target, move) {\n\t\t\tif (move?.flags['heal']) return priority + 3;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Triage\",\n\t\trating: 3.5,\n\t\tnum: 205,\n\t},\n\ttruant: {\n\t\tonStart(pokemon) {\n\t\t\tpokemon.removeVolatile('truant');\n\t\t\tif (pokemon.activeTurns && (pokemon.moveThisTurnResult !== undefined || !this.queue.willMove(pokemon))) {\n\t\t\t\tpokemon.addVolatile('truant');\n\t\t\t}\n\t\t},\n\t\tonBeforeMovePriority: 9,\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (pokemon.removeVolatile('truant')) {\n\t\t\t\tthis.add('cant', pokemon, 'ability: Truant');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tpokemon.addVolatile('truant');\n\t\t},\n\t\tcondition: {},\n\t\tflags: {},\n\t\tname: \"Truant\",\n\t\trating: -1,\n\t\tnum: 54,\n\t},\n\tturboblaze: {\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Turboblaze');\n\t\t},\n\t\tonModifyMove(move) {\n\t\t\tmove.ignoreAbility = true;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Turboblaze\",\n\t\trating: 3,\n\t\tnum: 163,\n\t},\n\tunaware: {\n\t\tonAnyModifyBoost(boosts, pokemon) {\n\t\t\tconst unawareUser = this.effectState.target;\n\t\t\tif (unawareUser === pokemon) return;\n\t\t\tif (unawareUser === this.activePokemon && pokemon === this.activeTarget) {\n\t\t\t\tboosts['def'] = 0;\n\t\t\t\tboosts['spd'] = 0;\n\t\t\t\tboosts['evasion'] = 0;\n\t\t\t}\n\t\t\tif (pokemon === this.activePokemon && unawareUser === this.activeTarget) {\n\t\t\t\tboosts['atk'] = 0;\n\t\t\t\tboosts['def'] = 0;\n\t\t\t\tboosts['spa'] = 0;\n\t\t\t\tboosts['accuracy'] = 0;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Unaware\",\n\t\trating: 4,\n\t\tnum: 109,\n\t},\n\tunburden: {\n\t\tonAfterUseItem(item, pokemon) {\n\t\t\tif (pokemon !== this.effectState.target) return;\n\t\t\tpokemon.addVolatile('unburden');\n\t\t},\n\t\tonTakeItem(item, pokemon) {\n\t\t\tpokemon.addVolatile('unburden');\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tpokemon.removeVolatile('unburden');\n\t\t},\n\t\tcondition: {\n\t\t\tonModifySpe(spe, pokemon) {\n\t\t\t\tif (!pokemon.item && !pokemon.ignoringAbility()) {\n\t\t\t\t\treturn this.chainModify(2);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tflags: {},\n\t\tname: \"Unburden\",\n\t\trating: 3.5,\n\t\tnum: 84,\n\t},\n\tunnerve: {\n\t\tonSwitchInPriority: 1,\n\t\tonStart(pokemon) {\n\t\t\tif (this.effectState.unnerved) return;\n\t\t\tthis.add('-ability', pokemon, 'Unnerve');\n\t\t\tthis.effectState.unnerved = true;\n\t\t},\n\t\tonEnd() {\n\t\t\tthis.effectState.unnerved = false;\n\t\t},\n\t\tonFoeTryEatItem() {\n\t\t\treturn !this.effectState.unnerved;\n\t\t},\n\t\tflags: {},\n\t\tname: \"Unnerve\",\n\t\trating: 1,\n\t\tnum: 127,\n\t},\n\tunseenfist: {\n\t\tonModifyMove(move) {\n\t\t\tif (move.flags['contact']) delete move.flags['protect'];\n\t\t},\n\t\tflags: {},\n\t\tname: \"Unseen Fist\",\n\t\trating: 2,\n\t\tnum: 260,\n\t},\n\tvesselofruin: {\n\t\tonStart(pokemon) {\n\t\t\tif (this.suppressingAbility(pokemon)) return;\n\t\t\tthis.add('-ability', pokemon, 'Vessel of Ruin');\n\t\t},\n\t\tonAnyModifySpA(spa, source, target, move) {\n\t\t\tconst abilityHolder = this.effectState.target;\n\t\t\tif (source.hasAbility('Vessel of Ruin')) return;\n\t\t\tif (!move.ruinedSpA) move.ruinedSpA = abilityHolder;\n\t\t\tif (move.ruinedSpA !== abilityHolder) return;\n\t\t\tthis.debug('Vessel of Ruin SpA drop');\n\t\t\treturn this.chainModify(0.75);\n\t\t},\n\t\tflags: {},\n\t\tname: \"Vessel of Ruin\",\n\t\trating: 4.5,\n\t\tnum: 284,\n\t},\n\tvictorystar: {\n\t\tonAnyModifyAccuracyPriority: -1,\n\t\tonAnyModifyAccuracy(accuracy, target, source) {\n\t\t\tif (source.isAlly(this.effectState.target) && typeof accuracy === 'number') {\n\t\t\t\treturn this.chainModify([4506, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Victory Star\",\n\t\trating: 2,\n\t\tnum: 162,\n\t},\n\tvitalspirit: {\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'slp') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Vital Spirit');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (status.id !== 'slp') return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Vital Spirit');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tonTryAddVolatile(status, target) {\n\t\t\tif (status.id === 'yawn') {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Vital Spirit');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Vital Spirit\",\n\t\trating: 1.5,\n\t\tnum: 72,\n\t},\n\tvoltabsorb: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Electric') {\n\t\t\t\tif (!this.heal(target.baseMaxhp / 4)) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Volt Absorb');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Volt Absorb\",\n\t\trating: 3.5,\n\t\tnum: 10,\n\t},\n\twanderingspirit: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (source.getAbility().flags['failskillswap'] || target.volatiles['dynamax']) return;\n\n\t\t\tif (this.checkMoveMakesContact(move, source, target)) {\n\t\t\t\tconst targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, source.ability);\n\t\t\t\tif (!targetCanBeSet) return targetCanBeSet;\n\t\t\t\tconst sourceAbility = source.setAbility('wanderingspirit', target);\n\t\t\t\tif (!sourceAbility) return;\n\t\t\t\tif (target.isAlly(source)) {\n\t\t\t\t\tthis.add('-activate', target, 'Skill Swap', '', '', `[of] ${source}`);\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', target, 'ability: Wandering Spirit', this.dex.abilities.get(sourceAbility).name, 'Wandering Spirit', `[of] ${source}`);\n\t\t\t\t}\n\t\t\t\ttarget.setAbility(sourceAbility);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Wandering Spirit\",\n\t\trating: 2.5,\n\t\tnum: 254,\n\t},\n\twaterabsorb: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Water') {\n\t\t\t\tif (!this.heal(target.baseMaxhp / 4)) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Water Absorb');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Water Absorb\",\n\t\trating: 3.5,\n\t\tnum: 11,\n\t},\n\twaterbubble: {\n\t\tonSourceModifyAtkPriority: 5,\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonSourceModifySpAPriority: 5,\n\t\tonSourceModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Water') {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Water') {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'brn') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Water Bubble');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (status.id !== 'brn') return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Water Bubble');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Water Bubble\",\n\t\trating: 4.5,\n\t\tnum: 199,\n\t},\n\twatercompaction: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (move.type === 'Water') {\n\t\t\t\tthis.boost({ def: 2 });\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Water Compaction\",\n\t\trating: 1.5,\n\t\tnum: 195,\n\t},\n\twaterveil: {\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'brn') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Water Veil');\n\t\t\t\tpokemon.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonSetStatus(status, target, source, effect) {\n\t\t\tif (status.id !== 'brn') return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Water Veil');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Water Veil\",\n\t\trating: 2,\n\t\tnum: 41,\n\t},\n\tweakarmor: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (move.category === 'Physical') {\n\t\t\t\tthis.boost({ def: -1, spe: 2 }, target, target);\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Weak Armor\",\n\t\trating: 1,\n\t\tnum: 133,\n\t},\n\twellbakedbody: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Fire') {\n\t\t\t\tif (!this.boost({ def: 2 })) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Well-Baked Body');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Well-Baked Body\",\n\t\trating: 3.5,\n\t\tnum: 273,\n\t},\n\twhitesmoke: {\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (source && target === source) return;\n\t\t\tlet showMsg = false;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tif (boost[i]! < 0) {\n\t\t\t\t\tdelete boost[i];\n\t\t\t\t\tshowMsg = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (showMsg && !(effect as ActiveMove).secondaries && effect.id !== 'octolock') {\n\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"[from] ability: White Smoke\", `[of] ${target}`);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"White Smoke\",\n\t\trating: 2,\n\t\tnum: 73,\n\t},\n\twimpout: {\n\t\tonEmergencyExit(target) {\n\t\t\tif (!this.canSwitch(target.side) || target.forceSwitchFlag || target.switchFlag) return;\n\t\t\tfor (const side of this.sides) {\n\t\t\t\tfor (const active of side.active) {\n\t\t\t\t\tactive.switchFlag = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget.switchFlag = true;\n\t\t\tthis.add('-activate', target, 'ability: Wimp Out');\n\t\t},\n\t\tflags: {},\n\t\tname: \"Wimp Out\",\n\t\trating: 1,\n\t\tnum: 193,\n\t},\n\twindpower: {\n\t\tonDamagingHitOrder: 1,\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (move.flags['wind']) {\n\t\t\t\ttarget.addVolatile('charge');\n\t\t\t}\n\t\t},\n\t\tonAllySideConditionStart(target, source, sideCondition) {\n\t\t\tconst pokemon = this.effectState.target;\n\t\t\tif (sideCondition.id === 'tailwind') {\n\t\t\t\tpokemon.addVolatile('charge');\n\t\t\t}\n\t\t},\n\t\tflags: {},\n\t\tname: \"Wind Power\",\n\t\trating: 1,\n\t\tnum: 277,\n\t},\n\twindrider: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.side.sideConditions['tailwind']) {\n\t\t\t\tthis.boost({ atk: 1 }, pokemon, pokemon);\n\t\t\t}\n\t\t},\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.flags['wind']) {\n\t\t\t\tif (!this.boost({ atk: 1 }, target, target)) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Wind Rider');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonAllySideConditionStart(target, source, sideCondition) {\n\t\t\tconst pokemon = this.effectState.target;\n\t\t\tif (sideCondition.id === 'tailwind') {\n\t\t\t\tthis.boost({ atk: 1 }, pokemon, pokemon);\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Wind Rider\",\n\t\trating: 3.5,\n\t\t// We do not want Brambleghast to get Infiltrator in Randbats\n\t\tnum: 274,\n\t},\n\twonderguard: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target === source || move.category === 'Status' || move.type === '???' || move.id === 'struggle') return;\n\t\t\tif (move.id === 'skydrop' && !source.volatiles['skydrop']) return;\n\t\t\tthis.debug('Wonder Guard immunity: ' + move.id);\n\t\t\tif (target.runEffectiveness(move) <= 0) {\n\t\t\t\tif (move.smartTarget) {\n\t\t\t\t\tmove.smartTarget = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Wonder Guard');\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, failskillswap: 1, breakable: 1 },\n\t\tname: \"Wonder Guard\",\n\t\trating: 5,\n\t\tnum: 25,\n\t},\n\twonderskin: {\n\t\tonModifyAccuracyPriority: 10,\n\t\tonModifyAccuracy(accuracy, target, source, move) {\n\t\t\tif (move.category === 'Status' && typeof accuracy === 'number') {\n\t\t\t\tthis.debug('Wonder Skin - setting accuracy to 50');\n\t\t\t\treturn 50;\n\t\t\t}\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Wonder Skin\",\n\t\trating: 2,\n\t\tnum: 147,\n\t},\n\tzenmode: {\n\t\tonResidualOrder: 29,\n\t\tonResidual(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Darmanitan' || pokemon.transformed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (pokemon.hp <= pokemon.maxhp / 2 && !['Zen', 'Galar-Zen'].includes(pokemon.species.forme)) {\n\t\t\t\tpokemon.addVolatile('zenmode');\n\t\t\t} else if (pokemon.hp > pokemon.maxhp / 2 && ['Zen', 'Galar-Zen'].includes(pokemon.species.forme)) {\n\t\t\t\tpokemon.addVolatile('zenmode'); // in case of base Darmanitan-Zen\n\t\t\t\tpokemon.removeVolatile('zenmode');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tif (!pokemon.volatiles['zenmode'] || !pokemon.hp) return;\n\t\t\tpokemon.transformed = false;\n\t\t\tdelete pokemon.volatiles['zenmode'];\n\t\t\tif (pokemon.species.baseSpecies === 'Darmanitan' && pokemon.species.battleOnly) {\n\t\t\t\tpokemon.formeChange(pokemon.species.battleOnly as string, this.effect, false, '0', '[silent]');\n\t\t\t}\n\t\t},\n\t\tcondition: {\n\t\t\tonStart(pokemon) {\n\t\t\t\tif (!pokemon.species.name.includes('Galar')) {\n\t\t\t\t\tif (pokemon.species.id !== 'darmanitanzen') pokemon.formeChange('Darmanitan-Zen');\n\t\t\t\t} else {\n\t\t\t\t\tif (pokemon.species.id !== 'darmanitangalarzen') pokemon.formeChange('Darmanitan-Galar-Zen');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonEnd(pokemon) {\n\t\t\t\tif (['Zen', 'Galar-Zen'].includes(pokemon.species.forme)) {\n\t\t\t\t\tpokemon.formeChange(pokemon.species.battleOnly as string);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },\n\t\tname: \"Zen Mode\",\n\t\trating: 0,\n\t\tnum: 161,\n\t},\n\tzerotohero: {\n\t\tonSwitchOut(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Palafin') return;\n\t\t\tif (pokemon.species.forme !== 'Hero') {\n\t\t\t\tpokemon.formeChange('Palafin-Hero', this.effect, true);\n\t\t\t\tpokemon.regressionForme = false;\n\t\t\t}\n\t\t},\n\t\tonSwitchIn(pokemon) {\n\t\t\tif (pokemon.baseSpecies.baseSpecies !== 'Palafin') return;\n\t\t\tif (!this.effectState.heroMessageDisplayed && pokemon.species.forme === 'Hero') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Zero to Hero');\n\t\t\t\tthis.effectState.heroMessageDisplayed = true;\n\t\t\t}\n\t\t},\n\t\tflags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1, notransform: 1 },\n\t\tname: \"Zero to Hero\",\n\t\trating: 5,\n\t\tnum: 278,\n\t},\n\n\t// CAP\n\tmountaineer: {\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect && effect.id === 'stealthrock') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tonTryHit(target, source, move) {\n\t\t\tif (move.type === 'Rock' && !target.activeTurns) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Mountaineer');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tisNonstandard: \"CAP\",\n\t\tflags: { breakable: 1 },\n\t\tname: \"Mountaineer\",\n\t\trating: 3,\n\t\tnum: -2,\n\t},\n\trebound: {\n\t\tisNonstandard: \"CAP\",\n\t\tonTryHitPriority: 1,\n\t\tonTryHit(target, source, move) {\n\t\t\tif (this.effectState.target.activeTurns) return;\n\n\t\t\tif (target === source || move.hasBounced || !move.flags['reflectable']) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newMove = this.dex.getActiveMove(move.id);\n\t\t\tnewMove.hasBounced = true;\n\t\t\tthis.actions.useMove(newMove, target, { target: source });\n\t\t\treturn null;\n\t\t},\n\t\tonAllyTryHitSide(target, source, move) {\n\t\t\tif (this.effectState.target.activeTurns) return;\n\n\t\t\tif (target.isAlly(source) || move.hasBounced || !move.flags['reflectable']) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newMove = this.dex.getActiveMove(move.id);\n\t\t\tnewMove.hasBounced = true;\n\t\t\tthis.actions.useMove(newMove, this.effectState.target, { target: source });\n\t\t\treturn null;\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t},\n\t\tflags: { breakable: 1 },\n\t\tname: \"Rebound\",\n\t\trating: 3,\n\t\tnum: -3,\n\t},\n\tpersistent: {\n\t\tisNonstandard: \"CAP\",\n\t\t// implemented in the corresponding move\n\t\tflags: {},\n\t\tname: \"Persistent\",\n\t\trating: 3,\n\t\tnum: -4,\n\t},\n};\n"], "mappings": "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", "names": ["target"] }