{ "version": 3, "sources": ["../../../../../data/mods/gen1/moves.ts"], "sourcesContent": ["/**\r\n * A lot of Gen 1 moves have to be updated due to different mechanics.\r\n * Some moves have had major changes, such as Bite's typing.\r\n */\r\n\r\nexport const Moves: {[k: string]: ModdedMoveData} = {\r\n\tacid: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 33,\r\n\t\t\tboosts: {\r\n\t\t\t\tdef: -1,\r\n\t\t\t},\r\n\t\t},\r\n\t\ttarget: \"normal\",\r\n\t},\r\n\tamnesia: {\r\n\t\tinherit: true,\r\n\t\tboosts: {\r\n\t\t\tspa: 2,\r\n\t\t\tspd: 2,\r\n\t\t},\r\n\t},\r\n\taurorabeam: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 33,\r\n\t\t\tboosts: {\r\n\t\t\t\tatk: -1,\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tbide: {\r\n\t\tinherit: true,\r\n\t\tpriority: 0,\r\n\t\taccuracy: true,\r\n\t\tcondition: {\r\n\t\t\tonStart(pokemon) {\r\n\t\t\t\tthis.effectState.damage = 0;\r\n\t\t\t\tthis.effectState.time = this.random(2, 4);\r\n\t\t\t\tthis.add('-start', pokemon, 'Bide');\r\n\t\t\t},\r\n\t\t\tonBeforeMove(pokemon, t, move) {\r\n\t\t\t\tconst currentMove = this.dex.getActiveMove('bide');\r\n\t\t\t\tif (pokemon.volatiles['disable']?.move === 'bide') {\r\n\t\t\t\t\tthis.add('cant', pokemon, 'Disable', currentMove);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.effectState.damage += this.lastDamage;\r\n\t\t\t\tthis.effectState.time--;\r\n\t\t\t\tif (!this.effectState.time) {\r\n\t\t\t\t\tthis.add('-end', pokemon, currentMove);\r\n\t\t\t\t\tif (!this.effectState.damage) {\r\n\t\t\t\t\t\tthis.debug(\"Bide failed because no damage was stored\");\r\n\t\t\t\t\t\tthis.add('-fail', pokemon);\r\n\t\t\t\t\t\tpokemon.removeVolatile('bide');\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst target = this.getRandomTarget(pokemon, 'Pound');\r\n\t\t\t\t\tthis.actions.moveHit(target, pokemon, currentMove, {damage: this.effectState.damage * 2} as ActiveMove);\r\n\t\t\t\t\tpokemon.removeVolatile('bide');\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.add('-activate', pokemon, 'Bide');\r\n\t\t\t\treturn false;\r\n\t\t\t},\r\n\t\t\tonDisableMove(pokemon) {\r\n\t\t\t\tif (!pokemon.hasMove('bide')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\r\n\t\t\t\t\tif (moveSlot.id !== 'bide') {\r\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\ttype: \"???\", // Will look as Normal but it's STAB-less\r\n\t},\r\n\tbind: {\r\n\t\tinherit: true,\r\n\t\tignoreImmunity: true,\r\n\t\tvolatileStatus: 'partiallytrapped',\r\n\t\tself: {\r\n\t\t\tvolatileStatus: 'partialtrappinglock',\r\n\t\t},\r\n\t\t// FIXME: onBeforeMove(pokemon, target) {target.removeVolatile('mustrecharge')}\r\n\t\tonHit(target, source) {\r\n\t\t\t/**\r\n\t\t\t * The duration of the partially trapped must be always renewed to 2\r\n\t\t\t * so target doesn't move on trapper switch out as happens in gen 1.\r\n\t\t\t * However, this won't happen if there's no switch and the trapper is\r\n\t\t\t * about to end its partial trapping.\r\n\t\t\t **/\r\n\t\t\tif (target.volatiles['partiallytrapped']) {\r\n\t\t\t\tif (source.volatiles['partialtrappinglock'] && source.volatiles['partialtrappinglock'].duration > 1) {\r\n\t\t\t\t\ttarget.volatiles['partiallytrapped'].duration = 2;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t},\r\n\tbite: {\r\n\t\tinherit: true,\r\n\t\tcategory: \"Physical\",\r\n\t\tsecondary: {\r\n\t\t\tchance: 10,\r\n\t\t\tvolatileStatus: 'flinch',\r\n\t\t},\r\n\t\ttype: \"Normal\",\r\n\t},\r\n\tblizzard: {\r\n\t\tinherit: true,\r\n\t\taccuracy: 90,\r\n\t\ttarget: \"normal\",\r\n\t},\r\n\tbubble: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 33,\r\n\t\t\tboosts: {\r\n\t\t\t\tspe: -1,\r\n\t\t\t},\r\n\t\t},\r\n\t\ttarget: \"normal\",\r\n\t},\r\n\tbubblebeam: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 33,\r\n\t\t\tboosts: {\r\n\t\t\t\tspe: -1,\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tclamp: {\r\n\t\tinherit: true,\r\n\t\taccuracy: 75,\r\n\t\tpp: 10,\r\n\t\tvolatileStatus: 'partiallytrapped',\r\n\t\tself: {\r\n\t\t\tvolatileStatus: 'partialtrappinglock',\r\n\t\t},\r\n\t\t// FIXME: onBeforeMove(pokemon, target) {target.removeVolatile('mustrecharge')}\r\n\t\tonHit(target, source) {\r\n\t\t\t/**\r\n\t\t\t * The duration of the partially trapped must be always renewed to 2\r\n\t\t\t * so target doesn't move on trapper switch out as happens in gen 1.\r\n\t\t\t * However, this won't happen if there's no switch and the trapper is\r\n\t\t\t * about to end its partial trapping.\r\n\t\t\t **/\r\n\t\t\tif (target.volatiles['partiallytrapped']) {\r\n\t\t\t\tif (source.volatiles['partialtrappinglock'] && source.volatiles['partialtrappinglock'].duration > 1) {\r\n\t\t\t\t\ttarget.volatiles['partiallytrapped'].duration = 2;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t},\r\n\tconstrict: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 33,\r\n\t\t\tboosts: {\r\n\t\t\t\tspe: -1,\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tconversion: {\r\n\t\tinherit: true,\r\n\t\ttarget: \"normal\",\r\n\t\tonHit(target, source) {\r\n\t\t\tsource.setType(target.getTypes(true));\r\n\t\t\tthis.add('-start', source, 'typechange', source.types.join('/'), '[from] move: Conversion', '[of] ' + target);\r\n\t\t},\r\n\t},\r\n\tcounter: {\r\n\t\tinherit: true,\r\n\t\tignoreImmunity: true,\r\n\t\twillCrit: false,\r\n\t\tbasePower: 1,\r\n\t\tdamageCallback(pokemon, target) {\r\n\t\t\t// Counter mechanics in gen 1:\r\n\t\t\t// - a move is Counterable if it is Normal or Fighting type, has nonzero Base Power, and is not Counter\r\n\t\t\t// - if Counter is used by the player, it will succeed if the opponent's last used move is Counterable\r\n\t\t\t// - if Counter is used by the opponent, it will succeed if the player's last selected move is Counterable\r\n\t\t\t// - (Counter will thus desync if the target's last used move is not as counterable as the target's last selected move)\r\n\t\t\t// - if Counter succeeds it will deal twice the last move damage dealt in battle (even if it's from a different pokemon because of a switch)\r\n\r\n\t\t\tconst lastMove = target.side.lastMove && this.dex.moves.get(target.side.lastMove.id);\r\n\t\t\tconst lastMoveIsCounterable = lastMove && lastMove.basePower > 0 &&\r\n\t\t\t\t['Normal', 'Fighting'].includes(lastMove.type) && lastMove.id !== 'counter';\r\n\r\n\t\t\tconst lastSelectedMove = target.side.lastSelectedMove && this.dex.moves.get(target.side.lastSelectedMove);\r\n\t\t\tconst lastSelectedMoveIsCounterable = lastSelectedMove && lastSelectedMove.basePower > 0 &&\r\n\t\t\t\t['Normal', 'Fighting'].includes(lastSelectedMove.type) && lastSelectedMove.id !== 'counter';\r\n\r\n\t\t\tif (!lastMoveIsCounterable && !lastSelectedMoveIsCounterable) {\r\n\t\t\t\tthis.debug(\"Gen 1 Counter: last move was not Counterable\");\r\n\t\t\t\tthis.add('-fail', pokemon);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (this.lastDamage <= 0) {\r\n\t\t\t\tthis.debug(\"Gen 1 Counter: no previous damage exists\");\r\n\t\t\t\tthis.add('-fail', pokemon);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!lastMoveIsCounterable || !lastSelectedMoveIsCounterable) {\r\n\t\t\t\tthis.hint(\"Desync Clause Mod activated!\");\r\n\t\t\t\tthis.add('-fail', pokemon);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn 2 * this.lastDamage;\r\n\t\t},\r\n\t},\r\n\tcrabhammer: {\r\n\t\tinherit: true,\r\n\t\tcritRatio: 2,\r\n\t},\r\n\tdig: {\r\n\t\tinherit: true,\r\n\t\tbasePower: 100,\r\n\t\tcondition: {},\r\n\t\tonTryMove(attacker, defender, move) {\r\n\t\t\tif (attacker.removeVolatile('twoturnmove')) {\r\n\t\t\t\tattacker.removeVolatile('invulnerability');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.add('-prepare', attacker, move.name);\r\n\t\t\tattacker.addVolatile('twoturnmove', defender);\r\n\t\t\tattacker.addVolatile('invulnerability', defender);\r\n\t\t\treturn null;\r\n\t\t},\r\n\t},\r\n\tdisable: {\r\n\t\tnum: 50,\r\n\t\taccuracy: 55,\r\n\t\tbasePower: 0,\r\n\t\tcategory: \"Status\",\r\n\t\tname: \"Disable\",\r\n\t\tpp: 20,\r\n\t\tpriority: 0,\r\n\t\tflags: {protect: 1, mirror: 1, bypasssub: 1},\r\n\t\tvolatileStatus: 'disable',\r\n\t\tonTryHit(target) {\r\n\t\t\t// This function should not return if the checks are met. Adding && undefined ensures this happens.\r\n\t\t\treturn target.moveSlots.some(ms => ms.pp > 0) &&\r\n\t\t\t\t!('disable' in target.volatiles) &&\r\n\t\t\t\tundefined;\r\n\t\t},\r\n\t\tcondition: {\r\n\t\t\tonStart(pokemon) {\r\n\t\t\t\t// disable can only select moves that have pp > 0, hence the onTryHit modification\r\n\t\t\t\tconst moveSlot = this.sample(pokemon.moveSlots.filter(ms => ms.pp > 0));\r\n\t\t\t\tthis.add('-start', pokemon, 'Disable', moveSlot.move);\r\n\t\t\t\tthis.effectState.move = moveSlot.id;\r\n\t\t\t\t// 1-8 turns (which will in effect translate to 0-7 missed turns for the target)\r\n\t\t\t\tthis.effectState.time = this.random(1, 9);\r\n\t\t\t},\r\n\t\t\tonEnd(pokemon) {\r\n\t\t\t\tthis.add('-end', pokemon, 'Disable');\r\n\t\t\t},\r\n\t\t\tonBeforeMovePriority: 7,\r\n\t\t\tonBeforeMove(pokemon, target, move) {\r\n\t\t\t\tpokemon.volatiles['disable'].time--;\r\n\t\t\t\tif (!pokemon.volatiles['disable'].time) {\r\n\t\t\t\t\tpokemon.removeVolatile('disable');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (move.id === this.effectState.move) {\r\n\t\t\t\t\tthis.add('cant', pokemon, 'Disable', move);\r\n\t\t\t\t\tpokemon.removeVolatile('twoturnmove');\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonDisableMove(pokemon) {\r\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\r\n\t\t\t\t\tif (moveSlot.id === this.effectState.move) {\r\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\tsecondary: null,\r\n\t\ttarget: \"normal\",\r\n\t\ttype: \"Normal\",\r\n\t},\r\n\tdizzypunch: {\r\n\t\tinherit: true,\r\n\t\tsecondary: null,\r\n\t},\r\n\tdoubleedge: {\r\n\t\tinherit: true,\r\n\t\tbasePower: 100,\r\n\t},\r\n\tdragonrage: {\r\n\t\tinherit: true,\r\n\t\tbasePower: 1,\r\n\t},\r\n\texplosion: {\r\n\t\tinherit: true,\r\n\t\tbasePower: 170,\r\n\t\ttarget: \"normal\",\r\n\t},\r\n\tfireblast: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 30,\r\n\t\t\tstatus: 'brn',\r\n\t\t},\r\n\t},\r\n\tfirespin: {\r\n\t\tinherit: true,\r\n\t\taccuracy: 70,\r\n\t\tbasePower: 15,\r\n\t\tvolatileStatus: 'partiallytrapped',\r\n\t\tself: {\r\n\t\t\tvolatileStatus: 'partialtrappinglock',\r\n\t\t},\r\n\t\t// FIXME: onBeforeMove(pokemon, target) {target.removeVolatile('mustrecharge')}\r\n\t\tonHit(target, source) {\r\n\t\t\t/**\r\n\t\t\t * The duration of the partially trapped must be always renewed to 2\r\n\t\t\t * so target doesn't move on trapper switch out as happens in gen 1.\r\n\t\t\t * However, this won't happen if there's no switch and the trapper is\r\n\t\t\t * about to end its partial trapping.\r\n\t\t\t **/\r\n\t\t\tif (target.volatiles['partiallytrapped']) {\r\n\t\t\t\tif (source.volatiles['partialtrappinglock'] && source.volatiles['partialtrappinglock'].duration > 1) {\r\n\t\t\t\t\ttarget.volatiles['partiallytrapped'].duration = 2;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t},\r\n\tfly: {\r\n\t\tinherit: true,\r\n\t\tcondition: {},\r\n\t\tonTryMove(attacker, defender, move) {\r\n\t\t\tif (attacker.removeVolatile('twoturnmove')) {\r\n\t\t\t\tattacker.removeVolatile('invulnerability');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.add('-prepare', attacker, move.name);\r\n\t\t\tattacker.addVolatile('twoturnmove', defender);\r\n\t\t\tattacker.addVolatile('invulnerability', defender);\r\n\t\t\treturn null;\r\n\t\t},\r\n\t},\r\n\tfocusenergy: {\r\n\t\tinherit: true,\r\n\t\tcondition: {\r\n\t\t\tonStart(pokemon) {\r\n\t\t\t\tthis.add('-start', pokemon, 'move: Focus Energy');\r\n\t\t\t},\r\n\t\t\t// This does nothing as it's dealt with on critical hit calculation.\r\n\t\t\tonModifyMove() {},\r\n\t\t},\r\n\t},\r\n\tglare: {\r\n\t\tinherit: true,\r\n\t\tignoreImmunity: true,\r\n\t},\r\n\tgrowth: {\r\n\t\tinherit: true,\r\n\t\tboosts: {\r\n\t\t\tspa: 1,\r\n\t\t\tspd: 1,\r\n\t\t},\r\n\t},\r\n\tgust: {\r\n\t\tinherit: true,\r\n\t\ttype: \"Normal\",\r\n\t},\r\n\thaze: {\r\n\t\tinherit: true,\r\n\t\tonHit(target, source) {\r\n\t\t\tthis.add('-activate', target, 'move: Haze');\r\n\t\t\tthis.add('-clearallboost', '[silent]');\r\n\t\t\tfor (const pokemon of this.getAllActive()) {\r\n\t\t\t\tpokemon.clearBoosts();\r\n\t\t\t\tif (pokemon !== source) {\r\n\t\t\t\t\tpokemon.cureStatus(true);\r\n\t\t\t\t}\r\n\t\t\t\tif (pokemon.status === 'tox') {\r\n\t\t\t\t\tpokemon.setStatus('psn');\r\n\t\t\t\t}\r\n\t\t\t\tpokemon.updateSpeed();\r\n\t\t\t\t// should only clear a specific set of volatiles\r\n\t\t\t\t// while technically the toxic counter shouldn't be cleared, the preserved toxic counter is never used again\r\n\t\t\t\t// in-game, so it is equivalent to just clear it.\r\n\t\t\t\tconst silentHack = '|[silent]';\r\n\t\t\t\tconst silentHackVolatiles = ['disable', 'confusion'];\r\n\t\t\t\tconst hazeVolatiles: {[key: string]: string} = {\r\n\t\t\t\t\t'disable': '',\r\n\t\t\t\t\t'confusion': '',\r\n\t\t\t\t\t'mist': 'Mist',\r\n\t\t\t\t\t'focusenergy': 'move: Focus Energy',\r\n\t\t\t\t\t'leechseed': 'move: Leech Seed',\r\n\t\t\t\t\t'lightscreen': 'Light Screen',\r\n\t\t\t\t\t'reflect': 'Reflect',\r\n\t\t\t\t\t'residualdmg': 'Toxic counter',\r\n\t\t\t\t};\r\n\t\t\t\tfor (const v in hazeVolatiles) {\r\n\t\t\t\t\tif (!pokemon.removeVolatile(v)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (silentHackVolatiles.includes(v)) {\r\n\t\t\t\t\t\t// these volatiles have their own onEnd method that prints, so to avoid\r\n\t\t\t\t\t\t// double printing and ensure they are still silent, we need to tack on a\r\n\t\t\t\t\t\t// silent attribute at the end\r\n\t\t\t\t\t\tthis.log[this.log.length - 1] += silentHack;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.add('-end', pokemon, hazeVolatiles[v], '[silent]');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\ttarget: \"self\",\r\n\t},\r\n\thighjumpkick: {\r\n\t\tinherit: true,\r\n\t\tonMoveFail(target, source, move) {\r\n\t\t\tthis.directDamage(1, source, target);\r\n\t\t},\r\n\t},\r\n\tjumpkick: {\r\n\t\tinherit: true,\r\n\t\tonMoveFail(target, source, move) {\r\n\t\t\tthis.directDamage(1, source, target);\r\n\t\t},\r\n\t},\r\n\tkaratechop: {\r\n\t\tinherit: true,\r\n\t\tcritRatio: 2,\r\n\t\ttype: \"Normal\",\r\n\t},\r\n\tleechseed: {\r\n\t\tinherit: true,\r\n\t\tonHit() {},\r\n\t\tcondition: {\r\n\t\t\tonStart(target) {\r\n\t\t\t\tthis.add('-start', target, 'move: Leech Seed');\r\n\t\t\t},\r\n\t\t\tonAfterMoveSelfPriority: 1,\r\n\t\t\tonAfterMoveSelf(pokemon) {\r\n\t\t\t\tconst leecher = this.getAtSlot(pokemon.volatiles['leechseed'].sourceSlot);\r\n\t\t\t\tif (!leecher || leecher.fainted || leecher.hp <= 0) {\r\n\t\t\t\t\tthis.debug('Nothing to leech into');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t// We check if leeched Pok\u00E9mon has Toxic to increase leeched damage.\r\n\t\t\t\tlet toxicCounter = 1;\r\n\t\t\t\tconst residualdmg = pokemon.volatiles['residualdmg'];\r\n\t\t\t\tif (residualdmg) {\r\n\t\t\t\t\tresidualdmg.counter++;\r\n\t\t\t\t\ttoxicCounter = residualdmg.counter;\r\n\t\t\t\t}\r\n\t\t\t\tconst toLeech = this.clampIntRange(Math.floor(pokemon.baseMaxhp / 16), 1) * toxicCounter;\r\n\t\t\t\tconst damage = this.damage(toLeech, pokemon, leecher);\r\n\t\t\t\tif (residualdmg) this.hint(\"In Gen 1, Leech Seed's damage is affected by Toxic's counter.\", true);\r\n\t\t\t\tif (!damage || toLeech > damage) {\r\n\t\t\t\t\tthis.hint(\"In Gen 1, Leech Seed recovery is not limited by the remaining HP of the seeded Pokemon.\", true);\r\n\t\t\t\t}\r\n\t\t\t\tthis.heal(toLeech, leecher, pokemon);\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tlightscreen: {\r\n\t\tnum: 113,\r\n\t\taccuracy: true,\r\n\t\tbasePower: 0,\r\n\t\tcategory: \"Status\",\r\n\t\tname: \"Light Screen\",\r\n\t\tpp: 30,\r\n\t\tpriority: 0,\r\n\t\tflags: {},\r\n\t\tvolatileStatus: 'lightscreen',\r\n\t\tonTryHit(pokemon) {\r\n\t\t\tif (pokemon.volatiles['lightscreen']) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tcondition: {\r\n\t\t\tonStart(pokemon) {\r\n\t\t\t\tthis.add('-start', pokemon, 'Light Screen');\r\n\t\t\t},\r\n\t\t},\r\n\t\ttarget: \"self\",\r\n\t\ttype: \"Psychic\",\r\n\t},\r\n\tmetronome: {\r\n\t\tinherit: true,\r\n\t\tnoMetronome: [\"Metronome\", \"Struggle\"],\r\n\t},\r\n\tmimic: {\r\n\t\tinherit: true,\r\n\t\tonHit(target, source) {\r\n\t\t\tconst moveslot = source.moves.indexOf('mimic');\r\n\t\t\tif (moveslot < 0) return false;\r\n\t\t\tconst moves = target.moves;\r\n\t\t\tconst moveid = this.sample(moves);\r\n\t\t\tif (!moveid) return false;\r\n\t\t\tconst move = this.dex.moves.get(moveid);\r\n\t\t\tsource.moveSlots[moveslot] = {\r\n\t\t\t\tmove: move.name,\r\n\t\t\t\tid: move.id,\r\n\t\t\t\tpp: source.moveSlots[moveslot].pp,\r\n\t\t\t\tmaxpp: move.pp * 8 / 5,\r\n\t\t\t\ttarget: move.target,\r\n\t\t\t\tdisabled: false,\r\n\t\t\t\tused: false,\r\n\t\t\t\tvirtual: true,\r\n\t\t\t};\r\n\t\t\tthis.add('-start', source, 'Mimic', move.name);\r\n\t\t},\r\n\t},\r\n\tmirrormove: {\r\n\t\tinherit: true,\r\n\t\tonHit(pokemon) {\r\n\t\t\tconst foe = pokemon.side.foe.active[0];\r\n\t\t\tif (!foe?.lastMove || foe.lastMove.id === 'mirrormove') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tpokemon.side.lastSelectedMove = foe.lastMove.id;\r\n\t\t\tthis.actions.useMove(foe.lastMove.id, pokemon);\r\n\t\t},\r\n\t},\r\n\tmist: {\r\n\t\tinherit: true,\r\n\t\tcondition: {\r\n\t\t\tonStart(pokemon) {\r\n\t\t\t\tthis.add('-start', pokemon, 'Mist');\r\n\t\t\t},\r\n\t\t\tonTryBoost(boost, target, source, effect) {\r\n\t\t\t\tif (effect.effectType === 'Move' && effect.category !== 'Status') return;\r\n\t\t\t\tif (source && target !== source) {\r\n\t\t\t\t\tlet showMsg = false;\r\n\t\t\t\t\tlet i: BoostID;\r\n\t\t\t\t\tfor (i in boost) {\r\n\t\t\t\t\t\tif (boost[i]! < 0) {\r\n\t\t\t\t\t\t\tdelete boost[i];\r\n\t\t\t\t\t\t\tshowMsg = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (showMsg && !(effect as ActiveMove).secondaries) {\r\n\t\t\t\t\t\tthis.add('-activate', target, 'move: Mist');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tnightshade: {\r\n\t\tinherit: true,\r\n\t\tignoreImmunity: true,\r\n\t\tbasePower: 1,\r\n\t},\r\n\tpetaldance: {\r\n\t\tinherit: true,\r\n\t\tonMoveFail() {},\r\n\t},\r\n\tpoisonsting: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 20,\r\n\t\t\tstatus: 'psn',\r\n\t\t},\r\n\t},\r\n\tpsychic: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 33,\r\n\t\t\tboosts: {\r\n\t\t\t\tspa: -1,\r\n\t\t\t\tspd: -1,\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tpsywave: {\r\n\t\tinherit: true,\r\n\t\tbasePower: 1,\r\n\t\tdamageCallback(pokemon) {\r\n\t\t\tconst psywaveDamage = (this.random(0, this.trunc(1.5 * pokemon.level)));\r\n\t\t\tif (psywaveDamage <= 0) {\r\n\t\t\t\tthis.hint(\"Desync Clause Mod activated!\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn psywaveDamage;\r\n\t\t},\r\n\t},\r\n\trage: {\r\n\t\tinherit: true,\r\n\t\tself: {\r\n\t\t\tvolatileStatus: 'rage',\r\n\t\t},\r\n\t\tcondition: {\r\n\t\t\t// Rage lock\r\n\t\t\tonStart(target, source, effect) {\r\n\t\t\t\tthis.effectState.move = 'rage';\r\n\t\t\t\tthis.effectState.accuracy = 255;\r\n\t\t\t},\r\n\t\t\tonLockMove: 'rage',\r\n\t\t\tonHit(target, source, move) {\r\n\t\t\t\t// Disable and exploding moves boost Rage even if they miss/fail, so they are dealt with separately.\r\n\t\t\t\tif (target.boosts.atk < 6 && (move.category !== 'Status' && !move.selfdestruct)) {\r\n\t\t\t\t\tthis.boost({atk: 1});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\trazorleaf: {\r\n\t\tinherit: true,\r\n\t\tcritRatio: 2,\r\n\t\ttarget: \"normal\",\r\n\t},\r\n\trazorwind: {\r\n\t\tinherit: true,\r\n\t\tcritRatio: 1,\r\n\t\ttarget: \"normal\",\r\n\t\tonTryMove(attacker, defender, move) {\r\n\t\t\tif (attacker.removeVolatile('twoturnmove')) {\r\n\t\t\t\tattacker.removeVolatile('invulnerability');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.add('-prepare', attacker, move.name);\r\n\t\t\tattacker.addVolatile('twoturnmove', defender);\r\n\t\t\treturn null;\r\n\t\t},\r\n\t},\r\n\trecover: {\r\n\t\tinherit: true,\r\n\t\theal: null,\r\n\t\tonHit(target) {\r\n\t\t\tif (target.hp === target.maxhp) return false;\r\n\t\t\t// Fail when health is 255 or 511 less than max\r\n\t\t\tif (target.hp === (target.maxhp - 255) || target.hp === (target.maxhp - 511) || target.hp === target.maxhp) {\r\n\t\t\t\tthis.hint(\"In Gen 1, recovery moves fail if (user's maximum HP - user's current HP + 1) is divisible by 256.\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis.heal(Math.floor(target.maxhp / 2), target, target);\r\n\t\t},\r\n\t},\r\n\treflect: {\r\n\t\tnum: 115,\r\n\t\taccuracy: true,\r\n\t\tbasePower: 0,\r\n\t\tcategory: \"Status\",\r\n\t\tname: \"Reflect\",\r\n\t\tpp: 20,\r\n\t\tpriority: 0,\r\n\t\tflags: {},\r\n\t\tvolatileStatus: 'reflect',\r\n\t\tonTryHit(pokemon) {\r\n\t\t\tif (pokemon.volatiles['reflect']) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tcondition: {\r\n\t\t\tonStart(pokemon) {\r\n\t\t\t\tthis.add('-start', pokemon, 'Reflect');\r\n\t\t\t},\r\n\t\t},\r\n\t\tsecondary: null,\r\n\t\ttarget: \"self\",\r\n\t\ttype: \"Psychic\",\r\n\t},\r\n\trest: {\r\n\t\tinherit: true,\r\n\t\tonTry() {},\r\n\t\tonHit(target, source, move) {\r\n\t\t\tif (target.hp === target.maxhp) return false;\r\n\t\t\t// Fail when health is 255 or 511 less than max\r\n\t\t\tif (target.hp === (target.maxhp - 255) || target.hp === (target.maxhp - 511)) {\r\n\t\t\t\tthis.hint(\"In Gen 1, recovery moves fail if (user's maximum HP - user's current HP + 1) is divisible by 256.\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!target.setStatus('slp', source, move)) return false;\r\n\t\t\ttarget.statusState.time = 2;\r\n\t\t\ttarget.statusState.startTime = 2;\r\n\t\t\tthis.heal(target.maxhp); // Aesthetic only as the healing happens after you fall asleep in-game\r\n\t\t},\r\n\t},\r\n\troar: {\r\n\t\tinherit: true,\r\n\t\tforceSwitch: false,\r\n\t\tonTryHit() {},\r\n\t\tpriority: 0,\r\n\t},\r\n\trockslide: {\r\n\t\tinherit: true,\r\n\t\tsecondary: null,\r\n\t\ttarget: \"normal\",\r\n\t},\r\n\trockthrow: {\r\n\t\tinherit: true,\r\n\t\taccuracy: 65,\r\n\t},\r\n\tsandattack: {\r\n\t\tinherit: true,\r\n\t\tignoreImmunity: true,\r\n\t\ttype: \"Normal\",\r\n\t},\r\n\tseismictoss: {\r\n\t\tinherit: true,\r\n\t\tignoreImmunity: true,\r\n\t\tbasePower: 1,\r\n\t},\r\n\tselfdestruct: {\r\n\t\tinherit: true,\r\n\t\tbasePower: 130,\r\n\t\ttarget: \"normal\",\r\n\t},\r\n\tskullbash: {\r\n\t\tinherit: true,\r\n\t\tonTryMove(attacker, defender, move) {\r\n\t\t\tif (attacker.removeVolatile('twoturnmove')) {\r\n\t\t\t\tattacker.removeVolatile('invulnerability');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.add('-prepare', attacker, move.name);\r\n\t\t\tattacker.addVolatile('twoturnmove', defender);\r\n\t\t\treturn null;\r\n\t\t},\r\n\t},\r\n\tskyattack: {\r\n\t\tinherit: true,\r\n\t\tonTryMove(attacker, defender, move) {\r\n\t\t\tif (attacker.removeVolatile('twoturnmove')) {\r\n\t\t\t\tattacker.removeVolatile('invulnerability');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.add('-prepare', attacker, move.name);\r\n\t\t\tattacker.addVolatile('twoturnmove', defender);\r\n\t\t\treturn null;\r\n\t\t},\r\n\t},\r\n\tslash: {\r\n\t\tinherit: true,\r\n\t\tcritRatio: 2,\r\n\t},\r\n\tsludge: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 40,\r\n\t\t\tstatus: 'psn',\r\n\t\t},\r\n\t},\r\n\tsolarbeam: {\r\n\t\tinherit: true,\r\n\t\tonTryMove(attacker, defender, move) {\r\n\t\t\tif (attacker.removeVolatile('twoturnmove')) {\r\n\t\t\t\tattacker.removeVolatile('invulnerability');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.add('-prepare', attacker, move.name);\r\n\t\t\tattacker.addVolatile('twoturnmove', defender);\r\n\t\t\treturn null;\r\n\t\t},\r\n\t},\r\n\tsonicboom: {\r\n\t\tinherit: true,\r\n\t\tignoreImmunity: true,\r\n\t\tbasePower: 1,\r\n\t},\r\n\tsoftboiled: {\r\n\t\tinherit: true,\r\n\t\theal: null,\r\n\t\tonHit(target) {\r\n\t\t\tif (target.hp === target.maxhp) return false;\r\n\t\t\t// Fail when health is 255 or 511 less than max\r\n\t\t\tif (target.hp === (target.maxhp - 255) || target.hp === (target.maxhp - 511) || target.hp === target.maxhp) {\r\n\t\t\t\tthis.hint(\"In Gen 1, recovery moves fail if (user's maximum HP - user's current HP + 1) is divisible by 256.\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis.heal(Math.floor(target.maxhp / 2), target, target);\r\n\t\t},\r\n\t},\r\n\tstruggle: {\r\n\t\tinherit: true,\r\n\t\tpp: 10,\r\n\t\trecoil: [1, 2],\r\n\t\tonModifyMove() {},\r\n\t},\r\n\tsubstitute: {\r\n\t\tnum: 164,\r\n\t\taccuracy: true,\r\n\t\tbasePower: 0,\r\n\t\tcategory: \"Status\",\r\n\t\tname: \"Substitute\",\r\n\t\tpp: 10,\r\n\t\tpriority: 0,\r\n\t\tvolatileStatus: 'substitute',\r\n\t\tonTryHit(target) {\r\n\t\t\tif (target.volatiles['substitute']) {\r\n\t\t\t\tthis.add('-fail', target, 'move: Substitute');\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\t// We only prevent when hp is less than one quarter.\r\n\t\t\t// If you use substitute at exactly one quarter, you faint.\r\n\t\t\tif (target.hp < target.maxhp / 4) {\r\n\t\t\t\tthis.add('-fail', target, 'move: Substitute', '[weak]');\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tonHit(target) {\r\n\t\t\t// If max HP is 3 or less substitute makes no damage\r\n\t\t\tif (target.maxhp > 3) {\r\n\t\t\t\tthis.directDamage(target.maxhp / 4, target, target);\r\n\t\t\t}\r\n\t\t},\r\n\t\tcondition: {\r\n\t\t\tonStart(target) {\r\n\t\t\t\tthis.add('-start', target, 'Substitute');\r\n\t\t\t\tthis.effectState.hp = Math.floor(target.maxhp / 4) + 1;\r\n\t\t\t\tdelete target.volatiles['partiallytrapped'];\r\n\t\t\t},\r\n\t\t\tonTryHitPriority: -1,\r\n\t\t\tonTryHit(target, source, move) {\r\n\t\t\t\tif (move.category === 'Status') {\r\n\t\t\t\t\t// In gen 1 it only blocks:\r\n\t\t\t\t\t// poison, confusion, secondary effect confusion, stat reducing moves and Leech Seed.\r\n\t\t\t\t\tconst SubBlocked = ['lockon', 'meanlook', 'mindreader', 'nightmare'];\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tmove.status === 'psn' || move.status === 'tox' || (move.boosts && target !== source) ||\r\n\t\t\t\t\t\tmove.volatileStatus === 'confusion' || SubBlocked.includes(move.id)\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (move.volatileStatus && target === source) return;\r\n\t\t\t\t// NOTE: In future generations the damage is capped to the remaining HP of the\r\n\t\t\t\t// Substitute, here we deliberately use the uncapped damage when tracking lastDamage etc.\r\n\t\t\t\t// Also, multi-hit moves must always deal the same damage as the first hit for any subsequent hits\r\n\t\t\t\tlet uncappedDamage = move.hit > 1 ? this.lastDamage : this.actions.getDamage(source, target, move);\r\n\t\t\t\tif (move.id === 'bide') uncappedDamage = source.volatiles['bide'].damage * 2;\r\n\t\t\t\tif (!uncappedDamage && uncappedDamage !== 0) return null;\r\n\t\t\t\tuncappedDamage = this.runEvent('SubDamage', target, source, move, uncappedDamage);\r\n\t\t\t\tif (!uncappedDamage && uncappedDamage !== 0) return uncappedDamage;\r\n\t\t\t\tthis.lastDamage = uncappedDamage;\r\n\t\t\t\ttarget.volatiles['substitute'].hp -= uncappedDamage > target.volatiles['substitute'].hp ?\r\n\t\t\t\t\ttarget.volatiles['substitute'].hp : uncappedDamage;\r\n\t\t\t\tif (target.volatiles['substitute'].hp <= 0) {\r\n\t\t\t\t\ttarget.removeVolatile('substitute');\r\n\t\t\t\t\ttarget.subFainted = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.add('-activate', target, 'Substitute', '[damage]');\r\n\t\t\t\t}\r\n\t\t\t\t// Drain/recoil/secondary effect confusion do not happen if the substitute breaks\r\n\t\t\t\tif (target.volatiles['substitute']) {\r\n\t\t\t\t\tif (move.recoil) {\r\n\t\t\t\t\t\tthis.damage(this.clampIntRange(Math.floor(uncappedDamage * move.recoil[0] / move.recoil[1]), 1)\r\n\t\t\t\t\t\t\t, source, target, 'recoil');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (move.drain) {\r\n\t\t\t\t\t\tconst amount = this.clampIntRange(Math.floor(uncappedDamage * move.drain[0] / move.drain[1]), 1);\r\n\t\t\t\t\t\tthis.lastDamage = amount;\r\n\t\t\t\t\t\tthis.heal(amount, source, target, 'drain');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (move.secondary?.volatileStatus === 'confusion') {\r\n\t\t\t\t\t\tconst secondary = move.secondary;\r\n\t\t\t\t\t\tif (secondary.chance === undefined || this.randomChance(Math.ceil(secondary.chance * 256 / 100) - 1, 256)) {\r\n\t\t\t\t\t\t\ttarget.addVolatile(move.secondary.volatileStatus, source, move);\r\n\t\t\t\t\t\t\tthis.hint(\r\n\t\t\t\t\t\t\t\t\"In Gen 1, moves that inflict confusion as a secondary effect can confuse targets with a Substitute, \" +\r\n\t\t\t\t\t\t\t\t\"as long as the move does not break the Substitute.\"\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.runEvent('AfterSubDamage', target, source, move, uncappedDamage);\r\n\t\t\t\t// Add here counter damage\r\n\t\t\t\tconst lastAttackedBy = target.getLastAttackedBy();\r\n\t\t\t\tif (!lastAttackedBy) {\r\n\t\t\t\t\ttarget.attackedBy.push({source: source, move: move.id, damage: uncappedDamage, slot: source.getSlot(), thisTurn: true});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlastAttackedBy.move = move.id;\r\n\t\t\t\t\tlastAttackedBy.damage = uncappedDamage;\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\tonEnd(target) {\r\n\t\t\t\tthis.add('-end', target, 'Substitute');\r\n\t\t\t},\r\n\t\t},\r\n\t\tsecondary: null,\r\n\t\ttarget: \"self\",\r\n\t\ttype: \"Normal\",\r\n\t\tflags: {},\r\n\t},\r\n\tsuperfang: {\r\n\t\tinherit: true,\r\n\t\tignoreImmunity: true,\r\n\t\tbasePower: 1,\r\n\t},\r\n\tthrash: {\r\n\t\tinherit: true,\r\n\t\tonMoveFail() {},\r\n\t},\r\n\tthunder: {\r\n\t\tinherit: true,\r\n\t\tsecondary: {\r\n\t\t\tchance: 10,\r\n\t\t\tstatus: 'par',\r\n\t\t},\r\n\t},\r\n\ttriattack: {\r\n\t\tinherit: true,\r\n\t\tonHit() {},\r\n\t\tsecondary: null,\r\n\t},\r\n\twhirlwind: {\r\n\t\tinherit: true,\r\n\t\taccuracy: 85,\r\n\t\tforceSwitch: false,\r\n\t\tonTryHit() {},\r\n\t\tpriority: 0,\r\n\t},\r\n\twingattack: {\r\n\t\tinherit: true,\r\n\t\tbasePower: 35,\r\n\t},\r\n\twrap: {\r\n\t\tinherit: true,\r\n\t\taccuracy: 85,\r\n\t\tignoreImmunity: true,\r\n\t\tvolatileStatus: 'partiallytrapped',\r\n\t\tself: {\r\n\t\t\tvolatileStatus: 'partialtrappinglock',\r\n\t\t},\r\n\t\t// FIXME: onBeforeMove(pokemon, target) {target.removeVolatile('mustrecharge')}\r\n\t\tonHit(target, source) {\r\n\t\t\t/**\r\n\t\t\t * The duration of the partially trapped must be always renewed to 2\r\n\t\t\t * so target doesn't move on trapper switch out as happens in gen 1.\r\n\t\t\t * However, this won't happen if there's no switch and the trapper is\r\n\t\t\t * about to end its partial trapping.\r\n\t\t\t **/\r\n\t\t\tif (target.volatiles['partiallytrapped']) {\r\n\t\t\t\tif (source.volatiles['partialtrappinglock'] && source.volatiles['partialtrappinglock'].duration > 1) {\r\n\t\t\t\t\ttarget.volatiles['partiallytrapped'].duration = 2;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t},\r\n};\r\n"], "mappings": "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", "names": [] }