{ "version": 3, "sources": ["../../../../../data/mods/vaporemons/abilities.ts"], "sourcesContent": ["export const Abilities: {[k: string]: ModdedAbilityData} = {\n\tzerotohero: {\n\t\tonSourceAfterFaint(length, target, source, effect) {\n\t\t\tif (effect?.effectType !== 'Move') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (source.species.id === 'palafin' && source.hp && !source.transformed && source.side.foe.pokemonLeft) {\n\t\t\t\tthis.add('-activate', source, 'ability: Zero to Hero');\n\t\t\t\tsource.formeChange('Palafin-Hero', this.effect, true);\n\t\t\t}\n\t\t},\n\t\tflags: {cantsuppress: 1},\n\t\tname: \"Zero to Hero\",\n\t\tshortDesc: \"If this Pokemon is a Palafin in Zero Form, KOing a foe has it change to Hero Form.\",\n\t\trating: 5,\n\t\tnum: 278,\n\t},\n\tovercoat: {\n\t\tinherit: true,\n\t\tshortDesc: \"This Pokemon is immune to sandstorm damage, hazards, and powder moves.\",\n\t\tname: \"Overcoat\",\n\t},\n\tcutecharm: {\n\t\tonSourceModifyAtkPriority: 6,\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (defender.types.includes(move.type)) {\n\t\t\t\tthis.debug('Cute Charm 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 (defender.types.includes(move.type)) {\n\t\t\t\tthis.debug('Cute Charm 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: \"Cute Charm\",\n\t\tshortDesc: \"This Pokemon takes 50% damage from moves of its own type.\",\n\t\trating: 3,\n\t\tnum: 56,\n\t},\n\thealer: {\n\t\tname: \"Healer\",\n\t onFaint(pokemon) {\n\t\t\tpokemon.side.addSlotCondition(pokemon, 'healer');\n\t },\n\t condition: {\n\t\t\tonSwap(target) {\n\t\t\t\t if (!target.fainted) {\n\t\t\t\t\t const source = this.effectState.source;\n\t\t\t\t\t const damage = this.heal(target.baseMaxhp / 2, target, target);\n\t\t\t\t\t if (damage) this.add('-heal', target, target.getHealth, '[from] ability: Healer', '[of] ' + source);\n\t\t\t\t\t target.side.removeSlotCondition(target, 'healer');\n\t\t\t\t }\n\t\t\t},\n\t },\n\t\trating: 3,\n\t\tshortDesc: \"On faint, the next Pokemon sent out heals 50% of its max HP.\",\n\t\tnum: 131,\n\t},\n\tgalewings: {\n\t\tonModifyPriority(priority, pokemon, target, move) {\n\t\t\tfor (const poke of this.getAllActive()) {\n\t\t\t\tif (poke.hasAbility('counteract') && poke.side.id !== pokemon.side.id && !poke.abilityState.ending) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (move?.type === 'Flying' && pokemon.hp >= pokemon.maxhp / 2) return priority + 1;\n\t\t},\n\t\tname: \"Gale Wings\",\n\t\tshortDesc: \"If this Pokemon has 50% of its max HP or more, its Flying-type moves have their priority increased by 1.\",\n\t\trating: 3,\n\t\tnum: 177,\n\t},\n\tgrasspelt: {\n\t\tonStart(pokemon) {\n\t\t\tif (!this.field.setTerrain('grassyterrain') && this.field.isTerrain('grassyterrain')) {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Grass Pelt');\n\t\t\t}\n\t\t},\n\t\tonModifyDefPriority: 5,\n\t\tonModifyDef(def) {\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\tthis.debug('Cloud Nine prevents Defense increase');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.field.isTerrain('grassyterrain')) {\n\t\t\t\tthis.debug('Grass Pelt boost');\n\t\t\t\treturn this.chainModify([5461, 4096]);\n\t\t\t}\n\t\t},\n\t\tflags: {breakable: 1},\n\t\tname: \"Grass Pelt\",\n\t\tshortDesc: \"On switch-in, summons Grassy Terrain. During Grassy Terrain, Def is 1.3333x.\",\n\t\trating: 4.5,\n\t\tnum: 179,\n\t},\n\tmusclememory: {\n\t\tonStart(pokemon) {\n\t\t\tpokemon.addVolatile('musclememory');\n\t\t},\n\t\tcondition: {\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.effectState.lastMove = '';\n\t\t\t\tthis.effectState.numConsecutive = 0;\n\t\t\t},\n\t\t\tonTryMovePriority: -2,\n\t\t\tonTryMove(pokemon, target, move) {\n\t\t\t\tif (!pokemon.hasAbility('musclememory')) {\n\t\t\t\t\tpokemon.removeVolatile('musclememory');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.effectState.lastMove === move.id && pokemon.moveLastTurnResult) {\n\t\t\t\t\tthis.effectState.numConsecutive++;\n\t\t\t\t} else if (pokemon.volatiles['twoturnmove']) {\n\t\t\t\t\tif (this.effectState.lastMove !== move.id) {\n\t\t\t\t\t\tthis.effectState.numConsecutive = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.effectState.numConsecutive++;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.effectState.numConsecutive = 0;\n\t\t\t\t}\n\t\t\t\tthis.effectState.lastMove = move.id;\n\t\t\t},\n\t\t\tonModifyDamage(damage, source, target, move) {\n\t\t\t\tconst dmgMod = [4096, 4915, 5734, 6553, 7372, 8192];\n\t\t\t\tconst numConsecutive = this.effectState.numConsecutive > 5 ? 5 : this.effectState.numConsecutive;\n\t\t\t\tthis.debug(`Current musclememory boost: ${dmgMod[numConsecutive]}/4096`);\n\t\t\t\treturn this.chainModify([dmgMod[numConsecutive], 4096]);\n\t\t\t},\n\t\t},\n\t\tname: \"Muscle Memory\",\n\t\tshortDesc: \"Damage of moves used on consecutive turns is increased. Max 2x after 5 turns.\",\n\t\trating: 4,\n\t},\n\tdeathaura: {\n\t\tname: \"Death Aura\",\n\t\tshortDesc: \"While this Pokemon is active, no Pokemon can heal or use draining moves.\",\n\t\tonStart(source) {\n\t\t\tlet activated = false;\n\t\t\tfor (const pokemon of source.foes()) {\n\t\t\t\tif (!activated) {\n\t\t\t\t\tthis.add('-ability', source, 'Death Aura');\n\t\t\t\t\tactivated = true;\n\t\t\t\t}\n\t\t\t\tif (!pokemon.volatiles['healblock']) {\n\t\t\t\t\tpokemon.addVolatile('healblock');\n\t\t\t\t}\n\t\t\t\tif (!source.volatiles['healblock']) {\n\t\t\t\t\tsource.addVolatile('healblock');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAnySwitchIn(pokemon) {\n\t\t\tconst source = this.effectState.target;\n\t\t\tif (pokemon === source) return;\n\t\t\tfor (const target of source.foes()) {\n\t\t\t\tif (!target.volatiles['healblock']) {\n\t\t\t\t\ttarget.addVolatile('healblock');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tfor (const target of pokemon.foes()) {\n\t\t\t\ttarget.removeVolatile('healblock');\n\t\t\t}\n\t\t},\n\t\trating: 4,\n\t},\n\tseedsower: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (!source.hasType('Grass')) {\n\t\t\t\tthis.add('-activate', target, 'ability: Seed Sower');\n\t\t\t\tsource.addVolatile('leechseed', this.effectState.target);\n\t\t\t}\n\t\t},\n\t\tname: \"Seed Sower\",\n\t\tshortDesc: \"When this Pokemon is hit by an attack, the effect of Leech Seed begins.\",\n\t\trating: 3,\n\t\tnum: 269,\n\t},\n\tsandspit: {\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tthis.add('-activate', target, 'ability: Sand Spit');\n\t\t\tsource.addVolatile('sandspit', this.effectState.target);\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(target, source) {\n\t\t\t\tif (source?.hasItem('gripclaw')) return 8;\n\t\t\t\treturn this.random(5, 7);\n\t\t\t},\n\t\t\tonStart(pokemon, source) {\n\t\t\t\tthis.add('-activate', pokemon, 'move: ' + this.effectState.sourceEffect, '[of] ' + source);\n\t\t\t\tthis.effectState.boundDivisor = source.hasItem('bindingband') ? 8 : 8;\n\t\t\t},\n\t\t\tonResidualOrder: 13,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tconst source = this.effectState.source;\n\t\t\t\t// G-Max Centiferno and G-Max Sandblast continue even after the user leaves the field\n\t\t\t\tconst gmaxEffect = ['gmaxcentiferno', 'gmaxsandblast'].includes(this.effectState.sourceEffect.id);\n\t\t\t\tif (source && (!source.isActive || source.hp <= 0) && !gmaxEffect) {\n\t\t\t\t\tdelete pokemon.volatiles['sandspit'];\n\t\t\t\t\tthis.add('-end', pokemon, this.effectState.sourceEffect, '[sandspit]', '[silent]');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.add('-anim', pokemon, \"Sand Tomb\", pokemon);\n\t\t\t\tthis.damage(pokemon.baseMaxhp / this.effectState.boundDivisor);\n\t\t\t},\n\t\t\tonEnd(pokemon) {\n\t\t\t\tthis.add('-end', pokemon, this.effectState.sourceEffect, '[sandspit]');\n\t\t\t},\n\t\t\tonTrapPokemon(pokemon) {\n\t\t\t\tconst gmaxEffect = ['gmaxcentiferno', 'gmaxsandblast'].includes(this.effectState.sourceEffect.id);\n\t\t\t\tif (this.effectState.source?.isActive || gmaxEffect) pokemon.tryTrap();\n\t\t\t},\n\t\t},\n\t\tname: \"Sand Spit\",\n\t\tshortDesc: \"When this Pokemon is hit by an attack, the effect of Sand Tomb begins.\",\n\t\trating: 4,\n\t\tnum: 245,\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\tthis.debug('Sand Force boost');\n\t\t\t\treturn this.chainModify([0x14CD, 0x1000]);\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\tname: \"Sand Force\",\n\t\trating: 2,\n\t\tshortDesc: \"This Pokemon's moves deal 1.3x damage in a sandstorm; Sand immunity.\",\n\t\tnum: 159,\n\t},\n\tcloudnine: {\n\t\tonSwitchIn(pokemon) {\n\t\t\tthis.effectState.switchingIn = true;\n\t\t},\n\t\tonStart(pokemon) {\n\t\t\tif (!this.effectState.switchingIn) return;\n\t\t\tthis.add('-ability', pokemon, 'Cloud Nine');\n\t\t\tthis.effectState.switchingIn = false;\n\t\t\tif (this.field.terrain) {\n\t\t\t\tthis.add('-message', `${pokemon.name} suppresses the effects of the terrain!`);\n\t\t\t\tlet activated = false;\n\t\t\t\tfor (const other of pokemon.foes()) {\n\t\t\t\t\tif (!activated) {\n\t\t\t\t\t\tthis.add('-ability', pokemon, 'Cloud Nine');\n\t\t\t\t\t}\n\t\t\t\t\tactivated = true;\n\t\t\t\t\tif (!other.volatiles['cloudnine']) {\n\t\t\t\t\t\tother.addVolatile('cloudnine');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonTerrainChange() {\n\t\t\tconst pokemon = this.effectState.target;\n\t\t\tthis.add('-ability', pokemon, 'Cloud Nine');\n\t\t\tthis.add('-message', `${pokemon.name} suppresses the effects of the terrain!`);\n\t\t\tif (this.field.terrain) {\n\t\t\t\tlet activated = false;\n\t\t\t\tfor (const other of pokemon.foes()) {\n\t\t\t\t\tif (!activated) {\n\t\t\t\t\t\tthis.add('-ability', pokemon, 'Cloud Nine');\n\t\t\t\t\t}\n\t\t\t\t\tactivated = true;\n\t\t\t\t\tif (!other.volatiles['cloudnine']) {\n\t\t\t\t\t\tother.addVolatile('cloudnine');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAnySwitchIn(pokemon) {\n\t\t\tconst source = this.effectState.target;\n\t\t\tif (pokemon === source) return;\n\t\t\tfor (const target of source.foes()) {\n\t\t\t\tif (!target.volatiles['cloudnine']) {\n\t\t\t\t\ttarget.addVolatile('cloudnine');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonEnd(source) {\n\t\t\tif (this.field.terrain) {\n\t\t\t\tconst cnsource = this.effectState.target;\n\t\t\t\tfor (const target of cnsource.foes()) {\n\t\t\t\t\ttarget.removeVolatile('cloudnine');\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource.abilityState.ending = true;\n\t\t\tfor (const pokemon of this.getAllActive()) {\n\t\t\t\tif (pokemon.ignoringItem()) continue;\n\t\t\t\tif (\n\t\t\t\t\t(pokemon.hasItem('psychicseed') && this.field.isTerrain('psychicterrain')) ||\n\t\t\t\t\t(pokemon.hasItem('electricseed') && this.field.isTerrain('electricterrain')) ||\n\t\t\t\t\t(pokemon.hasItem('grassyseed') && this.field.isTerrain('grassyterrain')) ||\n\t\t\t\t\t(pokemon.hasItem('mistyseed') && this.field.isTerrain('mistyterrain'))\n\t\t\t\t) {\n\t\t\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\t\t\tif (target.hasAbility('cloudnine') && target !== source) {\n\t\t\t\t\t\t\tthis.debug('Cloud Nine prevents Seed use');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpokemon.useItem();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcondition: {},\n\t\tsuppressWeather: true,\n\t\tname: \"Cloud Nine\",\n\t\tshortDesc: \"While this Pokemon is active, the effects of weathers and terrains are disabled.\",\n\t\trating: 2,\n\t\tnum: 13,\n\t},\n\trunedrive: {\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 (pokemon.transformed) return;\n\t\t\tif (this.field.isTerrain('mistyterrain')) {\n\t\t\t\tpokemon.addVolatile('runedrive');\n\t\t\t} else if (!pokemon.volatiles['runedrive']?.fromBooster) {\n\t\t\t\tpokemon.removeVolatile('runedrive');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['runedrive'];\n\t\t\tthis.add('-end', pokemon, 'Rune 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?.id === 'boosterenergy') {\n\t\t\t\t\tthis.effectState.fromBooster = true;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Rune Drive', '[fromitem]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Rune 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, 'runedrive' + this.effectState.bestStat);\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || source.volatiles['cloudnine'] || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Rune 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, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || target.volatiles['cloudnine'] || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Rune 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(relayVar, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || source.volatiles['cloudnine'] || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Rune 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(relayVar, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || target.volatiles['cloudnine'] || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Rune 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.volatiles['cloudnine'] || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Rune 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, 'Rune Drive');\n\t\t\t},\n\t\t},\n\t\tname: \"Rune Drive\",\n\t\trating: 3,\n\t\tshortDesc: \"Misty Terrain active or Booster Energy used: highest stat is 1.3x, or 1.5x if Speed.\",\n\t},\n\tphotondrive: {\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 (pokemon.transformed) return;\n\t\t\tif (this.field.isTerrain('grassyterrain')) {\n\t\t\t\tpokemon.addVolatile('photondrive');\n\t\t\t} else if (!pokemon.volatiles['photondrive']?.fromBooster) {\n\t\t\t\tpokemon.removeVolatile('photondrive');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['photondrive'];\n\t\t\tthis.add('-end', pokemon, 'Photon 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?.id === 'boosterenergy') {\n\t\t\t\t\tthis.effectState.fromBooster = true;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Photon Drive', '[fromitem]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Photon 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, 'photondrive' + this.effectState.bestStat);\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || source.volatiles['cloudnine'] || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Photon 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, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || target.volatiles['cloudnine'] || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Photon 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(relayVar, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || source.volatiles['cloudnine'] || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Photon 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(relayVar, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || target.volatiles['cloudnine'] || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Photon 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.volatiles['cloudnine'] || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Photon 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, 'Photon Drive');\n\t\t\t},\n\t\t},\n\t\tname: \"Photon Drive\",\n\t\trating: 3,\n\t\tshortDesc: \"Grassy Terrain active or Booster Energy used: highest stat is 1.3x, or 1.5x if Speed.\",\n\t},\n\tneurondrive: {\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 (pokemon.transformed) return;\n\t\t\tif (this.field.isTerrain('psychicterrain')) {\n\t\t\t\tpokemon.addVolatile('neurondrive');\n\t\t\t} else if (!pokemon.volatiles['neurondrive']?.fromBooster) {\n\t\t\t\tpokemon.removeVolatile('neurondrive');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['neurondrive'];\n\t\t\tthis.add('-end', pokemon, 'Neuron 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?.id === 'boosterenergy') {\n\t\t\t\t\tthis.effectState.fromBooster = true;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Neuron Drive', '[fromitem]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Neuron 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, 'neurondrive' + this.effectState.bestStat);\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || source.volatiles['cloudnine'] || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Neuron 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, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || target.volatiles['cloudnine'] || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Neuron 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(relayVar, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || source.volatiles['cloudnine'] || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Neuron 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(relayVar, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || target.volatiles['cloudnine'] || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Neuron 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.volatiles['cloudnine'] || pokemon.ignoringAbility()) return;\n\t\t\t\tthis.debug('Neuron 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, 'Neuron Drive');\n\t\t\t},\n\t\t},\n\t\tname: \"Neuron Drive\",\n\t\trating: 3,\n\t\tshortDesc: \"Psychic Terrain active or Booster Energy used: highest stat is 1.3x, or 1.5x if Speed.\",\n\t},\n\tprotosmosis: {\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.transformed) return;\n\t\t\t// Protosmosis is not affected by Utility Umbrella\n\t\t\tif (this.field.isWeather('raindance')) {\n\t\t\t\tpokemon.addVolatile('protosmosis');\n\t\t\t} else if (!pokemon.volatiles['protosmosis']?.fromBooster) {\n\t\t\t\tpokemon.removeVolatile('protosmosis');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['protosmosis'];\n\t\t\tthis.add('-end', pokemon, 'Protosmosis', '[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?.id === 'boosterenergy') {\n\t\t\t\t\tthis.effectState.fromBooster = true;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Protosmosis', '[fromitem]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Protosmosis');\n\t\t\t\t}\n\t\t\t\tthis.effectState.bestStat = pokemon.getBestStat(false, true);\n\t\t\t\tthis.add('-start', pokemon, 'protosmosis' + this.effectState.bestStat);\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosmosis 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, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosmosis def boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpAPriority: 5,\n\t\t\tonModifySpA(relayVar, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosmosis spa boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpDPriority: 6,\n\t\t\tonModifySpD(relayVar, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protosmosis 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('Protosmosis 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, 'Protosmosis');\n\t\t\t},\n\t\t},\n\t\tname: \"Protosmosis\",\n\t\trating: 3,\n\t\tshortDesc: \"Rain active or Booster Energy used: highest stat is 1.3x, or 1.5x if Speed.\",\n\t},\n\tprotocrysalis: {\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.transformed) return;\n\t\t\t// Protocrysalis is not affected by Utility Umbrella\n\t\t\tif (this.field.isWeather('sandstorm')) {\n\t\t\t\tpokemon.addVolatile('protocrysalis');\n\t\t\t} else if (!pokemon.volatiles['protocrysalis']?.fromBooster) {\n\t\t\t\tpokemon.removeVolatile('protocrysalis');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['protocrysalis'];\n\t\t\tthis.add('-end', pokemon, 'Protocrysalis', '[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?.id === 'boosterenergy') {\n\t\t\t\t\tthis.effectState.fromBooster = true;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Protocrysalis', '[fromitem]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Protocrysalis');\n\t\t\t\t}\n\t\t\t\tthis.effectState.bestStat = pokemon.getBestStat(false, true);\n\t\t\t\tthis.add('-start', pokemon, 'protocrysalis' + this.effectState.bestStat);\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protocrysalis 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, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protocrysalis def boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpAPriority: 5,\n\t\t\tonModifySpA(relayVar, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protocrysalis spa boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpDPriority: 6,\n\t\t\tonModifySpD(relayVar, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protocrysalis 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('Protocrysalis 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, 'Protocrysalis');\n\t\t\t},\n\t\t},\n\t\tname: \"Protocrysalis\",\n\t\trating: 3,\n\t\tshortDesc: \"Sandstorm active or Booster Energy used: highest stat is 1.3x, or 1.5x if Speed.\",\n\t},\n\tprotostasis: {\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.transformed) return;\n\t\t\t// Protostasis is not affected by Utility Umbrella\n\t\t\tif (this.field.isWeather('snow')) {\n\t\t\t\tpokemon.addVolatile('protostasis');\n\t\t\t} else if (!pokemon.volatiles['protostasis']?.fromBooster) {\n\t\t\t\tpokemon.removeVolatile('protostasis');\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tdelete pokemon.volatiles['protostasis'];\n\t\t\tthis.add('-end', pokemon, 'Protostasis', '[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?.id === 'boosterenergy') {\n\t\t\t\t\tthis.effectState.fromBooster = true;\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Protostasis', '[fromitem]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', pokemon, 'ability: Protostasis');\n\t\t\t\t}\n\t\t\t\tthis.effectState.bestStat = pokemon.getBestStat(false, true);\n\t\t\t\tthis.add('-start', pokemon, 'protostasis' + this.effectState.bestStat);\n\t\t\t},\n\t\t\tonModifyAtkPriority: 5,\n\t\t\tonModifyAtk(atk, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protostasis 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, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protostasis def boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpAPriority: 5,\n\t\t\tonModifySpA(relayVar, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || source.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protostasis spa boost');\n\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t},\n\t\t\tonModifySpDPriority: 6,\n\t\t\tonModifySpD(relayVar, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || target.ignoringAbility()) return;\n\t\t\t\tthis.debug('Protostasis 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('Protostasis 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, 'Protostasis');\n\t\t\t},\n\t\t},\n\t\tname: \"Protostasis\",\n\t\trating: 3,\n\t\tshortDesc: \"Snow active or Booster Energy used: highest stat is 1.3x, or 1.5x if Speed.\",\n\t},\n\tcounteract: {\n\t\tname: \"Counteract\",\n\t\t// new Ability suppression implemented in scripts.ts\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Counteract');\n\t\t\tthis.add('-message', `${pokemon.name}'s is thinking of how to counter the opponent's strategy!`);\n\t\t},\n\t\t// onModifyPriority implemented in relevant abilities\n\t\tonFoeBeforeMovePriority: 13,\n\t\tonFoeBeforeMove(attacker, defender, move) {\n\t\t\tattacker.addVolatile('counteract');\n\t\t},\n\t\tcondition: {\n\t\t\tonAfterMove(pokemon) {\n\t\t\t\tpokemon.removeVolatile('counteract');\n\t\t\t},\n\t\t},\n\t\tdesc: \"While this Pokemon is active, opposing Pokemon's moves and their effects ignore its own Ability. Does not affect the As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, or Zen Mode Abilities.\",\n\t\tshortDesc: \"While this Pokemon is active, opposing Pokemon's Ability has no effect when it uses moves.\",\n\t\trating: 4,\n\t\tgen: 8,\n\t},\n\tsunblock: {\n\t\tname: \"Sunblock\",\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect.effectType !== 'Move' && this.field.isWeather('sunnyday')) {\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\tonModifySecondaries(secondaries) {\n\t\t\tif (this.field.isWeather('sunnyday')) {\n\t\t\t\tthis.debug('Sunblock prevent secondary');\n\t\t\t\treturn secondaries.filter(effect => !!(effect.self || effect.dustproof));\n\t\t\t}\n\t\t},\n\t\tshortDesc: \"In Sun: Immune to indirect damage and secondary effects.\",\n\t\tgen: 8,\n\t},\n\tsandveil: {\n\t\tname: \"Sand Veil\",\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect.effectType !== 'Move' && this.field.isWeather('sandstorm')) {\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\tonModifySecondaries(secondaries) {\n\t\t\tif (this.field.isWeather('sandstorm')) {\n\t\t\t\tthis.debug('Snow Cloak prevent secondary');\n\t\t\t\treturn secondaries.filter(effect => !!(effect.self || effect.dustproof));\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\tshortDesc: \"In Sandstorm: Immune to indirect damage and secondary effects.\",\n\t\trating: 3,\n\t\tnum: 8,\n\t},\n\tsnowcloak: {\n\t\tname: \"Snow Cloak\",\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect.effectType !== 'Move' && this.field.isWeather(['hail', 'snow'])) {\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\tonModifySecondaries(secondaries) {\n\t\t\tif (this.field.isWeather(['hail', 'snow'])) {\n\t\t\t\tthis.debug('Snow Cloak prevent secondary');\n\t\t\t\treturn secondaries.filter(effect => !!(effect.self || effect.dustproof));\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\tshortDesc: \"In Snow: Immune to indirect damage and secondary effects.\",\n\t\trating: 3,\n\t\tnum: 81,\n\t},\n\toutclass: {\n\t\tonSourceHit(target, source, move) {\n\t\t\tif (!move || !target || source.types[1] || source.volatiles['outclass'] || target.hasItem('terashard')) return;\n\t\t\tconst targetType = target.types[0];\n\t\t\tif (target !== source && move.category !== 'Status' &&\n\t\t\t\t !source.hasType(targetType) && source.addType(targetType) && targetType !== '???') {\n\t\t\t\ttarget.setType(target.getTypes(true).map(type => type === targetType ? \"???\" : type));\n\t\t\t\tthis.add('-start', target, 'typechange', target.types.join('/'));\n\t\t\t\tthis.add('-start', source, 'typeadd', targetType, '[from] ability: Outclass');\n\t\t\t\tsource.addVolatile('outclass');\n\t\t\t}\n\t\t},\n\t\tcondition: {},\n\t\tname: \"Outclass\",\n\t\tshortDesc: \"If this Pokemon has one type, it steals the primary typing off a Pokemon it hits with an attack.\",\n\t\trating: 4,\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(2);\n\t\t\t}\n\t\t},\n\t\tonSourceModifyAtkPriority: 5,\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Electric') {\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 === 'Electric') {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonUpdate(pokemon) {\n\t\t\tif (pokemon.status === 'par') {\n\t\t\t\tthis.add('-activate', pokemon, 'ability: Steely 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 !== 'par') return;\n\t\t\tif ((effect as Move)?.status) {\n\t\t\t\tthis.add('-immune', target, '[from] ability: Steely Spirit');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tflags: {breakable: 1},\n\t\tname: \"Steely Spirit\",\n\t\trating: 3.5,\n\t\tshortDesc: \"This Pokemon's Steel power is 2x; it can't be paralyzed; Electric power against it is halved.\",\n\t\tnum: 252,\n\t},\n\tsheerheart: {\n\t\tonBasePowerPriority: 21,\n\t\tonBasePower(basePower, pokemon, target, move) {\n\t\t\tif (move.category === 'Special') return this.chainModify([5325, 4096]);\n\t\t},\n\t\tonTryBoost(boost, target, source, effect) {\n\t\t\tif (boost.spa) {\n\t\t\t\tdelete boost.spa;\n\t\t\t\tif (!(effect as ActiveMove).secondaries) {\n\t\t\t\t\tthis.add(\"-fail\", target, \"unboost\", \"Special Attack\", \"[from] ability: Sheer Heart\", \"[of] \" + target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflags: {breakable: 1},\n\t\tname: \"Sheer Heart\",\n\t\tshortDesc: \"Special attacks have 1.3x power; stat changes to the Special Attack stat have no effect.\",\n\t},\n\tbattlespines: {\n\t\tonAfterMove(target, source, move) {\n\t\t\tif (target !== source && move.category !== 'Status' && move.totalDamage) {\n\t\t\t\tthis.damage(source.baseMaxhp / 8, source, target);\n\t\t\t}\n\t\t},\n\t\tname: \"Battle Spines\",\n\t\tshortDesc: \"This Pokemon\u2019s attacks do an additional 1/8 of the target\u2019s max HP in damage.\",\n\t},\n\tsmelt: {\n\t\tname: \"Smelt\",\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Smelt');\n\t\t\tthis.add('-message', `${pokemon.name}'s heat turns rocks into magma!`);\n\t\t},\n\t\tonFoeBeforeMovePriority: 13,\n\t\tonFoeBeforeMove(attacker, defender, move) {\n\t\t\tattacker.addVolatile('smelt');\n\t\t},\n\t\tcondition: {\n\t\t\tonModifyTypePriority: -1,\n\t\t\tonModifyType(move, pokemon) {\n\t\t\t\tif (move.type === 'Rock') {\n\t\t\t\t\tmove.type = 'Fire';\n\t\t\t\t}\n\t\t\t},\n\t\t\tonAfterMove(pokemon) {\n\t\t\t\tpokemon.removeVolatile('smelt');\n\t\t\t},\n\t\t},\n\t\tshortDesc: \"Rock moves used against this Pokemon become Fire-type (includes Stealth Rock).\",\n\t\trating: 4,\n\t},\n\tcolorchange: {\n\t\tonTryHitPriority: 1,\n\t\tonTryHit(target, source, move) {\n\t\t\tconst type = move.type;\n\t\t\tif (\n\t\t\t\ttarget.isActive && move.effectType === 'Move' && target !== source &&\n\t\t\t\ttype !== '???' && !target.hasItem('terashard')\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\tname: \"Color Change\",\n\t\tshortDesc: \"This Pokemon's type changes to the type of a move it's about to be hit by, unless it has the type.\",\n\t\trating: 0,\n\t\tnum: 16,\n\t},\n\tgreeneyed: {\n\t\tname: \"Green-Eyed\",\n\t\tonStart(source) {\n\t\t\tthis.add('-ability', source, 'Green-Eyed');\n\t\t\tsource.addVolatile('snatch');\n\t\t},\n\t\tshortDesc: \"On switch-in, if the foe uses a Snatchable move, this Pokemon uses it instead.\",\n\t\trating: 3,\n\t},\n\tmudwash: {\n\t\tname: \"Mud Wash\",\n\t\tonStart(source) {\n\t\t\tthis.actions.useMove(\"Mud Sport\", source);\n\t\t\tthis.actions.useMove(\"Water Sport\", source);\n\t\t\tthis.add('-message', `${source.name}'s splashed around in the mud!`);\n\t\t},\n\t\tonModifyMove(move, pokemon) {\n\t\t\tif (['muddywater', 'mudshot', 'mudbomb', 'mudslap'].includes(move.id)) {\n\t\t\t\tdelete move.secondaries;\n\t\t\t\tdelete move.self;\n\t\t\t}\n\t\t},\n\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\tif (['muddywater', 'mudshot', 'mudbomb', 'mudslap'].includes(move.id)) {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tshortDesc: \"On switch-in, sets Mud Sport and Water Sport. This Pokemon's mud moves deal double damage but lose their secondary effects.\",\n\t\trating: 5,\n\t},\n\texoskeleton: {\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Exoskeleton');\n\t\t\tthis.add('-message', `${pokemon.name} sports a tough exoskeleton!`);\n\t\t},\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.hasType('Bug')) {\n\t\t\t\tif (['Rock', 'Fire', 'Flying'].includes(move.type)) {\n\t\t\t\t\tthis.debug('Exoskeleton Bug neutralize');\n\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (['Fighting', 'Ground', 'Grass'].includes(move.type)) {\n\t\t\t\t\tthis.debug('Exoskeleton non-Bug neutralize');\n\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect && effect.id === 'stealthrock' && target.hasType('Bug')) {\n\t\t\t\treturn damage / 2;\n\t\t\t}\n\t\t},\n\t\tflags: {breakable: 1},\n\t\tname: \"Exoskeleton\",\n\t\trating: 4,\n\t\tshortDesc: \"(Mostly functional) If Bug: no Bug weaknesses. If non-Bug: +Bug resistances.\",\n\t},\n\tbluntforce: {\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\tonModifyDamage(damage, source, target, move) {\n\t\t\tif (move && target.getMoveHitData(move).typeMod === 1) {\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t} else if (move && target.getMoveHitData(move).typeMod > 1) {\n\t\t\t\treturn this.chainModify(0.25);\n\t\t\t}\n\t\t},\n\t\tname: \"Blunt Force\",\n\t\trating: 3.5,\n\t\tshortDesc: \"(Mostly functional) This Pokemon's physical moves have 1.5x power but can't be super effective.\",\n\t},\n\twaterveil: {\n\t\tonStart(source) {\n\t\t\tthis.actions.useMove(\"Aqua Ring\", source);\n\t\t},\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\tshortDesc: \"This Pokemon uses Aqua Ring on switch-in. This Pokemon can't be burned.\",\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\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (move.secondaries) {\n\t\t\t\tthis.debug('Shield Dust neutralize');\n\t\t\t\treturn this.chainModify(0.67);\n\t\t\t}\n\t\t},\n\t\tflags: {breakable: 1},\n\t\tname: \"Shield Dust\",\n\t\trating: 4,\n\t\tnum: 19,\n\t\tshortDesc: \"Moves with secondary effects against user: 0.67x power, secondary effects cannot activate.\",\n\t},\n\tblaze: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Blaze low HP boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t} else if (move.type === 'Fire') {\n\t\t\t\tthis.debug('Blaze boost');\n\t\t\t\treturn this.chainModify(1.2);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Blaze low HP boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t} else if (move.type === 'Fire') {\n\t\t\t\tthis.debug('Blaze boost');\n\t\t\t\treturn this.chainModify(1.2);\n\t\t\t}\n\t\t},\n\t\tname: \"Blaze\",\n\t\trating: 2,\n\t\tnum: 66,\n\t\tshortDesc: \"1.2x Power on Fire attacks. At 1/3 or less HP, all of this Pokemon's moves deal 1.5x damage.\",\n\t},\n\ttorrent: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Torrent low HP boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t} else if (move.type === 'Water') {\n\t\t\t\tthis.debug('Torrent boost');\n\t\t\t\treturn this.chainModify(1.2);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Torrent low HP boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t} else if (move.type === 'Water') {\n\t\t\t\tthis.debug('Torrent boost');\n\t\t\t\treturn this.chainModify(1.2);\n\t\t\t}\n\t\t},\n\t\tname: \"Torrent\",\n\t\trating: 2,\n\t\tnum: 67,\n\t\tshortDesc: \"1.2x Power on Water attacks. At 1/3 or less HP, all of this Pokemon's moves deal 1.5x damage.\",\n\t},\n\tovergrow: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Overgrow low HP boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t} else if (move.type === 'Grass') {\n\t\t\t\tthis.debug('Overgrow boost');\n\t\t\t\treturn this.chainModify(1.2);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Overgrow low HP boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t} else if (move.type === 'Grass') {\n\t\t\t\tthis.debug('Overgrow boost');\n\t\t\t\treturn this.chainModify(1.2);\n\t\t\t}\n\t\t},\n\t\tname: \"Overgrow\",\n\t\trating: 2,\n\t\tnum: 65,\n\t\tshortDesc: \"1.2x Power on Grass attacks. At 1/3 or less HP, all of this Pokemon's moves deal 1.5x damage.\",\n\t},\n\tswarm: {\n\t\tonModifyAtkPriority: 5,\n\t\tonModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Swarm low HP boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t} else if (move.type === 'Bug') {\n\t\t\t\tthis.debug('Swarm boost');\n\t\t\t\treturn this.chainModify(1.2);\n\t\t\t}\n\t\t},\n\t\tonModifySpAPriority: 5,\n\t\tonModifySpA(atk, attacker, defender, move) {\n\t\t\tif (attacker.hp <= attacker.maxhp / 3) {\n\t\t\t\tthis.debug('Swarm low HP boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t} else if (move.type === 'Bug') {\n\t\t\t\tthis.debug('Swarm boost');\n\t\t\t\treturn this.chainModify(1.2);\n\t\t\t}\n\t\t},\n\t\tname: \"Swarm\",\n\t\trating: 2,\n\t\tnum: 68,\n\t\tshortDesc: \"1.2x Power on Bug attacks. At 1/3 or less HP, all of this Pokemon's moves deal 1.5x damage.\",\n\t},\n\tfairyringer: {\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target !== source && move.type === 'Fairy') {\n\t\t\t\tif (!this.boost({atk: 1})) {\n\t\t\t\t\tthis.add('-immune', target, '[from] ability: Fairy Ringer');\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 !== 'Fairy' || 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: Fairy Ringer');\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: \"Fairy Ringer\",\n\t\trating: 3,\n\t\tshortDesc: \"This Pokemon draws Fairy moves to itself to raise Atk by 1; Fairy immunity.\",\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\tonSourceModifyAtkPriority: 6,\n\t\tonSourceModifyAtk(atk, attacker, defender, move) {\n\t\t\tif (move.type === 'Dark') {\n\t\t\t\tthis.debug('Justified 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 === 'Dark') {\n\t\t\t\tthis.debug('Justified 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: \"Justified\",\n\t\trating: 3,\n\t\tnum: 154,\n\t\tshortDesc: \"Dark-type moves deal 1/2 damage to this Pokemon and raise its Attack by 1 stage.\",\n\t},\n\tmomentum: {\n\t\tonAfterMoveSecondarySelfPriority: -1,\n\t\tonAfterMoveSecondarySelf(pokemon, target, move) {\n\t\t\tif (['rapidspin', 'icespinner', 'spinout', 'blazingtorque', 'combattorque', 'noxioustorque',\n\t\t\t\t 'wickedtorque', 'drillrun', 'gyroball', 'rollout', 'iceball', 'flipturn', 'uturn', 'electrodrift',\n\t\t\t\t 'darkestlariat', 'flamewheel', 'aurawheel', 'shiftgear', 'mortalspin', 'geargrind', 'steelroller',\n\t\t\t\t 'rototiller', 'steamroller', 'tripleaxel', 'triplekick', 'firespin', 'leaftornado', 'hurricane',\n\t\t\t\t 'bleakwindstorm', 'sandsearstorm', 'wildboltstorm', 'springtimestorm', 'whirlpool'].includes(move.id)) {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 8);\n\t\t\t}\n\t\t},\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (['rapidspin', 'icespinner', 'spinout', 'blazingtorque', 'combattorque', 'noxioustorque',\n\t\t\t\t 'wickedtorque', 'drillrun', 'gyroball', 'rollout', 'iceball', 'flipturn', 'uturn', 'electrodrift',\n\t\t\t\t 'darkestlariat', 'flamewheel', 'aurawheel', 'shiftgear', 'mortalspin', 'geargrind', 'steelroller',\n\t\t\t\t 'rototiller', 'steamroller', 'tripleaxel', 'triplekick', 'firespin', 'leaftornado', 'hurricane',\n\t\t\t\t 'bleakwindstorm', 'sandsearstorm', 'wildboltstorm', 'springtimestorm', 'whirlpool'].includes(move.id)) {\n\t\t\t\tthis.heal(target.baseMaxhp / 8);\n\t\t\t}\n\t\t},\n\t\tname: \"Momentum\",\n\t\tshortDesc: \"The user heals 1/8 of its HP if it uses or gets hit by a spinning move.\",\n\t},\n\tcudchew: {\n\t\tonStart(pokemon) {\n\t\t\tif (pokemon.getItem().isBerry) {\n\t\t\t\tpokemon.eatItem(true);\n\t\t\t\tthis.add('-message', `${pokemon.name}'s ate its berry!`);\n\t\t\t}\n\t\t},\n\t\tonSwitchOut(pokemon) {\n\t\t\tif (pokemon.hp && !pokemon.item && this.dex.items.get(pokemon.lastItem).isBerry) {\n\t\t\t\tpokemon.setItem(pokemon.lastItem);\n\t\t\t\tpokemon.lastItem = '';\n\t\t\t\tthis.add('-item', pokemon, pokemon.getItem(), '[from] ability: Cud Chew');\n\t\t\t\tthis.add('-message', `${pokemon.name}'s regenerated its berry!`);\n\t\t\t}\n\t\t},\n\t\tname: \"Cud Chew\",\n\t\trating: 4,\n\t\tnum: 291,\n\t\tshortDesc: \"Eats berry on switch-in, recycles berry on switch-out.\",\n\t},\n\tpermafrost: {\n\t\tname: \"Permafrost\",\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-ability', pokemon, 'Permafrost');\n\t\t\tthis.add('-message', `${pokemon.name}'s freezing aura turns water into ice!`);\n\t\t},\n\t\tonDamagingHit(damage, target, source, move) {\n\t\t\tif (move.type === 'Ice') {\n\t\t\t\tthis.boost({def: 1, spd: 1});\n\t\t\t}\n\t\t},\n\t\tonFoeBeforeMovePriority: 13,\n\t\tonFoeBeforeMove(attacker, defender, move) {\n\t\t\tattacker.addVolatile('permafrost');\n\t\t},\n\t\tcondition: {\n\t\t\tonModifyTypePriority: -1,\n\t\t\tonModifyType(move, pokemon) {\n\t\t\t\tif (move.type === 'Water') {\n\t\t\t\t\tmove.type = 'Ice';\n\t\t\t\t}\n\t\t\t},\n\t\t\tonAfterMove(pokemon) {\n\t\t\t\tpokemon.removeVolatile('permafrost');\n\t\t\t},\n\t\t},\n\t\tshortDesc: \"Water moves used against this Pokemon become Ice-type. +1 Def/SpD when hit by Ice.\",\n\t\trating: 4,\n\t},\n\tprehistoricmight: {\n\t\tonStart(pokemon) {\n\t\t\tlet activated = false;\n\t\t\tfor (const target of pokemon.adjacentFoes()) {\n\t\t\t\tif (!target.positiveBoosts()) continue;\n\t\t\t\tif (!activated) {\n\t\t\t\t\tthis.add('-ability', pokemon, 'Prehistoric Might', '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({spe: -2}, target, pokemon, null, true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tname: \"Prehistoric Might\",\n\t\trating: 2.5,\n\t\tshortDesc: \"On switch-in, the foe's Speed is lowered by 2 stages if it has a positive stat boost.\",\n\t},\n\tsynchronize: {\n\t\tonDamage(damage, target, source, effect) {\n\t\t\tif (effect && effect.effectType !== 'Move' && effect.id !== 'synchronize') {\n\t\t\t\tfor (const foes of target.adjacentFoes()) {\n\t\t\t\t\tthis.damage(damage, foes, target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tname: \"Synchronize\",\n\t\trating: 2,\n\t\tnum: 28,\n\t\tshortDesc: \"If this Pokemon takes indirect damage, the opponent takes the same amount of damage.\",\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\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.illusion) {\n\t\t\t\tthis.debug('Illusion weaken');\n\t\t\t\treturn this.chainModify(0.5);\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.species.name + (pokemon.level === 100 ? '' : ', L' + pokemon.level) +\n\t\t\t\t\t(pokemon.gender === '' ? '' : ', ' + pokemon.gender) + (pokemon.set.shiny ? ', shiny' : '');\n\t\t\t\tthis.add('replace', pokemon, details);\n\t\t\t\tthis.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');\n\t\t\t\tthis.add('-end', pokemon, 'Illusion');\n\t\t\t}\n\t\t},\n\t\tonFaint(pokemon) {\n\t\t\tpokemon.illusion = null;\n\t\t},\n\t\tname: \"Illusion\",\n\t\trating: 4.5,\n\t\tnum: 149,\n\t\tshortDesc: \"This Pokemon appears as the last Pokemon in the party until it takes direct damage, which is halved while disguised.\",\n\t},\n\tsteadfast: {\n\t\tonTryAddVolatile(status, pokemon) {\n\t\t\tif (status.id === 'flinch') return null;\n\t\t},\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (target.baseSpecies.bst < source.baseSpecies.bst) {\n\t\t\t\tthis.debug('Steadfast weaken');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tname: \"Steadfast\",\n\t\trating: 4,\n\t\tnum: 80,\n\t\tshortDesc: \"This Pokemon takes 0.5x damage from higher BST foes and can't flinch.\",\n\t},\n\tfairfight: {\n\t\tname: \"Fair Fight\",\n\t\tonStart(source) {\n\t\t\tlet activated = false;\n\t\t\tfor (const pokemon of source.foes()) {\n\t\t\t\tif (!activated) {\n\t\t\t\t\tthis.add('-ability', source, 'Fair Fight');\n\t\t\t\t\tthis.add('-message', `${source.name} wants to have a fair fight!`);\n\t\t\t\t}\n\t\t\t\tactivated = true;\n\t\t\t\tif (!pokemon.volatiles['fairfight']) {\n\t\t\t\t\tpokemon.addVolatile('fairfight');\n\t\t\t\t}\n\t\t\t\tif (!source.volatiles['fairfight']) {\n\t\t\t\t\tsource.addVolatile('fairfight');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAnySwitchIn(pokemon) {\n\t\t\tconst source = this.effectState.target;\n\t\t\tif (pokemon === source) return;\n\t\t\tfor (const target of source.foes()) {\n\t\t\t\tif (!target.volatiles['fairfight']) {\n\t\t\t\t\ttarget.addVolatile('fairfight');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tfor (const target of pokemon.foes()) {\n\t\t\t\ttarget.removeVolatile('fairfight');\n\t\t\t}\n\t\t},\n\t\tcondition: {\n\t\t\tonTryBoost(boost, target, source, effect) {\n\t\t\t\tlet showMsg = false;\n\t\t\t\tlet i: BoostID;\n\t\t\t\tfor (i in boost) {\n\t\t\t\t\tif (boost[i]! < 0 || boost[i]! > 0) {\n\t\t\t\t\t\tdelete boost[i];\n\t\t\t\t\t\tshowMsg = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (showMsg && !(effect as ActiveMove).secondaries) {\n\t\t\t\t\tthis.add('-activate', target, 'ability: Fair Fight');\n\t\t\t\t\tthis.add('-message', `${target.name} can't change its stats!`);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tshortDesc: \"While this Pokemon is active, no stat changes can occur.\",\n\t},\n\n\t// unchanged abilities\n\tdamp: {\n\t\tonAnyTryMove(target, source, effect) {\n\t\t\tif (['explosion', 'mindblown', 'mistyexplosion', 'selfdestruct', 'shrapnelshot'].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\tregenerator: {\n\t\tonSwitchOut(pokemon) {\n\t\t\tif (!pokemon.volatiles['healblock']) {\n\t\t\t\tpokemon.heal(pokemon.baseMaxhp / 3);\n\t\t\t}\n\t\t},\n\t\tname: \"Regenerator\",\n\t\trating: 4.5,\n\t\tnum: 144,\n\t},\n\tsurgesurfer: {\n\t\tshortDesc: \"If Electric Terrain is active, this Pok\u00E9mon's Speed is doubled.\",\n\t\tonModifySpe(spe) {\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\tthis.debug('Cloud Nine prevents Speed increase');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\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\tname: \"Surge Surfer\",\n\t\trating: 2.5,\n\t\tnum: 207,\n\t},\n\tquarkdrive: {\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 (pokemon.transformed) return;\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?.id === 'boosterenergy') {\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, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'atk' || source.volatiles['cloudnine'] || source.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, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'def' || target.volatiles['cloudnine'] || target.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(relayVar, source, target, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spa' || source.volatiles['cloudnine'] || source.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(relayVar, target, source, move) {\n\t\t\t\tif (this.effectState.bestStat !== 'spd' || target.volatiles['cloudnine'] || target.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.volatiles['cloudnine'] || 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\tname: \"Quark Drive\",\n\t\trating: 3,\n\t\tnum: 282,\n\t},\n\tprankster: {\n\t\t// for ngas\n\t\tinherit: true,\n\t\tonModifyPriority(priority, pokemon, target, move) {\n\t\t\tfor (const poke of this.getAllActive()) {\n\t\t\t\tif (poke.hasAbility('counteract') && poke.side.id !== pokemon.side.id && !poke.abilityState.ending) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\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},\n\ttriage: {\n\t\tinherit: true,\n\t\tonModifyPriority(priority, pokemon, target, move) {\n\t\t\t// for ngas\n\t\t\tfor (const poke of this.getAllActive()) {\n\t\t\t\tif (poke.hasAbility('counteract') && poke.side.id !== pokemon.side.id && !poke.abilityState.ending) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (move?.flags['heal']) return priority + 1;\n\t\t},\n\t\tshortDesc: \"This Pokemon's healing moves have their priority increased by 1.\",\n\t},\n\ticebody: {\n\t\tonWeather(target, source, effect) {\n\t\t\tif (effect.id === 'hail' || effect.id === 'snow') {\n\t\t\t\tthis.heal(target.baseMaxhp / 32);\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\tname: \"Ice Body\",\n\t\trating: 1,\n\t\tnum: 115,\n\t},\n\tlibero: {\n\t\tonPrepareHit(source, target, move) {\n\t\t\tif (this.effectState.libero) return;\n\t\t\tif (move.hasBounced ||\n\t\t\t\t move.flags['futuremove'] ||\n\t\t\t\t move.sourceEffect === 'snatch') return;\n\t\t\tconst type = move.type;\n\t\t\tif (type && type !== '???' && !source.hasItem('terashard') &&\n\t\t\t\t source.getTypes().join() !== type && source.setType(type)) {\n\t\t\t\tthis.effectState.libero = true;\n\t\t\t\tthis.add('-start', source, 'typechange', type, '[from] ability: Libero');\n\t\t\t}\n\t\t},\n\t\tonSwitchIn() {\n\t\t\tdelete this.effectState.libero;\n\t\t},\n\t\tname: \"Libero\",\n\t\trating: 4,\n\t\tnum: 236,\n\t},\n\tprotean: {\n\t\tonPrepareHit(source, target, move) {\n\t\t\tif (this.effectState.protean) return;\n\t\t\tif (move.hasBounced ||\n\t\t\t\t move.flags['futuremove'] ||\n\t\t\t\t move.sourceEffect === 'snatch') return;\n\t\t\tconst type = move.type;\n\t\t\tif (type && type !== '???' && !source.hasItem('terashard') &&\n\t\t\t\t source.getTypes().join() !== type && source.setType(type)) {\n\t\t\t\tthis.effectState.protean = true;\n\t\t\t\tthis.add('-start', source, 'typechange', type, '[from] ability: Protean');\n\t\t\t}\n\t\t},\n\t\tonSwitchIn(pokemon) {\n\t\t\tdelete this.effectState.protean;\n\t\t},\n\t\tname: \"Protean\",\n\t\trating: 4,\n\t\tnum: 168,\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 (move.type === source.teraType && source.baseSpecies.types.includes(source.teraType) &&\n\t\t\t\t\tsource.hasItem('terashard')) {\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\tname: \"Adaptability\",\n\t\trating: 4,\n\t\tnum: 91,\n\t},\n};\n"], "mappings": "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", "names": [] }