Jofthomas's picture
Jofthomas HF staff
Upload 4781 files
5c2ed06 verified
{
"version": 3,
"sources": ["../../../../data/mods/gen3/scripts.ts"],
"sourcesContent": ["export const Scripts: ModdedBattleScriptsData = {\n\tinherit: 'gen4',\n\tgen: 3,\n\tinit() {\n\t\tconst specialTypes = ['Fire', 'Water', 'Grass', 'Ice', 'Electric', 'Dark', 'Psychic', 'Dragon'];\n\t\tlet newCategory = '';\n\t\tfor (const i in this.data.Moves) {\n\t\t\tif (!this.data.Moves[i]) console.log(i);\n\t\t\tif (this.data.Moves[i].category === 'Status') continue;\n\t\t\tnewCategory = specialTypes.includes(this.data.Moves[i].type) ? 'Special' : 'Physical';\n\t\t\tif (newCategory !== this.data.Moves[i].category) {\n\t\t\t\tthis.modData('Moves', i).category = newCategory;\n\t\t\t}\n\t\t}\n\t},\n\tpokemon: {\n\t\tinherit: true,\n\t\tgetActionSpeed() {\n\t\t\tlet speed = this.getStat('spe', false, false);\n\t\t\tconst trickRoomCheck = this.battle.ruleTable.has('twisteddimensionmod') ?\n\t\t\t\t!this.battle.field.getPseudoWeather('trickroom') : this.battle.field.getPseudoWeather('trickroom');\n\t\t\tif (trickRoomCheck) {\n\t\t\t\tspeed = -speed;\n\t\t\t}\n\t\t\tif (this.battle.quickClawRoll && this.hasItem('quickclaw')) {\n\t\t\t\tspeed = 65535;\n\t\t\t}\n\t\t\treturn speed;\n\t\t},\n\t},\n\tactions: {\n\t\tinherit: true,\n\t\tmodifyDamage(baseDamage, pokemon, target, move, suppressMessages = false) {\n\t\t\t// RSE divides modifiers into several mathematically important stages\n\t\t\t// The modifiers run earlier than other generations are called with ModifyDamagePhase1 and ModifyDamagePhase2\n\n\t\t\tif (!move.type) move.type = '???';\n\t\t\tconst type = move.type;\n\n\t\t\t// Burn\n\t\t\tif (pokemon.status === 'brn' && baseDamage && move.category === 'Physical' && !pokemon.hasAbility('guts')) {\n\t\t\t\tbaseDamage = this.battle.modify(baseDamage, 0.5);\n\t\t\t}\n\n\t\t\t// Other modifiers (Reflect/Light Screen/etc)\n\t\t\tbaseDamage = this.battle.runEvent('ModifyDamagePhase1', pokemon, target, move, baseDamage);\n\n\t\t\t// Double battle multi-hit\n\t\t\t// In Generation 3, the spread move modifier is 0.5x instead of 0.75x. Moves that hit both foes\n\t\t\t// and the user's ally, like Earthquake and Explosion, don't get affected by spread modifiers\n\t\t\tif (move.spreadHit && move.target === 'allAdjacentFoes') {\n\t\t\t\tconst spreadModifier = move.spreadModifier || 0.5;\n\t\t\t\tthis.battle.debug(`Spread modifier: ${spreadModifier}`);\n\t\t\t\tbaseDamage = this.battle.modify(baseDamage, spreadModifier);\n\t\t\t}\n\n\t\t\t// Weather\n\t\t\tbaseDamage = this.battle.runEvent('WeatherModifyDamage', pokemon, target, move, baseDamage);\n\n\t\t\tif (move.category === 'Physical' && !Math.floor(baseDamage)) {\n\t\t\t\tbaseDamage = 1;\n\t\t\t}\n\n\t\t\tbaseDamage += 2;\n\n\t\t\tconst isCrit = target.getMoveHitData(move).crit;\n\t\t\tif (isCrit) {\n\t\t\t\tbaseDamage = this.battle.modify(baseDamage, move.critModifier || 2);\n\t\t\t}\n\n\t\t\t// Mod 2 (Damage is floored after all multipliers are in)\n\t\t\tbaseDamage = Math.floor(this.battle.runEvent('ModifyDamagePhase2', pokemon, target, move, baseDamage));\n\n\t\t\t// STAB\n\t\t\t// The \"???\" type never gets STAB\n\t\t\t// Not even if you Roost in Gen 4 and somehow manage to use\n\t\t\t// Struggle in the same turn.\n\t\t\t// (On second thought, it might be easier to get a MissingNo.)\n\t\t\tif (type !== '???') {\n\t\t\t\tlet stab: number | [number, number] = 1;\n\t\t\t\tif (move.forceSTAB || pokemon.hasType(type)) {\n\t\t\t\t\tstab = 1.5;\n\t\t\t\t}\n\t\t\t\tstab = this.battle.runEvent('ModifySTAB', pokemon, target, move, stab);\n\t\t\t\tbaseDamage = this.battle.modify(baseDamage, stab);\n\t\t\t}\n\t\t\t// types\n\t\t\tlet typeMod = target.runEffectiveness(move);\n\t\t\ttypeMod = this.battle.clampIntRange(typeMod, -6, 6);\n\t\t\ttarget.getMoveHitData(move).typeMod = typeMod;\n\t\t\tif (typeMod > 0) {\n\t\t\t\tif (!suppressMessages) this.battle.add('-supereffective', target);\n\n\t\t\t\tfor (let i = 0; i < typeMod; i++) {\n\t\t\t\t\tbaseDamage *= 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeMod < 0) {\n\t\t\t\tif (!suppressMessages) this.battle.add('-resisted', target);\n\n\t\t\t\tfor (let i = 0; i > typeMod; i--) {\n\t\t\t\t\tbaseDamage = Math.floor(baseDamage / 2);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isCrit && !suppressMessages) this.battle.add('-crit', target);\n\n\t\t\t// Final modifier.\n\t\t\tbaseDamage = this.battle.runEvent('ModifyDamage', pokemon, target, move, baseDamage);\n\n\t\t\t// this is not a modifier\n\t\t\tbaseDamage = this.battle.randomizer(baseDamage);\n\n\t\t\tif (!Math.floor(baseDamage)) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn Math.floor(baseDamage);\n\t\t},\n\t\tuseMoveInner(moveOrMoveName, pokemon, options) {\n\t\t\tlet sourceEffect = options?.sourceEffect;\n\t\t\tlet target = options?.target;\n\t\t\tif (!sourceEffect && this.battle.effect.id) sourceEffect = this.battle.effect;\n\t\t\tif (sourceEffect && sourceEffect.id === 'instruct') sourceEffect = null;\n\n\t\t\tlet move = this.dex.getActiveMove(moveOrMoveName);\n\t\t\tpokemon.lastMoveUsed = move;\n\n\t\t\tif (this.battle.activeMove) {\n\t\t\t\tmove.priority = this.battle.activeMove.priority;\n\t\t\t}\n\t\t\tconst baseTarget = move.target;\n\t\t\tif (target === undefined) target = this.battle.getRandomTarget(pokemon, move);\n\t\t\tif (move.target === 'self' || move.target === 'allies') {\n\t\t\t\ttarget = pokemon;\n\t\t\t}\n\t\t\tif (sourceEffect) {\n\t\t\t\tmove.sourceEffect = sourceEffect.id;\n\t\t\t\tmove.ignoreAbility = false;\n\t\t\t}\n\t\t\tlet moveResult = false;\n\n\t\t\tthis.battle.setActiveMove(move, pokemon, target);\n\n\t\t\tthis.battle.singleEvent('ModifyMove', move, null, pokemon, target, move, move);\n\t\t\tif (baseTarget !== move.target) {\n\t\t\t\t// Target changed in ModifyMove, so we must adjust it here\n\t\t\t\t// Adjust before the next event so the correct target is passed to the\n\t\t\t\t// event\n\t\t\t\ttarget = this.battle.getRandomTarget(pokemon, move);\n\t\t\t}\n\t\t\tmove = this.battle.runEvent('ModifyMove', pokemon, target, move, move);\n\t\t\tif (baseTarget !== move.target) {\n\t\t\t\t// Adjust again\n\t\t\t\ttarget = this.battle.getRandomTarget(pokemon, move);\n\t\t\t}\n\t\t\tif (!move || pokemon.fainted) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet attrs = '';\n\n\t\t\tlet movename = move.name;\n\t\t\tif (move.id === 'hiddenpower') movename = 'Hidden Power';\n\t\t\tif (sourceEffect) attrs += `|[from]${this.dex.conditions.get(sourceEffect)}`;\n\t\t\tthis.battle.addMove('move', pokemon, movename, `${target}${attrs}`);\n\n\t\t\tif (!target) {\n\t\t\t\tthis.battle.attrLastMove('[notarget]');\n\t\t\t\tthis.battle.add('-notarget', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst { targets, pressureTargets } = pokemon.getMoveTargets(move, target);\n\n\t\t\tif (!sourceEffect || sourceEffect.id === 'pursuit') {\n\t\t\t\tlet extraPP = 0;\n\t\t\t\tfor (const source of pressureTargets) {\n\t\t\t\t\tconst ppDrop = this.battle.runEvent('DeductPP', source, pokemon, move);\n\t\t\t\t\tif (ppDrop !== true) {\n\t\t\t\t\t\textraPP += ppDrop || 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (extraPP > 0) {\n\t\t\t\t\tpokemon.deductPP(move, extraPP);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!this.battle.singleEvent('TryMove', move, null, pokemon, target, move) ||\n\t\t\t\t!this.battle.runEvent('TryMove', pokemon, target, move)) {\n\t\t\t\tmove.mindBlownRecoil = false;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.battle.singleEvent('UseMoveMessage', move, null, pokemon, target, move);\n\n\t\t\tif (move.ignoreImmunity === undefined) {\n\t\t\t\tmove.ignoreImmunity = (move.category === 'Status');\n\t\t\t}\n\n\t\t\tif (move.selfdestruct === 'always') {\n\t\t\t\tthis.battle.faint(pokemon, pokemon, move);\n\t\t\t}\n\n\t\t\tlet damage: number | false | undefined | '' = false;\n\t\t\tif (move.target === 'all' || move.target === 'foeSide' || move.target === 'allySide' || move.target === 'allyTeam') {\n\t\t\t\tdamage = this.tryMoveHit(target, pokemon, move);\n\t\t\t\tif (damage === this.battle.NOT_FAIL) pokemon.moveThisTurnResult = null;\n\t\t\t\tif (damage || damage === 0 || damage === undefined) moveResult = true;\n\t\t\t} else if (move.target === 'allAdjacent' || move.target === 'allAdjacentFoes') {\n\t\t\t\tif (!targets.length) {\n\t\t\t\t\tthis.battle.attrLastMove('[notarget]');\n\t\t\t\t\tthis.battle.add('-notarget', pokemon);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (targets.length > 1) move.spreadHit = true;\n\t\t\t\tconst hitSlots = [];\n\t\t\t\tfor (const source of targets) {\n\t\t\t\t\tconst hitResult = this.tryMoveHit(source, pokemon, move);\n\t\t\t\t\tif (hitResult || hitResult === 0 || hitResult === undefined) {\n\t\t\t\t\t\tmoveResult = true;\n\t\t\t\t\t\thitSlots.push(source.getSlot());\n\t\t\t\t\t}\n\t\t\t\t\tif (damage) {\n\t\t\t\t\t\tdamage += hitResult || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (damage !== false || hitResult !== this.battle.NOT_FAIL) damage = hitResult;\n\t\t\t\t\t}\n\t\t\t\t\tif (damage === this.battle.NOT_FAIL) pokemon.moveThisTurnResult = null;\n\t\t\t\t}\n\t\t\t\tif (move.spreadHit) this.battle.attrLastMove('[spread] ' + hitSlots.join(','));\n\t\t\t} else {\n\t\t\t\ttarget = targets[0];\n\t\t\t\tlet lacksTarget = !target || target.fainted;\n\t\t\t\tif (!lacksTarget) {\n\t\t\t\t\tif (['adjacentFoe', 'adjacentAlly', 'normal', 'randomNormal'].includes(move.target)) {\n\t\t\t\t\t\tlacksTarget = !target.isAdjacent(pokemon);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lacksTarget && !move.flags['futuremove']) {\n\t\t\t\t\tthis.battle.attrLastMove('[notarget]');\n\t\t\t\t\tthis.battle.add('-notarget', pokemon);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdamage = this.tryMoveHit(target, pokemon, move);\n\t\t\t\tif (damage === this.battle.NOT_FAIL) pokemon.moveThisTurnResult = null;\n\t\t\t\tif (damage || damage === 0 || damage === undefined) moveResult = true;\n\t\t\t}\n\t\t\tif (move.selfBoost && moveResult) this.moveHit(pokemon, pokemon, move, move.selfBoost, false, true);\n\t\t\tif (!pokemon.hp) {\n\t\t\t\tthis.battle.faint(pokemon, pokemon, move);\n\t\t\t}\n\n\t\t\tif (!moveResult) {\n\t\t\t\tthis.battle.singleEvent('MoveFail', move, null, target, pokemon, move);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!move.negateSecondary && !(move.hasSheerForce && pokemon.hasAbility('sheerforce'))) {\n\t\t\t\tthis.battle.singleEvent('AfterMoveSecondarySelf', move, null, pokemon, target, move);\n\t\t\t\tthis.battle.runEvent('AfterMoveSecondarySelf', pokemon, target, move);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\ttryMoveHit(target, pokemon, move) {\n\t\t\tthis.battle.setActiveMove(move, pokemon, target);\n\t\t\tlet naturalImmunity = false;\n\t\t\tlet accPass = true;\n\n\t\t\tlet hitResult = this.battle.singleEvent('PrepareHit', move, {}, target, pokemon, move) &&\n\t\t\t\tthis.battle.runEvent('PrepareHit', pokemon, target, move);\n\t\t\tif (!hitResult) {\n\t\t\t\tif (hitResult === false) {\n\t\t\t\t\tthis.battle.add('-fail', pokemon);\n\t\t\t\t\tthis.battle.attrLastMove('[still]');\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!this.battle.singleEvent('Try', move, null, pokemon, target, move)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (move.target === 'all' || move.target === 'foeSide' || move.target === 'allySide' || move.target === 'allyTeam') {\n\t\t\t\tif (move.target === 'all') {\n\t\t\t\t\thitResult = this.battle.runEvent('TryHitField', target, pokemon, move);\n\t\t\t\t} else {\n\t\t\t\t\thitResult = this.battle.runEvent('TryHitSide', target, pokemon, move);\n\t\t\t\t}\n\t\t\t\tif (!hitResult) {\n\t\t\t\t\tif (hitResult === false) {\n\t\t\t\t\t\tthis.battle.add('-fail', pokemon);\n\t\t\t\t\t\tthis.battle.attrLastMove('[still]');\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn this.moveHit(target, pokemon, move);\n\t\t\t}\n\n\t\t\thitResult = this.battle.runEvent('Invulnerability', target, pokemon, move);\n\t\t\tif (hitResult === false) {\n\t\t\t\tif (!move.spreadHit) this.battle.attrLastMove('[miss]');\n\t\t\t\tthis.battle.add('-miss', pokemon, target);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (move.ignoreImmunity === undefined) {\n\t\t\t\tmove.ignoreImmunity = (move.category === 'Status');\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(!move.ignoreImmunity || (move.ignoreImmunity !== true && !move.ignoreImmunity[move.type])) &&\n\t\t\t\t!target.runImmunity(move.type)\n\t\t\t) {\n\t\t\t\tnaturalImmunity = true;\n\t\t\t} else {\n\t\t\t\thitResult = this.battle.singleEvent('TryImmunity', move, {}, target, pokemon, move);\n\t\t\t\tif (hitResult === false) {\n\t\t\t\t\tnaturalImmunity = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst boostTable = [1, 4 / 3, 5 / 3, 2, 7 / 3, 8 / 3, 3];\n\n\t\t\t// calculate true accuracy\n\t\t\tlet accuracy = move.accuracy;\n\t\t\tlet boosts: SparseBoostsTable = {};\n\t\t\tlet boost: number;\n\t\t\tif (accuracy !== true) {\n\t\t\t\tif (!move.ignoreAccuracy) {\n\t\t\t\t\tboosts = this.battle.runEvent('ModifyBoost', pokemon, null, null, { ...pokemon.boosts });\n\t\t\t\t\tboost = this.battle.clampIntRange(boosts['accuracy'], -6, 6);\n\t\t\t\t\tif (boost > 0) {\n\t\t\t\t\t\taccuracy *= boostTable[boost];\n\t\t\t\t\t} else {\n\t\t\t\t\t\taccuracy /= boostTable[-boost];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!move.ignoreEvasion) {\n\t\t\t\t\tboosts = this.battle.runEvent('ModifyBoost', target, null, null, { ...target.boosts });\n\t\t\t\t\tboost = this.battle.clampIntRange(boosts['evasion'], -6, 6);\n\t\t\t\t\tif (boost > 0) {\n\t\t\t\t\t\taccuracy /= boostTable[boost];\n\t\t\t\t\t} else if (boost < 0) {\n\t\t\t\t\t\taccuracy *= boostTable[-boost];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (move.ohko) { // bypasses accuracy modifiers\n\t\t\t\tif (!target.isSemiInvulnerable()) {\n\t\t\t\t\taccuracy = 30;\n\t\t\t\t\tif (pokemon.level >= target.level && (move.ohko === true || !target.hasType(move.ohko))) {\n\t\t\t\t\t\taccuracy += (pokemon.level - target.level);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.battle.add('-immune', target, '[ohko]');\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taccuracy = this.battle.runEvent('ModifyAccuracy', target, pokemon, move, accuracy);\n\t\t\t}\n\t\t\tif (move.alwaysHit) {\n\t\t\t\taccuracy = true; // bypasses ohko accuracy modifiers\n\t\t\t} else {\n\t\t\t\taccuracy = this.battle.runEvent('Accuracy', target, pokemon, move, accuracy);\n\t\t\t}\n\t\t\tif (accuracy !== true && !this.battle.randomChance(accuracy, 100)) {\n\t\t\t\taccPass = false;\n\t\t\t}\n\n\t\t\tif (accPass) {\n\t\t\t\thitResult = this.battle.runEvent('TryHit', target, pokemon, move);\n\t\t\t\tif (!hitResult) {\n\t\t\t\t\tif (hitResult === false) {\n\t\t\t\t\t\tthis.battle.add('-fail', pokemon);\n\t\t\t\t\t\tthis.battle.attrLastMove('[still]');\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (naturalImmunity) {\n\t\t\t\t\tthis.battle.add('-immune', target);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (naturalImmunity) {\n\t\t\t\t\tthis.battle.add('-immune', target);\n\t\t\t\t} else {\n\t\t\t\t\tif (!move.spreadHit) this.battle.attrLastMove('[miss]');\n\t\t\t\t\tthis.battle.add('-miss', pokemon, target);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tmove.totalDamage = 0;\n\t\t\tlet damage: number | undefined | false = 0;\n\t\t\tpokemon.lastDamage = 0;\n\t\t\tif (move.multihit) {\n\t\t\t\tlet hits = move.multihit;\n\t\t\t\tif (Array.isArray(hits)) {\n\t\t\t\t\t// yes, it's hardcoded... meh\n\t\t\t\t\tif (hits[0] === 2 && hits[1] === 5) {\n\t\t\t\t\t\thits = this.battle.sample([2, 2, 2, 3, 3, 3, 4, 5]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thits = this.battle.random(hits[0], hits[1] + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\thits = Math.floor(hits);\n\t\t\t\tlet nullDamage = true;\n\t\t\t\tlet moveDamage: number | undefined | false;\n\t\t\t\t// There is no need to recursively check the \u00B4sleepUsable\u00B4 flag as Sleep Talk can only be used while asleep.\n\t\t\t\tconst isSleepUsable = move.sleepUsable || this.dex.moves.get(move.sourceEffect).sleepUsable;\n\t\t\t\tlet i: number;\n\t\t\t\tfor (i = 0; i < hits && target.hp && pokemon.hp; i++) {\n\t\t\t\t\tif (pokemon.status === 'slp' && !isSleepUsable) break;\n\t\t\t\t\tmove.hit = i + 1;\n\n\t\t\t\t\tif (move.multiaccuracy && i > 0) {\n\t\t\t\t\t\taccuracy = move.accuracy;\n\t\t\t\t\t\tif (accuracy !== true) {\n\t\t\t\t\t\t\tif (!move.ignoreAccuracy) {\n\t\t\t\t\t\t\t\tboosts = this.battle.runEvent('ModifyBoost', pokemon, null, null, { ...pokemon.boosts });\n\t\t\t\t\t\t\t\tboost = this.battle.clampIntRange(boosts['accuracy'], -6, 6);\n\t\t\t\t\t\t\t\tif (boost > 0) {\n\t\t\t\t\t\t\t\t\taccuracy *= boostTable[boost];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\taccuracy /= boostTable[-boost];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!move.ignoreEvasion) {\n\t\t\t\t\t\t\t\tboosts = this.battle.runEvent('ModifyBoost', target, null, null, { ...target.boosts });\n\t\t\t\t\t\t\t\tboost = this.battle.clampIntRange(boosts['evasion'], -6, 6);\n\t\t\t\t\t\t\t\tif (boost > 0) {\n\t\t\t\t\t\t\t\t\taccuracy /= boostTable[boost];\n\t\t\t\t\t\t\t\t} else if (boost < 0) {\n\t\t\t\t\t\t\t\t\taccuracy *= boostTable[-boost];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\taccuracy = this.battle.runEvent('ModifyAccuracy', target, pokemon, move, accuracy);\n\t\t\t\t\t\tif (!move.alwaysHit) {\n\t\t\t\t\t\t\taccuracy = this.battle.runEvent('Accuracy', target, pokemon, move, accuracy);\n\t\t\t\t\t\t\tif (accuracy !== true && !this.battle.randomChance(accuracy, 100)) break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveDamage = this.moveHit(target, pokemon, move);\n\t\t\t\t\tif (moveDamage === false) break;\n\t\t\t\t\tif (nullDamage && (moveDamage || moveDamage === 0 || moveDamage === undefined)) nullDamage = false;\n\t\t\t\t\t// Damage from each hit is individually counted for the\n\t\t\t\t\t// purposes of Counter, Metal Burst, and Mirror Coat.\n\t\t\t\t\tdamage = (moveDamage || 0);\n\t\t\t\t\tmove.totalDamage += damage;\n\t\t\t\t\tthis.battle.eachEvent('Update');\n\t\t\t\t}\n\t\t\t\tif (i === 0) return false;\n\t\t\t\tif (nullDamage) damage = false;\n\t\t\t\tthis.battle.add('-hitcount', target, i);\n\t\t\t} else {\n\t\t\t\tdamage = this.moveHit(target, pokemon, move);\n\t\t\t\tmove.totalDamage = damage;\n\t\t\t}\n\n\t\t\tif (move.recoil && move.totalDamage) {\n\t\t\t\tthis.battle.damage(this.calcRecoilDamage(move.totalDamage, move, pokemon), pokemon, target, 'recoil');\n\t\t\t}\n\n\t\t\tif (target && pokemon !== target) target.gotAttacked(move, damage, pokemon);\n\n\t\t\tif (move.ohko && !target.hp) this.battle.add('-ohko');\n\n\t\t\tif (!damage && damage !== 0) return damage;\n\n\t\t\tthis.battle.eachEvent('Update');\n\n\t\t\tif (target && !move.negateSecondary) {\n\t\t\t\tthis.battle.singleEvent('AfterMoveSecondary', move, null, target, pokemon, move);\n\t\t\t\tthis.battle.runEvent('AfterMoveSecondary', target, pokemon, move);\n\t\t\t}\n\n\t\t\treturn damage;\n\t\t},\n\n\t\tcalcRecoilDamage(damageDealt, move) {\n\t\t\treturn this.battle.clampIntRange(Math.floor(damageDealt * move.recoil![0] / move.recoil![1]), 1);\n\t\t},\n\t},\n};\n"],
"mappings": "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",
"names": []
}