{ "version": 3, "sources": ["../../../../data/mods/gen4/moves.ts"], "sourcesContent": ["export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {\n\tacupressure: {\n\t\tinherit: true,\n\t\tflags: { snatch: 1, metronome: 1 },\n\t\tonHit(target) {\n\t\t\tif (target.volatiles['substitute']) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst stats: BoostID[] = [];\n\t\t\tlet stat: BoostID;\n\t\t\tfor (stat in target.boosts) {\n\t\t\t\tif (target.boosts[stat] < 6) {\n\t\t\t\t\tstats.push(stat);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (stats.length) {\n\t\t\t\tconst randomStat = this.sample(stats);\n\t\t\t\tconst boost: SparseBoostsTable = {};\n\t\t\t\tboost[randomStat] = 2;\n\t\t\t\tthis.boost(boost);\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t},\n\taromatherapy: {\n\t\tinherit: true,\n\t\tonHit(target, source) {\n\t\t\tthis.add('-cureteam', source, '[from] move: Aromatherapy');\n\t\t\tconst allies = [...target.side.pokemon, ...target.side.allySide?.pokemon || []];\n\t\t\tfor (const ally of allies) {\n\t\t\t\tally.clearStatus();\n\t\t\t}\n\t\t},\n\t},\n\taquaring: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1 },\n\t\tcondition: {\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-start', pokemon, 'Aqua Ring');\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 2,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 16);\n\t\t\t},\n\t\t},\n\t},\n\tassist: {\n\t\tinherit: true,\n\t\tonHit(target) {\n\t\t\tconst moves = [];\n\t\t\tfor (const pokemon of target.side.pokemon) {\n\t\t\t\tif (pokemon === target) continue;\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tconst moveid = moveSlot.id;\n\t\t\t\t\tconst move = this.dex.moves.get(moveid);\n\t\t\t\t\tif (\n\t\t\t\t\t\tmove.flags['noassist'] ||\n\t\t\t\t\t\t(this.field.pseudoWeather['gravity'] && move.flags['gravity']) ||\n\t\t\t\t\t\t(target.volatiles['healblock'] && move.flags['heal'])\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tmoves.push(moveid);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet randomMove = '';\n\t\t\tif (moves.length) randomMove = this.sample(moves);\n\t\t\tif (!randomMove) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.actions.useMove(randomMove, target);\n\t\t},\n\t},\n\tbeatup: {\n\t\tinherit: true,\n\t\tbasePower: 10,\n\t\tbasePowerCallback(pokemon, target, move) {\n\t\t\tif (!move.allies?.length) return null;\n\t\t\treturn 10;\n\t\t},\n\t\tonModifyMove(move, pokemon) {\n\t\t\tpokemon.addVolatile('beatup');\n\t\t\tmove.type = '???';\n\t\t\tmove.category = 'Physical';\n\t\t\tmove.allies = pokemon.side.pokemon.filter(ally => !ally.fainted && !ally.status);\n\t\t\tmove.multihit = move.allies.length;\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonModifyAtkPriority: -101,\n\t\t\tonModifyAtk(atk, pokemon, defender, move) {\n\t\t\t\t// https://www.smogon.com/forums/posts/8992145/\n\t\t\t\t// this.add('-activate', pokemon, 'move: Beat Up', '[of] ' + move.allies![0].name);\n\t\t\t\tthis.event.modifier = 1;\n\t\t\t\treturn move.allies!.shift()!.species.baseStats.atk;\n\t\t\t},\n\t\t\tonFoeModifyDefPriority: -101,\n\t\t\tonFoeModifyDef(def, pokemon) {\n\t\t\t\tthis.event.modifier = 1;\n\t\t\t\treturn pokemon.species.baseStats.def;\n\t\t\t},\n\t\t},\n\t},\n\tbide: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 3,\n\t\t\tonLockMove: 'bide',\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.effectState.totalDamage = 0;\n\t\t\t\tthis.add('-start', pokemon, 'move: Bide');\n\t\t\t},\n\t\t\tonDamagePriority: -101,\n\t\t\tonDamage(damage, target, source, move) {\n\t\t\t\tif (!move || move.effectType !== 'Move' || !source) return;\n\t\t\t\tthis.effectState.totalDamage += damage;\n\t\t\t\tthis.effectState.lastDamageSource = source;\n\t\t\t},\n\t\t\tonAfterSetStatus(status, pokemon) {\n\t\t\t\tif (status.id === 'slp' || status.id === 'frz') {\n\t\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBeforeMove(pokemon, target, move) {\n\t\t\t\tif (this.effectState.duration === 1) {\n\t\t\t\t\tthis.add('-end', pokemon, 'move: Bide');\n\t\t\t\t\tif (!this.effectState.totalDamage) {\n\t\t\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\ttarget = this.effectState.lastDamageSource;\n\t\t\t\t\tif (!target) {\n\t\t\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (!target.isActive) {\n\t\t\t\t\t\tconst possibleTarget = this.getRandomTarget(pokemon, this.dex.moves.get('pound'));\n\t\t\t\t\t\tif (!possibleTarget) {\n\t\t\t\t\t\t\tthis.add('-miss', pokemon);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttarget = possibleTarget;\n\t\t\t\t\t}\n\t\t\t\t\tconst moveData = {\n\t\t\t\t\t\tid: 'bide',\n\t\t\t\t\t\tname: \"Bide\",\n\t\t\t\t\t\taccuracy: true,\n\t\t\t\t\t\tdamage: this.effectState.totalDamage * 2,\n\t\t\t\t\t\tcategory: \"Physical\",\n\t\t\t\t\t\tpriority: 1,\n\t\t\t\t\t\tflags: { contact: 1, protect: 1 },\n\t\t\t\t\t\tignoreImmunity: true,\n\t\t\t\t\t\teffectType: 'Move',\n\t\t\t\t\t\ttype: 'Normal',\n\t\t\t\t\t} as unknown as ActiveMove;\n\t\t\t\t\tthis.actions.tryMoveHit(target, pokemon, moveData);\n\t\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.add('-activate', pokemon, 'move: Bide');\n\t\t\t},\n\t\t\tonMoveAborted(pokemon) {\n\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t},\n\t\t\tonEnd(pokemon) {\n\t\t\t\tthis.add('-end', pokemon, 'move: Bide', '[silent]');\n\t\t\t},\n\t\t},\n\t},\n\tbind: {\n\t\tinherit: true,\n\t\taccuracy: 75,\n\t},\n\tbonerush: {\n\t\tinherit: true,\n\t\taccuracy: 80,\n\t},\n\tbravebird: {\n\t\tinherit: true,\n\t\trecoil: [1, 3],\n\t},\n\tbulletseed: {\n\t\tinherit: true,\n\t\tbasePower: 10,\n\t},\n\tcamouflage: {\n\t\tinherit: true,\n\t\tonHit(target) {\n\t\t\tif (target.hasType('Normal') || !target.setType('Normal')) return false;\n\t\t\tthis.add('-start', target, 'typechange', 'Normal');\n\t\t},\n\t},\n\tchatter: {\n\t\tinherit: true,\n\t\tsecondary: {\n\t\t\tchance: 31,\n\t\t\tvolatileStatus: 'confusion',\n\t\t},\n\t},\n\tclamp: {\n\t\tinherit: true,\n\t\taccuracy: 75,\n\t\tpp: 10,\n\t},\n\tconversion: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1 },\n\t\tonHit(target) {\n\t\t\tconst possibleTypes = target.moveSlots.map(moveSlot => {\n\t\t\t\tconst move = this.dex.moves.get(moveSlot.id);\n\t\t\t\tif (move.id !== 'conversion' && move.id !== 'curse' && !target.hasType(move.type)) {\n\t\t\t\t\treturn move.type;\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t}).filter(type => type);\n\t\t\tif (!possibleTypes.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst type = this.sample(possibleTypes);\n\n\t\t\tif (!target.setType(type)) return false;\n\t\t\tthis.add('-start', target, 'typechange', type);\n\t\t},\n\t},\n\tcopycat: {\n\t\tinherit: true,\n\t\tonHit(pokemon) {\n\t\t\tconst move: Move | ActiveMove | null = this.lastMove;\n\t\t\tif (!move) return;\n\n\t\t\tif (\n\t\t\t\tmove.flags['failcopycat'] ||\n\t\t\t\t(this.field.pseudoWeather['gravity'] && move.flags['gravity']) ||\n\t\t\t\t(pokemon.volatiles['healblock'] && move.flags['heal'])\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.actions.useMove(move.id, pokemon);\n\t\t},\n\t},\n\tcottonspore: {\n\t\tinherit: true,\n\t\taccuracy: 85,\n\t},\n\tcovet: {\n\t\tinherit: true,\n\t\tbasePower: 40,\n\t},\n\tcrabhammer: {\n\t\tinherit: true,\n\t\taccuracy: 85,\n\t},\n\tcrushgrip: {\n\t\tinherit: true,\n\t\tbasePowerCallback(pokemon, target) {\n\t\t\tconst bp = Math.floor(target.hp * 120 / target.maxhp) + 1;\n\t\t\tthis.debug(`BP for ${target.hp}/${target.maxhp} HP: ${bp}`);\n\t\t\treturn bp;\n\t\t},\n\t},\n\tcurse: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1 },\n\t\tonModifyMove(move, source, target) {\n\t\t\tif (!source.hasType('Ghost')) {\n\t\t\t\tdelete move.volatileStatus;\n\t\t\t\tdelete move.onHit;\n\t\t\t\tmove.self = { boosts: { atk: 1, def: 1, spe: -1 } };\n\t\t\t\tmove.target = move.nonGhostTarget!;\n\t\t\t} else if (target?.volatiles['substitute']) {\n\t\t\t\tdelete move.volatileStatus;\n\t\t\t\tdelete move.onHit;\n\t\t\t}\n\t\t},\n\t\tcondition: {\n\t\t\tonStart(pokemon, source) {\n\t\t\t\tthis.add('-start', pokemon, 'Curse', `[of] ${source}`);\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 8,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tthis.damage(pokemon.baseMaxhp / 4);\n\t\t\t},\n\t\t},\n\t\ttype: \"???\",\n\t},\n\tdefog: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t},\n\tdetect: {\n\t\tinherit: true,\n\t\tpriority: 3,\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-singleturn', target, 'Protect');\n\t\t\t},\n\t\t\tonTryHitPriority: 3,\n\t\t\tonTryHit(target, source, move) {\n\t\t\t\tif (!move.flags['protect']) return;\n\t\t\t\tthis.add('-activate', target, 'Protect');\n\t\t\t\tconst lockedmove = source.getVolatile('lockedmove');\n\t\t\t\tif (lockedmove) {\n\t\t\t\t\t// Outrage counter is NOT reset\n\t\t\t\t\tif (source.volatiles['lockedmove'].trueDuration >= 2) {\n\t\t\t\t\t\tsource.volatiles['lockedmove'].duration = 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t},\n\t},\n\tdisable: {\n\t\tinherit: true,\n\t\taccuracy: 80,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t\tvolatileStatus: 'disable',\n\t\tcondition: {\n\t\t\tdurationCallback() {\n\t\t\t\treturn this.random(4, 8);\n\t\t\t},\n\t\t\tnoCopy: true,\n\t\t\tonStart(pokemon) {\n\t\t\t\tif (!this.queue.willMove(pokemon)) {\n\t\t\t\t\tthis.effectState.duration!++;\n\t\t\t\t}\n\t\t\t\tif (!pokemon.lastMove) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (moveSlot.id === pokemon.lastMove.id) {\n\t\t\t\t\t\tif (!moveSlot.pp) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.add('-start', pokemon, 'Disable', moveSlot.move);\n\t\t\t\t\t\t\tthis.effectState.move = pokemon.lastMove.id;\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}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 13,\n\t\t\tonEnd(pokemon) {\n\t\t\t\tthis.add('-end', pokemon, 'move: Disable');\n\t\t\t},\n\t\t\tonBeforeMovePriority: 7,\n\t\t\tonBeforeMove(attacker, defender, move) {\n\t\t\t\tif (move.id === this.effectState.move) {\n\t\t\t\t\tthis.add('cant', attacker, 'Disable', move);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (moveSlot.id === this.effectState.move) {\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tdoomdesire: {\n\t\tinherit: true,\n\t\taccuracy: 85,\n\t\tbasePower: 120,\n\t\tonTry(source, target) {\n\t\t\tif (!target.side.addSlotCondition(target, 'futuremove')) return false;\n\t\t\tconst moveData = {\n\t\t\t\tname: \"Doom Desire\",\n\t\t\t\tbasePower: 120,\n\t\t\t\tcategory: \"Special\",\n\t\t\t\tflags: { metronome: 1, futuremove: 1 },\n\t\t\t\twillCrit: false,\n\t\t\t\ttype: '???',\n\t\t\t} as unknown as ActiveMove;\n\t\t\tconst damage = this.actions.getDamage(source, target, moveData, true);\n\t\t\tObject.assign(target.side.slotConditions[target.position]['futuremove'], {\n\t\t\t\tduration: 3,\n\t\t\t\tmove: 'doomdesire',\n\t\t\t\tsource,\n\t\t\t\tmoveData: {\n\t\t\t\t\tid: 'doomdesire',\n\t\t\t\t\tname: \"Doom Desire\",\n\t\t\t\t\taccuracy: 85,\n\t\t\t\t\tbasePower: 0,\n\t\t\t\t\tdamage,\n\t\t\t\t\tcategory: \"Special\",\n\t\t\t\t\tflags: { metronome: 1, futuremove: 1 },\n\t\t\t\t\teffectType: 'Move',\n\t\t\t\t\ttype: '???',\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.add('-start', source, 'Doom Desire');\n\t\t\treturn null;\n\t\t},\n\t},\n\tdoubleedge: {\n\t\tinherit: true,\n\t\trecoil: [1, 3],\n\t},\n\tdrainpunch: {\n\t\tinherit: true,\n\t\tbasePower: 60,\n\t\tpp: 5,\n\t},\n\tdreameater: {\n\t\tinherit: true,\n\t\tonTryImmunity(target) {\n\t\t\treturn target.status === 'slp' && !target.volatiles['substitute'];\n\t\t},\n\t},\n\tembargo: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, metronome: 1 },\n\t\tonTryHit(pokemon) {\n\t\t\tif (pokemon.ability === 'multitype' || pokemon.item === 'griseousorb') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-start', pokemon, 'Embargo');\n\t\t\t},\n\t\t\t// Item suppression implemented in Pokemon.ignoringItem() within sim/pokemon.js\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 18,\n\t\t\tonEnd(pokemon) {\n\t\t\t\tthis.add('-end', pokemon, 'Embargo');\n\t\t\t},\n\t\t},\n\t},\n\tencore: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1, failencore: 1 },\n\t\tvolatileStatus: 'encore',\n\t\tcondition: {\n\t\t\tdurationCallback() {\n\t\t\t\treturn this.random(4, 9);\n\t\t\t},\n\t\t\tonStart(target, source) {\n\t\t\t\tconst moveIndex = target.lastMove ? target.moves.indexOf(target.lastMove.id) : -1;\n\t\t\t\tif (\n\t\t\t\t\t!target.lastMove || target.lastMove.flags['failencore'] ||\n\t\t\t\t\t!target.moveSlots[moveIndex] || target.moveSlots[moveIndex].pp <= 0\n\t\t\t\t) {\n\t\t\t\t\t// it failed\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.effectState.move = target.lastMove.id;\n\t\t\t\tthis.add('-start', target, 'Encore');\n\t\t\t},\n\t\t\tonOverrideAction(pokemon) {\n\t\t\t\treturn this.effectState.move;\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 14,\n\t\t\tonResidual(target) {\n\t\t\t\tif (\n\t\t\t\t\ttarget.moves.includes(this.effectState.move) &&\n\t\t\t\t\ttarget.moveSlots[target.moves.indexOf(this.effectState.move)].pp <= 0\n\t\t\t\t) {\n\t\t\t\t\t// early termination if you run out of PP\n\t\t\t\t\ttarget.removeVolatile('encore');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'Encore');\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tif (!this.effectState.move || !pokemon.hasMove(this.effectState.move)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (moveSlot.id !== this.effectState.move) {\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tendeavor: {\n\t\tinherit: true,\n\t\tonTry(pokemon, target) {\n\t\t\tif (pokemon.hp >= target.hp) {\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t},\n\textremespeed: {\n\t\tinherit: true,\n\t\tpriority: 1,\n\t},\n\tfakeout: {\n\t\tinherit: true,\n\t\tpriority: 1,\n\t},\n\tfeint: {\n\t\tinherit: true,\n\t\tbasePower: 50,\n\t\tonTry(source, target) {\n\t\t\tif (!target.volatiles['protect']) {\n\t\t\t\tthis.add('-fail', source);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t},\n\tfirespin: {\n\t\tinherit: true,\n\t\taccuracy: 70,\n\t\tbasePower: 15,\n\t},\n\tflail: {\n\t\tinherit: true,\n\t\tbasePowerCallback(pokemon) {\n\t\t\tconst ratio = Math.max(Math.floor(pokemon.hp * 64 / pokemon.maxhp), 1);\n\t\t\tlet bp;\n\t\t\tif (ratio < 2) {\n\t\t\t\tbp = 200;\n\t\t\t} else if (ratio < 6) {\n\t\t\t\tbp = 150;\n\t\t\t} else if (ratio < 13) {\n\t\t\t\tbp = 100;\n\t\t\t} else if (ratio < 22) {\n\t\t\t\tbp = 80;\n\t\t\t} else if (ratio < 43) {\n\t\t\t\tbp = 40;\n\t\t\t} else {\n\t\t\t\tbp = 20;\n\t\t\t}\n\t\t\tthis.debug(`BP: ${bp}`);\n\t\t\treturn bp;\n\t\t},\n\t},\n\tflareblitz: {\n\t\tinherit: true,\n\t\trecoil: [1, 3],\n\t},\n\tfling: {\n\t\tinherit: true,\n\t\tonPrepareHit(target, source, move) {\n\t\t\tif (source.ignoringItem()) return false;\n\t\t\tif (source.hasAbility('multitype')) return false;\n\t\t\tconst item = source.getItem();\n\t\t\tif (!this.singleEvent('TakeItem', item, source.itemState, source, source, move, item)) return false;\n\t\t\tif (!item.fling) return false;\n\t\t\tmove.basePower = item.fling.basePower;\n\t\t\tthis.debug(`BP: ${move.basePower}`);\n\t\t\tif (item.isBerry) {\n\t\t\t\tmove.onHit = function (foe) {\n\t\t\t\t\tif (this.singleEvent('Eat', item, null, foe, null, null)) {\n\t\t\t\t\t\tthis.runEvent('EatItem', foe, null, null, item);\n\t\t\t\t\t\tif (item.id === 'leppaberry') foe.staleness = 'external';\n\t\t\t\t\t}\n\t\t\t\t\tif (item.onEat) foe.ateBerry = true;\n\t\t\t\t};\n\t\t\t} else if (item.fling.effect) {\n\t\t\t\tmove.onHit = item.fling.effect;\n\t\t\t} else {\n\t\t\t\tif (!move.secondaries) move.secondaries = [];\n\t\t\t\tif (item.fling.status) {\n\t\t\t\t\tmove.secondaries.push({ status: item.fling.status });\n\t\t\t\t} else if (item.fling.volatileStatus) {\n\t\t\t\t\tmove.secondaries.push({ volatileStatus: item.fling.volatileStatus });\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource.addVolatile('fling');\n\t\t},\n\t},\n\tfocuspunch: {\n\t\tinherit: true,\n\t\tpriorityChargeCallback() {},\n\t\tbeforeTurnCallback(pokemon) {\n\t\t\tpokemon.addVolatile('focuspunch');\n\t\t},\n\t\tbeforeMoveCallback() {},\n\t\tonTry(pokemon) {\n\t\t\tif (pokemon.volatiles['focuspunch']?.lostFocus) {\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\tthis.add('cant', pokemon, 'Focus Punch', 'Focus Punch');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t},\n\tforesight: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t},\n\tfurycutter: {\n\t\tinherit: true,\n\t\tbasePower: 10,\n\t\tcondition: {\n\t\t\tduration: 2,\n\t\t\tonStart() {\n\t\t\t\tthis.effectState.multiplier = 1;\n\t\t\t},\n\t\t\tonRestart() {\n\t\t\t\tif (this.effectState.multiplier < 16) {\n\t\t\t\t\tthis.effectState.multiplier <<= 1;\n\t\t\t\t}\n\t\t\t\tthis.effectState.duration = 2;\n\t\t\t},\n\t\t},\n\t},\n\tfuturesight: {\n\t\tinherit: true,\n\t\taccuracy: 90,\n\t\tbasePower: 80,\n\t\tpp: 15,\n\t\tonTry(source, target) {\n\t\t\tif (!target.side.addSlotCondition(target, 'futuremove')) return false;\n\t\t\tconst moveData = {\n\t\t\t\tname: \"Future Sight\",\n\t\t\t\tbasePower: 80,\n\t\t\t\tcategory: \"Special\",\n\t\t\t\tflags: { metronome: 1, futuremove: 1 },\n\t\t\t\twillCrit: false,\n\t\t\t\ttype: '???',\n\t\t\t} as unknown as ActiveMove;\n\t\t\tconst damage = this.actions.getDamage(source, target, moveData, true);\n\t\t\tObject.assign(target.side.slotConditions[target.position]['futuremove'], {\n\t\t\t\tduration: 3,\n\t\t\t\tmove: 'futuresight',\n\t\t\t\tsource,\n\t\t\t\tmoveData: {\n\t\t\t\t\tid: 'futuresight',\n\t\t\t\t\tname: \"Future Sight\",\n\t\t\t\t\taccuracy: 90,\n\t\t\t\t\tbasePower: 0,\n\t\t\t\t\tdamage,\n\t\t\t\t\tcategory: \"Special\",\n\t\t\t\t\tflags: { metronome: 1, futuremove: 1 },\n\t\t\t\t\teffectType: 'Move',\n\t\t\t\t\ttype: '???',\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.add('-start', source, 'Future Sight');\n\t\t\treturn null;\n\t\t},\n\t},\n\tgigadrain: {\n\t\tinherit: true,\n\t\tbasePower: 60,\n\t},\n\tglare: {\n\t\tinherit: true,\n\t\taccuracy: 75,\n\t},\n\tgravity: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(source, effect) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-activate', source, 'ability: Persistent', '[move] Gravity');\n\t\t\t\t\treturn 7;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonFieldStart(target, source) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Gravity', '[persistent]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Gravity');\n\t\t\t\t}\n\t\t\t\tfor (const pokemon of this.getAllActive()) {\n\t\t\t\t\tlet applies = false;\n\t\t\t\t\tif (pokemon.removeVolatile('bounce') || pokemon.removeVolatile('fly')) {\n\t\t\t\t\t\tapplies = true;\n\t\t\t\t\t\tthis.queue.cancelMove(pokemon);\n\t\t\t\t\t\tpokemon.removeVolatile('twoturnmove');\n\t\t\t\t\t}\n\t\t\t\t\tif (pokemon.volatiles['skydrop']) {\n\t\t\t\t\t\tapplies = true;\n\t\t\t\t\t\tthis.queue.cancelMove(pokemon);\n\n\t\t\t\t\t\tif (pokemon.volatiles['skydrop'].source) {\n\t\t\t\t\t\t\tthis.add('-end', pokemon.volatiles['twoturnmove'].source, 'Sky Drop', '[interrupt]');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpokemon.removeVolatile('skydrop');\n\t\t\t\t\t\tpokemon.removeVolatile('twoturnmove');\n\t\t\t\t\t}\n\t\t\t\t\tif (pokemon.volatiles['magnetrise']) {\n\t\t\t\t\t\tapplies = true;\n\t\t\t\t\t\tdelete pokemon.volatiles['magnetrise'];\n\t\t\t\t\t}\n\t\t\t\t\tif (pokemon.volatiles['telekinesis']) {\n\t\t\t\t\t\tapplies = true;\n\t\t\t\t\t\tdelete pokemon.volatiles['telekinesis'];\n\t\t\t\t\t}\n\t\t\t\t\tif (applies) this.add('-activate', pokemon, 'move: Gravity');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonModifyAccuracy(accuracy) {\n\t\t\t\tif (typeof accuracy !== 'number') return;\n\t\t\t\treturn this.chainModify([6840, 4096]);\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (this.dex.moves.get(moveSlot.id).flags['gravity']) {\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t// groundedness implemented in battle.engine.js:BattlePokemon#isGrounded\n\t\t\tonBeforeMovePriority: 6,\n\t\t\tonBeforeMove(pokemon, target, move) {\n\t\t\t\tif (move.flags['gravity'] && !move.isZ) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Gravity', move);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonModifyMove(move, pokemon, target) {\n\t\t\t\tif (move.flags['gravity'] && !move.isZ) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Gravity', move);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldResidualOrder: 9,\n\t\t\tonFieldEnd() {\n\t\t\t\tthis.add('-fieldend', 'move: Gravity');\n\t\t\t},\n\t\t},\n\t},\n\tgrowth: {\n\t\tinherit: true,\n\t\tonModifyMove() {},\n\t\tboosts: {\n\t\t\tspa: 1,\n\t\t},\n\t},\n\thealbell: {\n\t\tinherit: true,\n\t\tonHit(target, source) {\n\t\t\tthis.add('-activate', source, 'move: Heal Bell');\n\t\t\tconst allies = [...target.side.pokemon, ...target.side.allySide?.pokemon || []];\n\t\t\tfor (const ally of allies) {\n\t\t\t\tif (ally.hasAbility('soundproof')) {\n\t\t\t\t\tif (ally.isActive) this.add('-immune', ally, '[from] ability: Soundproof');\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tally.cureStatus(true);\n\t\t\t}\n\t\t},\n\t},\n\thealblock: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, metronome: 1 },\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(target, source, effect) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-activate', source, 'ability: Persistent', '[move] Heal Block');\n\t\t\t\t\treturn 7;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-start', pokemon, 'move: Heal Block');\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (this.dex.moves.get(moveSlot.id).flags['heal']) {\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBeforeMovePriority: 6,\n\t\t\tonBeforeMove(pokemon, target, move) {\n\t\t\t\tif (move.flags['heal']) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Heal Block', move);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 17,\n\t\t\tonEnd(pokemon) {\n\t\t\t\tthis.add('-end', pokemon, 'move: Heal Block');\n\t\t\t},\n\t\t\tonTryHeal(damage, pokemon, source, effect) {\n\t\t\t\tif (effect && (effect.id === 'drain' || effect.id === 'leechseed' || effect.id === 'wish')) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\thealingwish: {\n\t\tinherit: true,\n\t\tflags: { heal: 1, metronome: 1 },\n\t\tonAfterMove(pokemon) {\n\t\t\tpokemon.switchFlag = true;\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonSwitchInPriority: -1,\n\t\t\tonSwitchIn(target) {\n\t\t\t\tif (target.hp > 0) {\n\t\t\t\t\ttarget.heal(target.maxhp);\n\t\t\t\t\ttarget.clearStatus();\n\t\t\t\t\tthis.add('-heal', target, target.getHealth, '[from] move: Healing Wish');\n\t\t\t\t\ttarget.side.removeSlotCondition(target, 'healingwish');\n\t\t\t\t\ttarget.lastMove = this.lastMove;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.switchFlag = true;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\thighjumpkick: {\n\t\tinherit: true,\n\t\tbasePower: 100,\n\t\tpp: 20,\n\t\tonMoveFail(target, source, move) {\n\t\t\tmove.causedCrashDamage = true;\n\t\t\tlet damage = this.actions.getDamage(source, target, move, true);\n\t\t\tif (!damage) damage = target.maxhp;\n\t\t\tthis.damage(this.clampIntRange(damage / 2, 1, Math.floor(target.maxhp / 2)), source, source, move);\n\t\t},\n\t},\n\ticiclespear: {\n\t\tinherit: true,\n\t\tbasePower: 10,\n\t},\n\timprison: {\n\t\tinherit: true,\n\t\tflags: { bypasssub: 1, metronome: 1 },\n\t\tonTryHit(pokemon) {\n\t\t\tfor (const target of pokemon.foes()) {\n\t\t\t\tfor (const move of pokemon.moves) {\n\t\t\t\t\tif (target.moves.includes(move)) return;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t},\n\tingrain: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-start', pokemon, 'move: Ingrain');\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 1,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 16);\n\t\t\t},\n\t\t\tonTrapPokemon(pokemon) {\n\t\t\t\tpokemon.tryTrap();\n\t\t\t},\n\t\t\t// groundedness implemented in battle.engine.js:BattlePokemon#isGrounded\n\t\t\tonDragOut(pokemon) {\n\t\t\t\tthis.add('-activate', pokemon, 'move: Ingrain');\n\t\t\t\treturn null;\n\t\t\t},\n\t\t},\n\t},\n\tjumpkick: {\n\t\tinherit: true,\n\t\tbasePower: 85,\n\t\tpp: 25,\n\t\tonMoveFail(target, source, move) {\n\t\t\tmove.causedCrashDamage = true;\n\t\t\tlet damage = this.actions.getDamage(source, target, move, true);\n\t\t\tif (!damage) damage = target.maxhp;\n\t\t\tthis.damage(this.clampIntRange(damage / 2, 1, Math.floor(target.maxhp / 2)), source, source, move);\n\t\t},\n\t},\n\tknockoff: {\n\t\tinherit: true,\n\t\tonAfterHit(target, source, move) {\n\t\t\tif (!target.item || target.itemState.knockedOff) return;\n\t\t\tif (target.ability === 'multitype') return;\n\t\t\tconst item = target.getItem();\n\t\t\tif (this.runEvent('TakeItem', target, source, move, item)) {\n\t\t\t\ttarget.itemState.knockedOff = true;\n\t\t\t\tthis.add('-enditem', target, item.name, '[from] move: Knock Off', `[of] ${source}`);\n\t\t\t\tthis.hint(\"In Gens 3-4, Knock Off only makes the target's item unusable; it cannot obtain a new item.\", true);\n\t\t\t}\n\t\t},\n\t},\n\tlastresort: {\n\t\tinherit: true,\n\t\tbasePower: 130,\n\t},\n\tleechseed: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-start', target, 'move: Leech Seed');\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 5,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tconst target = this.getAtSlot(pokemon.volatiles['leechseed'].sourceSlot);\n\t\t\t\tif (!target || target.fainted || target.hp <= 0) {\n\t\t\t\t\tthis.debug('Nothing to leech into');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst damage = this.damage(pokemon.baseMaxhp / 8, pokemon, target);\n\t\t\t\tif (damage) {\n\t\t\t\t\tthis.heal(damage, target, pokemon);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tlightscreen: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(target, source, effect) {\n\t\t\t\tif (source?.hasItem('lightclay')) {\n\t\t\t\t\treturn 8;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonAnyModifyDamagePhase1(damage, source, target, move) {\n\t\t\t\tif (target !== source && this.effectState.target.hasAlly(target) && this.getCategory(move) === 'Special') {\n\t\t\t\t\tif (!target.getMoveHitData(move).crit && !move.infiltrates) {\n\t\t\t\t\t\tthis.debug('Light Screen weaken');\n\t\t\t\t\t\tif (target.alliesAndSelf().length > 1) return this.chainModify(2, 3);\n\t\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'Light Screen');\n\t\t\t},\n\t\t\tonSideResidualOrder: 2,\n\t\t\tonSideEnd(side) {\n\t\t\t\tthis.add('-sideend', side, 'Light Screen');\n\t\t\t},\n\t\t},\n\t},\n\tlockon: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 2,\n\t\t\tonSourceInvulnerabilityPriority: 1,\n\t\t\tonSourceInvulnerability(target, source, move) {\n\t\t\t\tif (move && source === this.effectState.target && target === this.effectState.source) return 0;\n\t\t\t},\n\t\t\tonSourceAccuracy(accuracy, target, source, move) {\n\t\t\t\tif (move && source === this.effectState.target && target === this.effectState.source) return true;\n\t\t\t},\n\t\t},\n\t},\n\tluckychant: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1 },\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'move: Lucky Chant');\n\t\t\t},\n\t\t\tonCriticalHit: false,\n\t\t\tonSideResidualOrder: 6,\n\t\t\tonSideEnd(side) {\n\t\t\t\tthis.add('-sideend', side, 'move: Lucky Chant');\n\t\t\t},\n\t\t},\n\t},\n\tlunardance: {\n\t\tinherit: true,\n\t\tflags: { heal: 1, metronome: 1 },\n\t\tonAfterMove(pokemon) {\n\t\t\tpokemon.switchFlag = true;\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.debug('Lunar Dance started on ' + side.name);\n\t\t\t},\n\t\t\tonSwitchInPriority: -1,\n\t\t\tonSwitchIn(target) {\n\t\t\t\tif (target.getSlot() !== this.effectState.sourceSlot) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target.hp > 0) {\n\t\t\t\t\ttarget.heal(target.maxhp);\n\t\t\t\t\ttarget.clearStatus();\n\t\t\t\t\tfor (const moveSlot of target.moveSlots) {\n\t\t\t\t\t\tmoveSlot.pp = moveSlot.maxpp;\n\t\t\t\t\t}\n\t\t\t\t\tthis.add('-heal', target, target.getHealth, '[from] move: Lunar Dance');\n\t\t\t\t\ttarget.side.removeSlotCondition(target, 'lunardance');\n\t\t\t\t\ttarget.lastMove = this.lastMove;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.switchFlag = true;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tmagiccoat: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonTryHitPriority: 2,\n\t\t\tonTryHit(target, source, move) {\n\t\t\t\tif (target === source || move.hasBounced || !move.flags['reflectable']) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttarget.removeVolatile('magiccoat');\n\t\t\t\tconst newMove = this.dex.getActiveMove(move.id);\n\t\t\t\tnewMove.hasBounced = true;\n\t\t\t\tthis.actions.useMove(newMove, target, { target: source });\n\t\t\t\treturn null;\n\t\t\t},\n\t\t},\n\t},\n\tmagmastorm: {\n\t\tinherit: true,\n\t\taccuracy: 70,\n\t},\n\tmagnetrise: {\n\t\tinherit: true,\n\t\tflags: { gravity: 1, metronome: 1 },\n\t\tvolatileStatus: 'magnetrise',\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tonStart(target) {\n\t\t\t\tif (target.volatiles['ingrain'] || target.ability === 'levitate') return false;\n\t\t\t\tthis.add('-start', target, 'Magnet Rise');\n\t\t\t},\n\t\t\tonImmunity(type) {\n\t\t\t\tif (type === 'Ground') return false;\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 16,\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'Magnet Rise');\n\t\t\t},\n\t\t},\n\t},\n\tmefirst: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonModifyDamagePhase2(damage) {\n\t\t\t\treturn damage * 1.5;\n\t\t\t},\n\t\t},\n\t},\n\tmetalburst: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, metronome: 1 },\n\t},\n\tmetronome: {\n\t\tinherit: true,\n\t\tflags: { noassist: 1, failcopycat: 1, nosleeptalk: 1, failmimic: 1 },\n\t\tonHit(pokemon) {\n\t\t\tconst moves = this.dex.moves.all().filter(move => (\n\t\t\t\t(![2, 4].includes(this.gen) || !pokemon.moves.includes(move.id)) &&\n\t\t\t\t(!move.isNonstandard || move.isNonstandard === 'Unobtainable') &&\n\t\t\t\tmove.flags['metronome'] &&\n\t\t\t\t!(this.field.pseudoWeather['gravity'] && move.flags['gravity']) &&\n\t\t\t\t!(pokemon.volatiles['healblock'] && move.flags['heal'])\n\t\t\t));\n\t\t\tlet randomMove = '';\n\t\t\tif (moves.length) {\n\t\t\t\tmoves.sort((a, b) => a.num - b.num);\n\t\t\t\trandomMove = this.sample(moves).id;\n\t\t\t}\n\t\t\tif (!randomMove) return false;\n\t\t\tpokemon.side.lastSelectedMove = this.toID(randomMove);\n\t\t\tthis.actions.useMove(randomMove, pokemon);\n\t\t},\n\t},\n\tmimic: {\n\t\tinherit: true,\n\t\tflags: {\n\t\t\tprotect: 1, allyanim: 1, noassist: 1, failcopycat: 1, failencore: 1, failinstruct: 1, failmimic: 1,\n\t\t},\n\t\tonHit(target, source) {\n\t\t\tif (source.transformed || !target.lastMove || target.volatiles['substitute']) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (target.lastMove.flags['failmimic'] || source.moves.includes(target.lastMove.id)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst mimicIndex = source.moves.indexOf('mimic');\n\t\t\tif (mimicIndex < 0) return false;\n\t\t\tconst move = this.dex.moves.get(target.lastMove.id);\n\t\t\tsource.moveSlots[mimicIndex] = {\n\t\t\t\tmove: move.name,\n\t\t\t\tid: move.id,\n\t\t\t\tpp: 5,\n\t\t\t\tmaxpp: move.pp * 8 / 5,\n\t\t\t\tdisabled: false,\n\t\t\t\tused: false,\n\t\t\t\tvirtual: true,\n\t\t\t};\n\t\t\tthis.add('-activate', source, 'move: Mimic', move.name);\n\t\t},\n\t},\n\tminimize: {\n\t\tinherit: true,\n\t\tboosts: {\n\t\t\tevasion: 1,\n\t\t},\n\t},\n\tmiracleeye: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t},\n\tmirrormove: {\n\t\tinherit: true,\n\t\tonTryHit() {},\n\t\tonHit(pokemon) {\n\t\t\tconst lastAttackedBy = pokemon.getLastAttackedBy();\n\t\t\tif (!lastAttackedBy?.source.lastMove || !lastAttackedBy.move) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst noMirror = [\n\t\t\t\t'acupressure', 'aromatherapy', 'assist', 'chatter', 'copycat', 'counter', 'curse', 'doomdesire', 'feint', 'focuspunch', 'futuresight', 'gravity', 'hail', 'haze', 'healbell', 'helpinghand', 'lightscreen', 'luckychant', 'magiccoat', 'mefirst', 'metronome', 'mimic', 'mirrorcoat', 'mirrormove', 'mist', 'mudsport', 'naturepower', 'perishsong', 'psychup', 'raindance', 'reflect', 'roleplay', 'safeguard', 'sandstorm', 'sketch', 'sleeptalk', 'snatch', 'spikes', 'spitup', 'stealthrock', 'struggle', 'sunnyday', 'tailwind', 'toxicspikes', 'transform', 'watersport',\n\t\t\t];\n\t\t\tif (noMirror.includes(lastAttackedBy.move) || !lastAttackedBy.source.hasMove(lastAttackedBy.move)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.actions.useMove(lastAttackedBy.move, pokemon);\n\t\t},\n\t\ttarget: \"self\",\n\t},\n\tmist: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tonTryBoost(boost, target, source, effect) {\n\t\t\t\tif (effect.effectType === 'Move' && effect.infiltrates && !target.isAlly(source)) return;\n\t\t\t\tif (source && target !== source) {\n\t\t\t\t\tlet showMsg = false;\n\t\t\t\t\tlet i: BoostID;\n\t\t\t\t\tfor (i in boost) {\n\t\t\t\t\t\tif (boost[i]! < 0) {\n\t\t\t\t\t\t\tdelete boost[i];\n\t\t\t\t\t\t\tshowMsg = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (showMsg && !(effect as ActiveMove).secondaries) {\n\t\t\t\t\t\tthis.add('-activate', target, 'move: Mist');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'Mist');\n\t\t\t},\n\t\t\tonSideResidualOrder: 3,\n\t\t\tonSideEnd(side) {\n\t\t\t\tthis.add('-sideend', side, 'Mist');\n\t\t\t},\n\t\t},\n\t},\n\tmoonlight: {\n\t\tinherit: true,\n\t\tonHit(pokemon) {\n\t\t\tif (this.field.isWeather(['sunnyday', 'desolateland'])) {\n\t\t\t\tthis.heal(pokemon.maxhp * 2 / 3);\n\t\t\t} else if (this.field.isWeather(['raindance', 'primordialsea', 'sandstorm', 'hail'])) {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 4);\n\t\t\t} else {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 2);\n\t\t\t}\n\t\t},\n\t},\n\tmorningsun: {\n\t\tinherit: true,\n\t\tonHit(pokemon) {\n\t\t\tif (this.field.isWeather(['sunnyday', 'desolateland'])) {\n\t\t\t\tthis.heal(pokemon.maxhp * 2 / 3);\n\t\t\t} else if (this.field.isWeather(['raindance', 'primordialsea', 'sandstorm', 'hail'])) {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 4);\n\t\t\t} else {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 2);\n\t\t\t}\n\t\t},\n\t},\n\tmudsport: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-start', pokemon, 'move: Mud Sport');\n\t\t\t},\n\t\t\tonAnyBasePowerPriority: 3,\n\t\t\tonAnyBasePower(basePower, user, target, move) {\n\t\t\t\tif (move.type === 'Electric') {\n\t\t\t\t\tthis.debug('Mud Sport weaken');\n\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tnaturepower: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1 },\n\t\tonHit(pokemon) {\n\t\t\tthis.actions.useMove('triattack', pokemon);\n\t\t},\n\t},\n\tnightmare: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tnoCopy: true,\n\t\t\tonStart(pokemon) {\n\t\t\t\tif (pokemon.status !== 'slp' && !pokemon.hasAbility('comatose')) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.add('-start', pokemon, 'Nightmare');\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 7,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tthis.damage(pokemon.baseMaxhp / 4);\n\t\t\t},\n\t\t},\n\t},\n\todorsleuth: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t},\n\toutrage: {\n\t\tinherit: true,\n\t\tpp: 15,\n\t\tonAfterMove() {},\n\t},\n\tpayback: {\n\t\tinherit: true,\n\t\tbasePowerCallback(pokemon, target) {\n\t\t\tif (this.queue.willMove(target)) {\n\t\t\t\treturn 50;\n\t\t\t}\n\t\t\tthis.debug('BP doubled');\n\t\t\treturn 100;\n\t\t},\n\t},\n\tpayday: {\n\t\tinherit: true,\n\t\tonHit() {\n\t\t\tthis.add('-fieldactivate', 'move: Pay Day');\n\t\t},\n\t},\n\tperishsong: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 4,\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-start', target, 'perish0');\n\t\t\t\ttarget.faint();\n\t\t\t},\n\t\t\tonResidualOrder: 12,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tconst duration = pokemon.volatiles['perishsong'].duration;\n\t\t\t\tthis.add('-start', pokemon, `perish${duration}`);\n\t\t\t},\n\t\t},\n\t},\n\tpetaldance: {\n\t\tinherit: true,\n\t\tbasePower: 90,\n\t\tpp: 20,\n\t\tonAfterMove() {},\n\t},\n\tpoisongas: {\n\t\tinherit: true,\n\t\taccuracy: 55,\n\t\ttarget: \"normal\",\n\t},\n\tpowertrick: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1 },\n\t},\n\tprotect: {\n\t\tinherit: true,\n\t\tpriority: 3,\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-singleturn', target, 'Protect');\n\t\t\t},\n\t\t\tonTryHitPriority: 3,\n\t\t\tonTryHit(target, source, move) {\n\t\t\t\tif (!move.flags['protect']) return;\n\t\t\t\tthis.add('-activate', target, 'Protect');\n\t\t\t\tconst lockedmove = source.getVolatile('lockedmove');\n\t\t\t\tif (lockedmove) {\n\t\t\t\t\t// Outrage counter is NOT reset\n\t\t\t\t\tif (source.volatiles['lockedmove'].trueDuration >= 2) {\n\t\t\t\t\t\tsource.volatiles['lockedmove'].duration = 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t},\n\t},\n\tpsychup: {\n\t\tinherit: true,\n\t\tflags: { snatch: 1, bypasssub: 1, metronome: 1 },\n\t},\n\tpursuit: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonBeforeSwitchOut(pokemon) {\n\t\t\t\tthis.debug('Pursuit start');\n\t\t\t\tlet alreadyAdded = false;\n\t\t\t\tfor (const source of this.effectState.sources) {\n\t\t\t\t\tif (!this.queue.cancelMove(source) || !source.hp) continue;\n\t\t\t\t\tif (!alreadyAdded) {\n\t\t\t\t\t\tthis.add('-activate', pokemon, 'move: Pursuit');\n\t\t\t\t\t\talreadyAdded = true;\n\t\t\t\t\t}\n\t\t\t\t\t// Run through each action in queue to check if the Pursuit user is supposed to Mega Evolve this turn.\n\t\t\t\t\t// If it is, then Mega Evolve before moving.\n\t\t\t\t\tif (source.canMegaEvo || source.canUltraBurst) {\n\t\t\t\t\t\tfor (const [actionIndex, action] of this.queue.entries()) {\n\t\t\t\t\t\t\tif (action.pokemon === source && action.choice === 'megaEvo') {\n\t\t\t\t\t\t\t\tthis.actions.runMegaEvo(source);\n\t\t\t\t\t\t\t\tthis.queue.list.splice(actionIndex, 1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.actions.runMove('pursuit', source, source.getLocOf(pokemon));\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\trapidspin: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon) {\n\t\t\t\tif (pokemon.removeVolatile('leechseed')) {\n\t\t\t\t\tthis.add('-end', pokemon, 'Leech Seed', '[from] move: Rapid Spin', `[of] ${pokemon}`);\n\t\t\t\t}\n\t\t\t\tconst sideConditions = ['spikes', 'toxicspikes', 'stealthrock', 'stickyweb'];\n\t\t\t\tfor (const condition of sideConditions) {\n\t\t\t\t\tif (pokemon.side.removeSideCondition(condition)) {\n\t\t\t\t\t\tthis.add('-sideend', pokemon.side, this.dex.conditions.get(condition).name, '[from] move: Rapid Spin', `[of] ${pokemon}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pokemon.volatiles['partiallytrapped']) {\n\t\t\t\t\tpokemon.removeVolatile('partiallytrapped');\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\trecycle: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1 },\n\t},\n\treflect: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(target, source, effect) {\n\t\t\t\tif (source?.hasItem('lightclay')) {\n\t\t\t\t\treturn 8;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonAnyModifyDamagePhase1(damage, source, target, move) {\n\t\t\t\tif (target !== source && this.effectState.target.hasAlly(target) && this.getCategory(move) === 'Physical') {\n\t\t\t\t\tif (!target.getMoveHitData(move).crit && !move.infiltrates) {\n\t\t\t\t\t\tthis.debug('Reflect weaken');\n\t\t\t\t\t\tif (target.alliesAndSelf().length > 1) return this.chainModify(2, 3);\n\t\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'Reflect');\n\t\t\t},\n\t\t\tonSideResidualOrder: 1,\n\t\t\tonSideEnd(side) {\n\t\t\t\tthis.add('-sideend', side, 'Reflect');\n\t\t\t},\n\t\t},\n\t},\n\treversal: {\n\t\tinherit: true,\n\t\tbasePowerCallback(pokemon) {\n\t\t\tconst ratio = Math.max(Math.floor(pokemon.hp * 64 / pokemon.maxhp), 1);\n\t\t\tlet bp;\n\t\t\tif (ratio < 2) {\n\t\t\t\tbp = 200;\n\t\t\t} else if (ratio < 6) {\n\t\t\t\tbp = 150;\n\t\t\t} else if (ratio < 13) {\n\t\t\t\tbp = 100;\n\t\t\t} else if (ratio < 22) {\n\t\t\t\tbp = 80;\n\t\t\t} else if (ratio < 43) {\n\t\t\t\tbp = 40;\n\t\t\t} else {\n\t\t\t\tbp = 20;\n\t\t\t}\n\t\t\tthis.debug(`BP: ${bp}`);\n\t\t\treturn bp;\n\t\t},\n\t},\n\troar: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, sound: 1, bypasssub: 1, metronome: 1 },\n\t},\n\trockblast: {\n\t\tinherit: true,\n\t\taccuracy: 80,\n\t},\n\troleplay: {\n\t\tinherit: true,\n\t\tonTryHit(target, source) {\n\t\t\tif (target.ability === source.ability || source.hasItem('griseousorb')) return false;\n\t\t\tif (target.getAbility().flags['failroleplay'] || source.ability === 'multitype') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t},\n\tsafeguard: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(target, source, effect) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-activate', source, 'ability: Persistent', '[move] Safeguard');\n\t\t\t\t\treturn 7;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonSetStatus(status, target, source, effect) {\n\t\t\t\tif (!effect || !source) return;\n\t\t\t\tif (effect.id === 'yawn') return;\n\t\t\t\tif (effect.effectType === 'Move' && effect.infiltrates && !target.isAlly(source)) return;\n\t\t\t\tif (target !== source) {\n\t\t\t\t\tthis.debug('interrupting setStatus');\n\t\t\t\t\tif (effect.id === 'synchronize' || (effect.effectType === 'Move' && !effect.secondaries)) {\n\t\t\t\t\t\tthis.add('-activate', target, 'move: Safeguard');\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonTryAddVolatile(status, target, source, effect) {\n\t\t\t\tif (!effect || !source) return;\n\t\t\t\tif (effect.effectType === 'Move' && effect.infiltrates && !target.isAlly(source)) return;\n\t\t\t\tif ((status.id === 'confusion' || status.id === 'yawn') && target !== source) {\n\t\t\t\t\tif (effect.effectType === 'Move' && !effect.secondaries) this.add('-activate', target, 'move: Safeguard');\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSideStart(side, source) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-sidestart', side, 'Safeguard', '[persistent]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-sidestart', side, 'Safeguard');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSideResidualOrder: 4,\n\t\t\tonSideEnd(side) {\n\t\t\t\tthis.add('-sideend', side, 'Safeguard');\n\t\t\t},\n\t\t},\n\t},\n\tsandtomb: {\n\t\tinherit: true,\n\t\taccuracy: 70,\n\t\tbasePower: 15,\n\t},\n\tscaryface: {\n\t\tinherit: true,\n\t\taccuracy: 90,\n\t},\n\tsecretpower: {\n\t\tinherit: true,\n\t\tsecondary: {\n\t\t\tchance: 30,\n\t\t\tstatus: 'par',\n\t\t},\n\t},\n\tsketch: {\n\t\tinherit: true,\n\t\tflags: {\n\t\t\tbypasssub: 1, allyanim: 1, failencore: 1, noassist: 1,\n\t\t\tfailcopycat: 1, failinstruct: 1, failmimic: 1, nosketch: 1,\n\t\t},\n\t\tonHit(target, source) {\n\t\t\tif (source.transformed || !target.lastMove || target.volatiles['substitute']) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (target.lastMove.flags['nosketch'] || source.moves.includes(target.lastMove.id)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst sketchIndex = source.moves.indexOf('sketch');\n\t\t\tif (sketchIndex < 0) return false;\n\t\t\tconst move = this.dex.moves.get(target.lastMove.id);\n\t\t\tconst sketchedMove = {\n\t\t\t\tmove: move.name,\n\t\t\t\tid: move.id,\n\t\t\t\tpp: move.pp,\n\t\t\t\tmaxpp: move.pp,\n\t\t\t\tdisabled: false,\n\t\t\t\tused: false,\n\t\t\t};\n\t\t\tsource.moveSlots[sketchIndex] = sketchedMove;\n\t\t\tsource.baseMoveSlots[sketchIndex] = sketchedMove;\n\t\t\tthis.add('-activate', source, 'move: Mimic', move.name);\n\t\t},\n\t},\n\tskillswap: {\n\t\tinherit: true,\n\t\tonHit(target, source) {\n\t\t\tconst targetAbility = target.ability;\n\t\t\tconst sourceAbility = source.ability;\n\t\t\tif (targetAbility === sourceAbility || source.hasItem('griseousorb') || target.hasItem('griseousorb')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.add('-activate', source, 'move: Skill Swap');\n\t\t\tsource.setAbility(targetAbility);\n\t\t\ttarget.setAbility(sourceAbility);\n\t\t},\n\t},\n\tsleeptalk: {\n\t\tinherit: true,\n\t\tonTryHit(pokemon) {\n\t\t\treturn !pokemon.volatiles['choicelock'] && !pokemon.volatiles['encore'];\n\t\t},\n\t},\n\tsnatch: {\n\t\tinherit: true,\n\t\tflags: { bypasssub: 1, noassist: 1, failcopycat: 1 },\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-singleturn', pokemon, 'Snatch');\n\t\t\t},\n\t\t\tonAnyPrepareHitPriority: -1,\n\t\t\tonAnyPrepareHit(source, target, move) {\n\t\t\t\tconst snatchUser = this.effectState.source;\n\t\t\t\tif (snatchUser.isSkyDropped()) return;\n\t\t\t\tif (!move || move.isZ || move.isMax || !move.flags['snatch']) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsnatchUser.removeVolatile('snatch');\n\t\t\t\tthis.add('-activate', snatchUser, 'move: Snatch', `[of] ${source}`);\n\t\t\t\tthis.actions.useMove(move.id, snatchUser);\n\t\t\t\treturn null;\n\t\t\t},\n\t\t},\n\t},\n\tsnore: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, sound: 1, metronome: 1 },\n\t},\n\tspikes: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1, mustpressure: 1 },\n\t\tcondition: {\n\t\t\t// this is a side condition\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'Spikes');\n\t\t\t\tthis.effectState.layers = 1;\n\t\t\t},\n\t\t\tonSideRestart(side) {\n\t\t\t\tif (this.effectState.layers >= 3) return false;\n\t\t\t\tthis.add('-sidestart', side, 'Spikes');\n\t\t\t\tthis.effectState.layers++;\n\t\t\t},\n\t\t\tonEntryHazard(pokemon) {\n\t\t\t\tif (!pokemon.isGrounded() || pokemon.hasItem('heavydutyboots')) return;\n\t\t\t\tconst damageAmounts = [0, 3, 4, 6]; // 1/8, 1/6, 1/4\n\t\t\t\tthis.damage(damageAmounts[this.effectState.layers] * pokemon.maxhp / 24);\n\t\t\t},\n\t\t},\n\t},\n\tspite: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t},\n\tstealthrock: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1, mustpressure: 1 },\n\t\tcondition: {\n\t\t\t// this is a side condition\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'move: Stealth Rock');\n\t\t\t},\n\t\t\tonEntryHazard(pokemon) {\n\t\t\t\tif (pokemon.hasItem('heavydutyboots')) return;\n\t\t\t\tconst typeMod = this.clampIntRange(pokemon.runEffectiveness(this.dex.getActiveMove('stealthrock')), -6, 6);\n\t\t\t\tthis.damage(pokemon.maxhp * 2 ** typeMod / 8);\n\t\t\t},\n\t\t},\n\t},\n\tstruggle: {\n\t\tinherit: true,\n\t\tflags: {\n\t\t\tcontact: 1, protect: 1, failencore: 1, failmefirst: 1,\n\t\t\tnoassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1, nosketch: 1,\n\t\t},\n\t\tonModifyMove(move) {\n\t\t\tmove.type = '???';\n\t\t},\n\t},\n\tsubstitute: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-start', target, 'Substitute');\n\t\t\t\tthis.effectState.hp = Math.floor(target.maxhp / 4);\n\t\t\t\tdelete target.volatiles['partiallytrapped'];\n\t\t\t},\n\t\t\tonTryPrimaryHitPriority: -1,\n\t\t\tonTryPrimaryHit(target, source, move) {\n\t\t\t\tif (target === source || move.flags['bypasssub']) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet damage = this.actions.getDamage(source, target, move);\n\t\t\t\tif (!damage && damage !== 0) {\n\t\t\t\t\tthis.add('-fail', source);\n\t\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tdamage = this.runEvent('SubDamage', target, source, move, damage);\n\t\t\t\tif (!damage) {\n\t\t\t\t\treturn damage;\n\t\t\t\t}\n\t\t\t\tif (damage > target.volatiles['substitute'].hp) {\n\t\t\t\t\tdamage = target.volatiles['substitute'].hp as number;\n\t\t\t\t}\n\t\t\t\ttarget.volatiles['substitute'].hp -= damage;\n\t\t\t\tsource.lastDamage = damage;\n\t\t\t\tif (target.volatiles['substitute'].hp <= 0) {\n\t\t\t\t\ttarget.removeVolatile('substitute');\n\t\t\t\t\ttarget.addVolatile('substitutebroken');\n\t\t\t\t\tif (target.volatiles['substitutebroken']) target.volatiles['substitutebroken'].move = move.id;\n\t\t\t\t\tif (move.ohko) this.add('-ohko');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-activate', target, 'Substitute', '[damage]');\n\t\t\t\t}\n\t\t\t\tif (move.recoil && damage) {\n\t\t\t\t\tthis.damage(this.actions.calcRecoilDamage(damage, move, source), source, target, 'recoil');\n\t\t\t\t}\n\t\t\t\tif (move.drain) {\n\t\t\t\t\tthis.heal(Math.ceil(damage * move.drain[0] / move.drain[1]), source, target, 'drain');\n\t\t\t\t}\n\t\t\t\tthis.runEvent('AfterSubDamage', target, source, move, damage);\n\t\t\t\treturn this.HIT_SUBSTITUTE;\n\t\t\t},\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'Substitute');\n\t\t\t},\n\t\t},\n\t},\n\tsuckerpunch: {\n\t\tinherit: true,\n\t\tonTry(source, target) {\n\t\t\tconst action = this.queue.willMove(target);\n\t\t\tif (!action || action.choice !== 'move' || action.move.category === 'Status' || target.volatiles['mustrecharge']) {\n\t\t\t\tthis.add('-fail', source);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t},\n\tswallow: {\n\t\tinherit: true,\n\t\tonTry(source) {\n\t\t\treturn !!source.volatiles['stockpile'];\n\t\t},\n\t},\n\tswitcheroo: {\n\t\tinherit: true,\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target.hasAbility('multitype') || source.hasAbility('multitype')) return false;\n\t\t},\n\t},\n\tsynthesis: {\n\t\tinherit: true,\n\t\tonHit(pokemon) {\n\t\t\tif (this.field.isWeather(['sunnyday', 'desolateland'])) {\n\t\t\t\tthis.heal(pokemon.maxhp * 2 / 3);\n\t\t\t} else if (this.field.isWeather(['raindance', 'primordialsea', 'sandstorm', 'hail'])) {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 4);\n\t\t\t} else {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 2);\n\t\t\t}\n\t\t},\n\t},\n\ttackle: {\n\t\tinherit: true,\n\t\taccuracy: 95,\n\t\tbasePower: 35,\n\t},\n\ttailglow: {\n\t\tinherit: true,\n\t\tboosts: {\n\t\t\tspa: 2,\n\t\t},\n\t},\n\ttailwind: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 3,\n\t\t\tdurationCallback(target, source, effect) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-activate', source, 'ability: Persistent', '[move] Tailwind');\n\t\t\t\t\treturn 5;\n\t\t\t\t}\n\t\t\t\treturn 3;\n\t\t\t},\n\t\t\tonSideStart(side, source) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-sidestart', side, 'move: Tailwind', '[persistent]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-sidestart', side, 'move: Tailwind');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonModifySpe(spe) {\n\t\t\t\treturn spe * 2;\n\t\t\t},\n\t\t\tonSideResidualOrder: 5,\n\t\t\tonSideEnd(side) {\n\t\t\t\tthis.add('-sideend', side, 'move: Tailwind');\n\t\t\t},\n\t\t},\n\t},\n\ttaunt: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t\tcondition: {\n\t\t\tdurationCallback() {\n\t\t\t\treturn this.random(3, 6);\n\t\t\t},\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-start', target, 'move: Taunt');\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 15,\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'move: Taunt');\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (this.dex.moves.get(moveSlot.id).category === 'Status') {\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBeforeMovePriority: 5,\n\t\t\tonBeforeMove(attacker, defender, move) {\n\t\t\t\tif (move.category === 'Status') {\n\t\t\t\t\tthis.add('cant', attacker, 'move: Taunt', move);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tthrash: {\n\t\tinherit: true,\n\t\tbasePower: 90,\n\t\tpp: 20,\n\t\tonAfterMove() {},\n\t},\n\ttorment: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t},\n\ttoxic: {\n\t\tinherit: true,\n\t\taccuracy: 85,\n\t},\n\ttoxicspikes: {\n\t\tinherit: true,\n\t\tflags: { metronome: 1, mustpressure: 1 },\n\t\tcondition: {\n\t\t\t// this is a side condition\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'move: Toxic Spikes');\n\t\t\t\tthis.effectState.layers = 1;\n\t\t\t},\n\t\t\tonSideRestart(side) {\n\t\t\t\tif (this.effectState.layers >= 2) return false;\n\t\t\t\tthis.add('-sidestart', side, 'move: Toxic Spikes');\n\t\t\t\tthis.effectState.layers++;\n\t\t\t},\n\t\t\tonEntryHazard(pokemon) {\n\t\t\t\tif (!pokemon.isGrounded()) return;\n\t\t\t\tif (pokemon.hasType('Poison')) {\n\t\t\t\t\tthis.add('-sideend', pokemon.side, 'move: Toxic Spikes', `[of] ${pokemon}`);\n\t\t\t\t\tpokemon.side.removeSideCondition('toxicspikes');\n\t\t\t\t} else if (pokemon.volatiles['substitute'] || pokemon.hasType('Steel')) {\n\t\t\t\t\t// do nothing\n\t\t\t\t} else if (this.effectState.layers >= 2) {\n\t\t\t\t\tpokemon.trySetStatus('tox', pokemon.side.foe.active[0]);\n\t\t\t\t} else {\n\t\t\t\t\tpokemon.trySetStatus('psn', pokemon.side.foe.active[0]);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\ttransform: {\n\t\tinherit: true,\n\t\tflags: { bypasssub: 1, metronome: 1, failencore: 1 },\n\t},\n\ttrick: {\n\t\tinherit: true,\n\t\tonTryHit(target, source, move) {\n\t\t\tif (target.hasAbility('multitype') || source.hasAbility('multitype')) return false;\n\t\t},\n\t},\n\ttrickroom: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(source, effect) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-activate', source, 'ability: Persistent', '[move] Trick Room');\n\t\t\t\t\treturn 7;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonFieldStart(target, source) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Trick Room', `[of] ${source}`, '[persistent]');\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Trick Room', `[of] ${source}`);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldRestart(target, source) {\n\t\t\t\tthis.field.removePseudoWeather('trickroom');\n\t\t\t},\n\t\t\t// Speed modification is changed in Pokemon.getActionSpeed() in sim/pokemon.js\n\t\t\tonFieldResidualOrder: 13,\n\t\t\tonFieldEnd() {\n\t\t\t\tthis.add('-fieldend', 'move: Trick Room');\n\t\t\t},\n\t\t},\n\t},\n\tuproar: {\n\t\tinherit: true,\n\t\tbasePower: 50,\n\t\tcondition: {\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-start', target, 'Uproar');\n\t\t\t\t// 3-6 turns\n\t\t\t\tthis.effectState.duration = this.random(3, 7);\n\t\t\t},\n\t\t\tonResidual(target) {\n\t\t\t\tif (target.volatiles['throatchop']) {\n\t\t\t\t\ttarget.removeVolatile('uproar');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target.lastMove && target.lastMove.id === 'struggle') {\n\t\t\t\t\t// don't lock\n\t\t\t\t\tdelete target.volatiles['uproar'];\n\t\t\t\t}\n\t\t\t\tthis.add('-start', target, 'Uproar', '[upkeep]');\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 11,\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'Uproar');\n\t\t\t},\n\t\t\tonLockMove: 'uproar',\n\t\t\tonAnySetStatus(status, pokemon) {\n\t\t\t\tif (status.id === 'slp') {\n\t\t\t\t\tif (pokemon === this.effectState.target) {\n\t\t\t\t\t\tthis.add('-fail', pokemon, 'slp', '[from] Uproar', '[msg]');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.add('-fail', pokemon, 'slp', '[from] Uproar');\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tvolttackle: {\n\t\tinherit: true,\n\t\trecoil: [1, 3],\n\t},\n\twatersport: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-start', pokemon, 'move: Water Sport');\n\t\t\t},\n\t\t\tonAnyBasePowerPriority: 3,\n\t\t\tonAnyBasePower(basePower, user, target, move) {\n\t\t\t\tif (move.type === 'Fire') {\n\t\t\t\t\tthis.debug('Water Sport weaken');\n\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\twhirlpool: {\n\t\tinherit: true,\n\t\taccuracy: 70,\n\t\tbasePower: 15,\n\t},\n\twhirlwind: {\n\t\tinherit: true,\n\t\tflags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },\n\t},\n\twish: {\n\t\tinherit: true,\n\t\tflags: { heal: 1, metronome: 1 },\n\t\tslotCondition: 'Wish',\n\t\tcondition: {\n\t\t\tduration: 2,\n\t\t\tonResidualOrder: 7,\n\t\t\tonEnd(target) {\n\t\t\t\tif (!target.fainted) {\n\t\t\t\t\tconst source = this.effectState.source;\n\t\t\t\t\tconst damage = this.heal(target.baseMaxhp / 2, target, target);\n\t\t\t\t\tif (damage) this.add('-heal', target, target.getHealth, '[from] move: Wish', '[wisher] ' + source.name);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\twoodhammer: {\n\t\tinherit: true,\n\t\trecoil: [1, 3],\n\t},\n\tworryseed: {\n\t\tinherit: true,\n\t\tonTryHit(pokemon) {\n\t\t\tconst bannedAbilities = ['multitype', 'truant'];\n\t\t\tif (bannedAbilities.includes(pokemon.ability) || pokemon.hasItem('griseousorb')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t},\n\twrap: {\n\t\tinherit: true,\n\t\taccuracy: 85,\n\t},\n\twringout: {\n\t\tinherit: true,\n\t\tbasePowerCallback(pokemon, target) {\n\t\t\tconst bp = Math.floor(target.hp * 120 / target.maxhp) + 1;\n\t\t\tthis.debug(`BP for ${target.hp}/${target.maxhp} HP: ${bp}`);\n\t\t\treturn bp;\n\t\t},\n\t},\n\tyawn: {\n\t\tinherit: true,\n\t\tcondition: {\n\t\t\tnoCopy: true, // doesn't get copied by Baton Pass\n\t\t\tduration: 2,\n\t\t\tonStart(target, source) {\n\t\t\t\tthis.add('-start', target, 'move: Yawn', `[of] ${source}`);\n\t\t\t},\n\t\t\tonResidualOrder: 10,\n\t\t\tonResidualSubOrder: 19,\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'move: Yawn', '[silent]');\n\t\t\t\ttarget.trySetStatus('slp', this.effectState.source);\n\t\t\t},\n\t\t},\n\t},\n};\n"], "mappings": "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", "names": ["type"] }