@pkmn/mods 0.9.11 → 0.9.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -507,7 +507,8 @@ var Scripts = {
507
507
  },
508
508
  actions: {
509
509
  inherit: true,
510
- runMove(moveOrMoveName, pokemon, targetLoc, sourceEffect) {
510
+ runMove(moveOrMoveName, pokemon, targetLoc, options) {
511
+ let sourceEffect = options == null ? void 0 : options.sourceEffect;
511
512
  const move = this.dex.getActiveMove(moveOrMoveName);
512
513
  const target = this.battle.getTarget(pokemon, move, targetLoc);
513
514
  if (target == null ? void 0 : target.subFainted) target.subFainted = null;
@@ -531,13 +532,15 @@ var Scripts = {
531
532
  } else {
532
533
  sourceEffect = move;
533
534
  }
534
- this.battle.actions.useMove(move, pokemon, target, sourceEffect);
535
+ this.battle.actions.useMove(move, pokemon, { target, sourceEffect });
535
536
  },
536
537
  // This function deals with AfterMoveSelf events.
537
538
  // This leads with partial trapping moves shenanigans after the move has been used.
538
- useMove(moveOrMoveName, pokemon, target, sourceEffect) {
539
+ useMove(moveOrMoveName, pokemon, options) {
539
540
  var _a, _b;
540
- const moveResult = this.useMoveInner(moveOrMoveName, pokemon, target, sourceEffect);
541
+ let sourceEffect = options == null ? void 0 : options.sourceEffect;
542
+ let target = options == null ? void 0 : options.target;
543
+ const moveResult = this.useMoveInner(moveOrMoveName, pokemon, { target, sourceEffect });
541
544
  if (!sourceEffect && this.battle.effect.id) sourceEffect = this.battle.effect;
542
545
  const baseMove = this.battle.dex.moves.get(moveOrMoveName);
543
546
  let move = this.battle.dex.getActiveMove(baseMove);
@@ -579,7 +582,9 @@ var Scripts = {
579
582
  },
580
583
  // This is the function that actually uses the move, running ModifyMove events.
581
584
  // It uses the move and then deals with the effects after the move.
582
- useMoveInner(moveOrMoveName, pokemon, target, sourceEffect) {
585
+ useMoveInner(moveOrMoveName, pokemon, options) {
586
+ let sourceEffect = options == null ? void 0 : options.sourceEffect;
587
+ let target = options == null ? void 0 : options.target;
583
588
  if (!sourceEffect && this.battle.effect.id) sourceEffect = this.battle.effect;
584
589
  const baseMove = this.battle.dex.moves.get(moveOrMoveName);
585
590
  let move = this.battle.dex.getActiveMove(baseMove);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kjs/Code/src/github.com/pkmn/ps/mods/build/gen1stadium/index.js","../../src/gen1stadium/conditions.ts","../../src/gen1stadium/rulesets.ts","../../src/gen1stadium/moves.ts","../../src/gen1stadium/scripts.ts"],"names":[],"mappings":"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","file":"/Users/kjs/Code/src/github.com/pkmn/ps/mods/build/gen1stadium/index.js","sourcesContent":[null,"import type {ModdedConditionDataTable} from '@pkmn/sim';\n\nexport const Conditions: ModdedConditionDataTable = {\n\tbrn: {\n\t\tname: 'brn',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'brn');\n\t\t},\n\t\tonAfterMoveSelfPriority: 2,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t\tonAfterSwitchInSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t},\n\tpar: {\n\t\tname: 'par',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'par');\n\t\t},\n\t\tonBeforeMovePriority: 2,\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (this.randomChance(63, 256)) {\n\t\t\t\tthis.add('cant', pokemon, 'par');\n\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t\tpokemon.removeVolatile('lockedmove');\n\t\t\t\tpokemon.removeVolatile('twoturnmove');\n\t\t\t\tpokemon.removeVolatile('invulnerability');\n\t\t\t\tpokemon.removeVolatile('partialtrappinglock');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t},\n\tslp: {\n\t\tname: 'slp',\n\t\teffectType: 'Status',\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tif (sourceEffect && sourceEffect.effectType === 'Move') {\n\t\t\t\tthis.add('-status', target, 'slp', '[from] move: ' + sourceEffect.name);\n\t\t\t} else {\n\t\t\t\tthis.add('-status', target, 'slp');\n\t\t\t}\n\t\t\t// 1-3 turns\n\t\t\tthis.effectState.startTime = this.random(1, 4);\n\t\t\tthis.effectState.time = this.effectState.startTime;\n\n\t\t\tif (target.removeVolatile('nightmare')) {\n\t\t\t\tthis.add('-end', target, 'Nightmare', '[silent]');\n\t\t\t}\n\t\t},\n\t\tonBeforeMovePriority: 2,\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tpokemon.statusState.time--;\n\t\t\tthis.add('cant', pokemon, 'slp');\n\t\t\tpokemon.lastMove = null;\n\t\t\treturn false;\n\t\t},\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tif (pokemon.statusState.time <= 0) pokemon.cureStatus();\n\t\t},\n\t},\n\tfrz: {\n\t\tname: 'frz',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'frz');\n\t\t},\n\t\tonBeforeMovePriority: 2,\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tthis.add('cant', pokemon, 'frz');\n\t\t\tpokemon.lastMove = null;\n\t\t\treturn false;\n\t\t},\n\t\tonHit(target, source, move) {\n\t\t\tif (move.type === 'Fire' && move.category !== 'Status') {\n\t\t\t\ttarget.cureStatus();\n\t\t\t}\n\t\t},\n\t},\n\tpsn: {\n\t\tname: 'psn',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'psn');\n\t\t},\n\t\tonAfterMoveSelfPriority: 2,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t\tonAfterSwitchInSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t},\n\tconfusion: {\n\t\tinherit: true,\n\t\tonStart(target) {\n\t\t\tthis.add('-start', target, 'confusion');\n\t\t\tthis.effectState.time = this.random(2, 6);\n\t\t},\n\t},\n\tflinch: {\n\t\tinherit: true,\n\t\tonStart() {},\n\t},\n\tpartiallytrapped: {\n\t\tname: 'partiallytrapped',\n\t\tduration: 2,\n\t\tonBeforeMovePriority: 1,\n\t\tonStart(target, source, effect) {\n\t\t\tthis.add('-activate', target, 'move: ' + effect, '[of] ' + source);\n\t\t},\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (this.effectState.source && (!this.effectState.source.isActive || this.effectState.source.hp <= 0)) {\n\t\t\t\tpokemon.removeVolatile('partiallytrapped');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('cant', pokemon, 'partiallytrapped');\n\t\t\treturn false;\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tthis.add('-end', pokemon, this.effectState.sourceEffect, '[partiallytrapped]');\n\t\t},\n\t},\n};\n","import type {ModdedFormatDataTable} from '@pkmn/sim';\n\nexport const Rulesets: ModdedFormatDataTable = {\n\tstandard: {\n\t\teffectType: 'ValidatorRule',\n\t\tname: 'Standard',\n\t\truleset: ['Obtainable', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Exact HP Mod', 'Cancel Mod'],\n\t},\n};\n","import type {ActiveMove, ModdedMoveDataTable} from '@pkmn/sim';\n\nexport const Moves: ModdedMoveDataTable = {\n\tbide: {\n\t\tinherit: true,\n\t\tpriority: 0,\n\t\taccuracy: true,\n\t\tcondition: {\n\t\t\tdurationCallback(target, source, effect) {\n\t\t\t\treturn this.random(3, 5);\n\t\t\t},\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.effectState.totalDamage = 0;\n\t\t\t\tthis.effectState.lastDamage = 0;\n\t\t\t\tthis.add('-start', pokemon, 'Bide');\n\t\t\t},\n\t\t\tonHit(target, source, move) {\n\t\t\t\tif (source && source !== target && move.category !== 'Physical' && move.category !== 'Special') {\n\t\t\t\t\tconst damage = this.effectState.totalDamage;\n\t\t\t\t\tthis.effectState.totalDamage += damage;\n\t\t\t\t\tthis.effectState.lastDamage = damage;\n\t\t\t\t\tthis.effectState.sourceSlot = source.getSlot();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDamage(damage, target, source, move) {\n\t\t\t\tif (!source || source.isAlly(target)) return;\n\t\t\t\tif (!move || move.effectType !== 'Move') return;\n\t\t\t\tif (!damage && this.effectState.lastDamage > 0) {\n\t\t\t\t\tdamage = this.effectState.totalDamage;\n\t\t\t\t}\n\t\t\t\tthis.effectState.totalDamage += damage;\n\t\t\t\tthis.effectState.lastDamage = damage;\n\t\t\t\tthis.effectState.sourceSlot = source.getSlot();\n\t\t\t},\n\t\t\tonAfterSetStatus(status, pokemon) {\n\t\t\t\t// Sleep, freeze, and partial trap will just pause duration.\n\t\t\t\tif (pokemon.volatiles['flinch']) {\n\t\t\t\t\tthis.effectState.duration++;\n\t\t\t\t} else if (pokemon.volatiles['partiallytrapped']) {\n\t\t\t\t\tthis.effectState.duration++;\n\t\t\t\t} else {\n\t\t\t\t\tswitch (status.id) {\n\t\t\t\t\tcase 'slp':\n\t\t\t\t\tcase 'frz':\n\t\t\t\t\t\tthis.effectState.duration++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBeforeMove(pokemon, t, move) {\n\t\t\t\tif (this.effectState.duration === 1) {\n\t\t\t\t\tthis.add('-end', pokemon, 'Bide');\n\t\t\t\t\tif (!this.effectState.totalDamage) {\n\t\t\t\t\t\tthis.debug(\"Bide failed because no damage was taken\");\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\tconst target = this.getAtSlot(this.effectState.sourceSlot);\n\t\t\t\t\tif (target.isSemiInvulnerable()) {\n\t\t\t\t\t\tthis.add('-message', 'The foe ' + target.name + ' can\\'t be hit while flying!');\n\t\t\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.actions.moveHit(target, pokemon, move, {damage: this.effectState.totalDamage * 2} as ActiveMove);\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, 'Bide');\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tif (!pokemon.hasMove('bide')) {\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 !== 'bide') {\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\ttype: \"???\", // Will look as Normal but it's STAB-less\n\t},\n\tbind: {\n\t\tinherit: true,\n\t\t// FIXME: onBeforeMove() {},\n\t},\n\tclamp: {\n\t\tinherit: true,\n\t\t// FIXME: onBeforeMove() {},\n\t},\n\tcounter: {\n\t\tinherit: true,\n\t\tignoreImmunity: true,\n\t\twillCrit: false,\n\t\tbasePower: 1,\n\t\tdamageCallback(pokemon, target) {\n\t\t\t// Counter mechanics in Stadium 1:\n\t\t\t// - a move is Counterable if it is Normal or Fighting type, has nonzero Base Power, and is not Counter\n\t\t\t// - Counter succeeds if the target used a Counterable move earlier this turn\n\n\t\t\tconst lastMoveThisTurn = target.side.lastMove && target.side.lastMove.id === target.side.lastSelectedMove &&\n\t\t\t\t!this.queue.willMove(target) && this.dex.moves.get(target.side.lastMove.id);\n\t\t\tif (!lastMoveThisTurn) {\n\t\t\t\tthis.debug(\"Stadium 1 Counter: last move was not this turn\");\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst lastMoveThisTurnIsCounterable = lastMoveThisTurn && lastMoveThisTurn.basePower > 0 &&\n\t\t\t\t['Normal', 'Fighting'].includes(lastMoveThisTurn.type) && lastMoveThisTurn.id !== 'counter';\n\t\t\tif (!lastMoveThisTurnIsCounterable) {\n\t\t\t\tthis.debug(`Stadium 1 Counter: last move ${lastMoveThisTurn.name} was not Counterable`);\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.lastDamage <= 0) {\n\t\t\t\tthis.debug(\"Stadium 1 Counter: no previous damage exists\");\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn 2 * this.lastDamage;\n\t\t},\n\t},\n\tfirespin: {\n\t\tinherit: true,\n\t\t// FIXME: onBeforeMove() {},\n\t},\n\thaze: {\n\t\tinherit: true,\n\t\tonHit(target, source) {\n\t\t\tthis.add('-activate', target, 'move: Haze');\n\t\t\tthis.add('-clearallboost', '[silent]');\n\t\t\tfor (const pokemon of this.getAllActive()) {\n\t\t\t\tpokemon.clearBoosts();\n\t\t\t\tpokemon.cureStatus(true);\n\t\t\t\tfor (const id of Object.keys(pokemon.volatiles)) {\n\t\t\t\t\tpokemon.removeVolatile(id);\n\t\t\t\t\tthis.add('-end', pokemon, id, '[silent]');\n\t\t\t\t}\n\t\t\t\tpokemon.recalculateStats!();\n\t\t\t}\n\t\t},\n\t},\n\thyperbeam: {\n\t\tinherit: true,\n\t\tonMoveFail(target, source, move) {\n\t\t\tsource.addVolatile('mustrecharge');\n\t\t},\n\t},\n\tpsywave: {\n\t\tinherit: true,\n\t\tbasePower: 1,\n\t\tdamageCallback(pokemon) {\n\t\t\treturn this.random(1, this.trunc(1.5 * pokemon.level));\n\t\t},\n\t},\n\trage: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tvolatileStatus: 'rage',\n\t\t},\n\t\tcondition: {\n\t\t\t// Rage lock\n\t\t\tonStart(target, source, effect) {\n\t\t\t\tthis.effectState.move = 'rage';\n\t\t\t},\n\t\t\tonLockMove: 'rage',\n\t\t\tonHit(target, source, move) {\n\t\t\t\tif (target.boosts.atk < 6 && (move.category !== 'Status' || move.id === 'disable')) {\n\t\t\t\t\tthis.boost({atk: 1});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\trecover: {\n\t\tinherit: true,\n\t\theal: null,\n\t\tonHit(target) {\n\t\t\tif (target.hp === target.maxhp) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.heal(Math.floor(target.maxhp / 2), target, target);\n\t\t},\n\t},\n\trest: {\n\t\tinherit: true,\n\t\tonHit(target, source, move) {\n\t\t\t// Fails if the difference between\n\t\t\t// max HP and current HP is 0, 255, or 511\n\t\t\tif (target.hp >= target.maxhp) return false;\n\t\t\tif (!target.setStatus('slp', source, move)) return false;\n\t\t\ttarget.statusState.time = 2;\n\t\t\ttarget.statusState.startTime = 2;\n\t\t\ttarget.recalculateStats!(); // Stadium Rest removes statdrops given by Major Status Conditions.\n\t\t\tthis.heal(target.maxhp); // Aesthetic only as the healing happens after you fall asleep in-game\n\t\t},\n\t},\n\tsoftboiled: {\n\t\tinherit: true,\n\t\theal: null,\n\t\tonHit(target) {\n\t\t\t// Fail when health is 255 or 511 less than max\n\t\t\tif (target.hp === target.maxhp) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.heal(Math.floor(target.maxhp / 2), target, target);\n\t\t},\n\t},\n\tsubstitute: {\n\t\tinherit: true,\n\t\tonTryHit(target) {\n\t\t\tif (target.volatiles['substitute']) {\n\t\t\t\tthis.add('-fail', target, 'move: Substitute');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// Stadium fixes the 25% = you die gag\n\t\t\tif (target.hp <= target.maxhp / 4) {\n\t\t\t\tthis.add('-fail', target, 'move: Substitute', '[weak]');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\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\tonTryHitPriority: -1,\n\t\t\tonTryHit(target, source, move) {\n\t\t\t\tif (target === source) {\n\t\t\t\t\tthis.debug('sub bypass: self hit');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (move.drain) {\n\t\t\t\t\tthis.add('-miss', source);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (move.category === 'Status') {\n\t\t\t\t\tconst SubBlocked = ['leechseed', 'lockon', 'mindreader', 'nightmare'];\n\t\t\t\t\tif (move.status || move.boosts || move.volatileStatus === 'confusion' || SubBlocked.includes(move.id)) {\n\t\t\t\t\t\tthis.add('-activate', target, 'Substitute', '[block] ' + move.name);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (move.volatileStatus && target === source) return;\n\t\t\t\tlet damage = this.actions.getDamage(source, target, move);\n\t\t\t\tif (damage && damage > target.volatiles['substitute'].hp) {\n\t\t\t\t\tdamage = target.volatiles['substitute'].hp;\n\t\t\t\t}\n\t\t\t\tif (!damage && damage !== 0) return null;\n\t\t\t\tdamage = this.runEvent('SubDamage', target, source, move, damage);\n\t\t\t\tif (!damage && damage !== 0) return damage;\n\t\t\t\ttarget.volatiles['substitute'].hp -= damage;\n\t\t\t\tthis.lastDamage = damage;\n\t\t\t\tif (target.volatiles['substitute'].hp <= 0) {\n\t\t\t\t\tthis.debug('Substitute broke');\n\t\t\t\t\ttarget.removeVolatile('substitute');\n\t\t\t\t\ttarget.subFainted = true;\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\t// Drain/recoil does not happen if the substitute breaks\n\t\t\t\tif (target.volatiles['substitute']) {\n\t\t\t\t\tif (move.recoil) {\n\t\t\t\t\t\tthis.damage(this.clampIntRange(Math.floor(damage * move.recoil[0] / move.recoil[1]), 1), source, target, 'recoil');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.runEvent('AfterSubDamage', target, source, move, damage);\n\t\t\t\t// Add here counter damage\n\t\t\t\tconst lastAttackedBy = target.getLastAttackedBy();\n\t\t\t\tif (!lastAttackedBy) {\n\t\t\t\t\ttarget.attackedBy.push({source: source, move: move.id, damage: damage, slot: source.getSlot(), thisTurn: true});\n\t\t\t\t} else {\n\t\t\t\t\tlastAttackedBy.move = move.id;\n\t\t\t\t\tlastAttackedBy.damage = damage;\n\t\t\t\t}\n\t\t\t\treturn 0;\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\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Normal\",\n\t},\n\tstruggle: {\n\t\tinherit: true,\n\t\tignoreImmunity: {'Normal': true},\n\t},\n\twrap: {\n\t\tinherit: true,\n\t\t// FIXME: onBeforeMove() {},\n\t},\n};\n","import type {ActiveMove, BoostID, ModdedBattleScriptsData, StatIDExceptHP} from '@pkmn/sim';\n\n/**\n * Stadium mechanics inherit from gen 1 mechanics, but fixes some stuff.\n */\n\nconst SKIP_LASTDAMAGE = new Set([\n\t'confuseray', 'conversion', 'counter', 'focusenergy', 'glare', 'haze', 'leechseed', 'lightscreen',\n\t'mimic', 'mist', 'poisongas', 'poisonpowder', 'recover', 'reflect', 'rest', 'softboiled',\n\t'splash', 'stunspore', 'substitute', 'supersonic', 'teleport', 'thunderwave', 'toxic', 'transform',\n]);\n\nexport const Scripts: ModdedBattleScriptsData = {\n\tinherit: 'gen1',\n\tgen: 1,\n\t// BattlePokemon scripts. Stadium shares gen 1 code but it fixes some problems with it.\n\tpokemon: {\n\t\tinherit: true,\n\t\t// This is run on Stadium after boosts and status changes.\n\t\trecalculateStats() {\n\t\t\tlet statName: StatIDExceptHP;\n\t\t\tfor (statName in this.storedStats) {\n\t\t\t\tlet stat = this.species.baseStats[statName];\n\t\t\t\tstat = Math.floor(\n\t\t\t\t\tMath.floor(\n\t\t\t\t\t\t2 * stat + this.set.ivs[statName] + Math.floor(this.set.evs[statName] / 4)\n\t\t\t\t\t) * this.level / 100 + 5\n\t\t\t\t);\n\t\t\t\tthis.baseStoredStats[statName] = this.storedStats[statName] = Math.floor(stat);\n\t\t\t\tthis.modifiedStats![statName] = Math.floor(stat);\n\t\t\t\t// Re-apply drops, if necessary.\n\t\t\t\tif (this.status === 'par' && statName === 'spe') this.modifyStat!('spe', 0.25);\n\t\t\t\tif (this.status === 'brn' && statName === 'atk') this.modifyStat!('atk', 0.5);\n\t\t\t\tif (this.boosts[statName] !== 0) {\n\t\t\t\t\tif (this.boosts[statName] >= 0) {\n\t\t\t\t\t\tthis.modifyStat!(statName, [1, 1.5, 2, 2.5, 3, 3.5, 4][this.boosts[statName]]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modifyStat!(statName, [100, 66, 50, 40, 33, 28, 25][-this.boosts[statName]] / 100);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.modifiedStats![statName] > 999) {\n\t\t\t\t\tthis.modifiedStats![statName] = 999;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Stadium's fixed boosting function.\n\t\tboostBy(boost) {\n\t\t\tlet changed = false;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tlet delta = boost[i];\n\t\t\t\tif (delta === undefined) continue;\n\t\t\t\tthis.boosts[i] += delta;\n\t\t\t\tif (this.boosts[i] > 6) {\n\t\t\t\t\tdelta -= this.boosts[i] - 6;\n\t\t\t\t\tthis.boosts[i] = 6;\n\t\t\t\t}\n\t\t\t\tif (this.boosts[i] < -6) {\n\t\t\t\t\tdelta -= this.boosts[i] - (-6);\n\t\t\t\t\tthis.boosts[i] = -6;\n\t\t\t\t}\n\t\t\t\tif (delta) changed = true;\n\t\t\t}\n\t\t\tthis.recalculateStats!();\n\t\t\treturn changed;\n\t\t},\n\t\t// Remove stat recalculation logic from gen 1\n\t\tclearBoosts() {\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in this.boosts) {\n\t\t\t\tthis.boosts[i] = 0;\n\t\t\t}\n\t\t},\n\t},\n\tactions: {\n\t\tinherit: true,\n\t\trunMove(moveOrMoveName, pokemon, targetLoc, sourceEffect) {\n\t\t\tconst move = this.dex.getActiveMove(moveOrMoveName);\n\t\t\tconst target = this.battle.getTarget(pokemon, move, targetLoc);\n\t\t\tif (target?.subFainted) target.subFainted = null;\n\n\t\t\tthis.battle.setActiveMove(move, pokemon, target);\n\n\t\t\tif (pokemon.moveThisTurn || !this.battle.runEvent('BeforeMove', pokemon, target, move)) {\n\t\t\t\tthis.battle.debug('' + pokemon.fullname + ' move interrupted; movedThisTurn: ' + pokemon.moveThisTurn);\n\t\t\t\tthis.battle.clearActiveMove(true);\n\t\t\t\t// This is only run for sleep\n\t\t\t\tthis.battle.runEvent('AfterMoveSelf', pokemon, target, move);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (move.beforeMoveCallback) {\n\t\t\t\tif (move.beforeMoveCallback.call(this.battle, pokemon, target, move)) {\n\t\t\t\t\tthis.battle.clearActiveMove(true);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet lockedMove = this.battle.runEvent('LockMove', pokemon);\n\t\t\tif (lockedMove === true) lockedMove = false;\n\t\t\tif (\n\t\t\t\t!lockedMove &&\n\t\t\t\t(!pokemon.volatiles['partialtrappinglock'] || pokemon.volatiles['partialtrappinglock'].locked !== target)\n\t\t\t) {\n\t\t\t\tpokemon.deductPP(move, null, target);\n\t\t\t} else {\n\t\t\t\tsourceEffect = move;\n\t\t\t}\n\t\t\tthis.battle.actions.useMove(move, pokemon, target, sourceEffect);\n\t\t},\n\t\t// This function deals with AfterMoveSelf events.\n\t\t// This leads with partial trapping moves shenanigans after the move has been used.\n\t\tuseMove(moveOrMoveName, pokemon, target, sourceEffect) {\n\t\t\tconst moveResult = this.useMoveInner(moveOrMoveName, pokemon, target, sourceEffect);\n\n\t\t\tif (!sourceEffect && this.battle.effect.id) sourceEffect = this.battle.effect;\n\t\t\tconst baseMove = this.battle.dex.moves.get(moveOrMoveName);\n\t\t\tlet move = this.battle.dex.getActiveMove(baseMove);\n\t\t\tif (target === undefined) target = this.battle.getRandomTarget(pokemon, move);\n\t\t\tif (move.target === 'self') {\n\t\t\t\ttarget = pokemon;\n\t\t\t}\n\t\t\tif (sourceEffect) move.sourceEffect = sourceEffect.id;\n\n\t\t\tthis.battle.singleEvent('ModifyMove', move, null, pokemon, target, move, move);\n\t\t\tif (baseMove.target !== move.target) {\n\t\t\t\t// Target changed in ModifyMove, so we must adjust it here\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 (baseMove.target !== move.target) {\n\t\t\t\t// Check again, this shouldn't ever happen on Gen 1.\n\t\t\t\ttarget = this.battle.getRandomTarget(pokemon, move);\n\t\t\t}\n\n\t\t\tif (move.id !== 'metronome') {\n\t\t\t\tif (move.id !== 'mirrormove' ||\n\t\t\t\t\t(!pokemon.side.foe.active[0]?.lastMove || pokemon.side.foe.active[0].lastMove?.id === 'mirrormove')) {\n\t\t\t\t\t// The move is our 'final' move (a failed Mirror Move, or any move that isn't Metronome or Mirror Move).\n\t\t\t\t\tpokemon.side.lastMove = move;\n\t\t\t\t\tpokemon.lastMove = move;\n\t\t\t\t\tthis.battle.singleEvent('AfterMove', move, null, pokemon, target, move);\n\n\t\t\t\t\t// If target fainted\n\t\t\t\t\tif (target && target.hp <= 0) {\n\t\t\t\t\t\tdelete pokemon.volatiles['partialtrappinglock'];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.battle.runEvent('AfterMoveSelf', pokemon, target, move);\n\t\t\t\t\t}\n\t\t\t\t\tif (pokemon.volatiles['mustrecharge']) this.battle.add('-mustrecharge', pokemon);\n\n\t\t\t\t\t// For partial trapping moves, we are saving the target.\n\t\t\t\t\tif (move.volatileStatus === 'partiallytrapped' && target && target.hp > 0) {\n\t\t\t\t\t\t// It hit, so let's remove must recharge volatile. Yup, this happens on Stadium.\n\t\t\t\t\t\ttarget.removeVolatile('mustrecharge');\n\t\t\t\t\t\t// Let's check if the lock exists\n\t\t\t\t\t\tif (pokemon.volatiles['partialtrappinglock'] && target.volatiles['partiallytrapped']) {\n\t\t\t\t\t\t\t// Here the partialtrappinglock volatile has been already applied\n\t\t\t\t\t\t\tif (!pokemon.volatiles['partialtrappinglock'].locked) {\n\t\t\t\t\t\t\t\t// If it's the first hit, we save the target\n\t\t\t\t\t\t\t\tpokemon.volatiles['partialtrappinglock'].locked = target;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} // If we move to here, the move failed and there's no partial trapping lock\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn moveResult;\n\t\t},\n\t\t// This is the function that actually uses the move, running ModifyMove events.\n\t\t// It uses the move and then deals with the effects after the move.\n\t\tuseMoveInner(moveOrMoveName, pokemon, target, sourceEffect) {\n\t\t\tif (!sourceEffect && this.battle.effect.id) sourceEffect = this.battle.effect;\n\t\t\tconst baseMove = this.battle.dex.moves.get(moveOrMoveName);\n\t\t\tlet move = this.battle.dex.getActiveMove(baseMove);\n\t\t\tif (target === undefined) target = this.battle.getRandomTarget(pokemon, move);\n\t\t\tif (move.target === 'self') {\n\t\t\t\ttarget = pokemon;\n\t\t\t}\n\t\t\tif (sourceEffect) move.sourceEffect = sourceEffect.id;\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 (baseMove.target !== move.target) {\n\t\t\t\t// Target changed in ModifyMove, so we must adjust it here\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 (baseMove.target !== move.target) {\n\t\t\t\t// Check again, this shouldn't ever happen on Gen 1.\n\t\t\t\ttarget = this.battle.getRandomTarget(pokemon, move);\n\t\t\t\tthis.battle.debug('not a gen 1 mechanic');\n\t\t\t}\n\t\t\tif (!move) return false;\n\n\t\t\tlet attrs = '';\n\t\t\tif (pokemon.fainted) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (sourceEffect) attrs += '|[from]' + this.battle.dex.conditions.get(sourceEffect);\n\t\t\tthis.battle.addMove('move', pokemon, move.name, target + attrs);\n\n\t\t\tif (!this.battle.singleEvent('Try', move, null, pokemon, target, move)) {\n\t\t\t\treturn true;\n\t\t\t}\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\treturn true;\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\tlet damage: number | undefined | false | '' = false;\n\t\t\tif (!target || target.fainted) {\n\t\t\t\tthis.battle.attrLastMove('[notarget]');\n\t\t\t\tthis.battle.add('-notarget');\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// Store 0 damage for last damage if the move is not in the array.\n\t\t\tif (!SKIP_LASTDAMAGE.has(move.id)) this.battle.lastDamage = 0;\n\n\t\t\tdamage = this.tryMoveHit(target, pokemon, move);\n\n\t\t\t// Go ahead with results of the used move.\n\t\t\tif (damage === false) {\n\t\t\t\tthis.battle.singleEvent('MoveFail', move, null, target, pokemon, move);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!move.negateSecondary) {\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\tlet damage: number | false | undefined = 0;\n\n\t\t\t// First, check if the target is semi-invulnerable\n\t\t\tlet hitResult = this.battle.runEvent('Invulnerability', target, pokemon, move);\n\t\t\tif (hitResult === false) {\n\t\t\t\tthis.battle.attrLastMove('[miss]');\n\t\t\t\tthis.battle.add('-miss', pokemon);\n\t\t\t\tif (move.selfdestruct) {\n\t\t\t\t\tthis.battle.faint(pokemon, pokemon, move);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Then, check if the Pokemon is immune to this move.\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, true)\n\t\t\t) {\n\t\t\t\tif (move.selfdestruct) {\n\t\t\t\t\tthis.battle.faint(pokemon, pokemon, move);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\thitResult = this.battle.singleEvent('TryImmunity', move, null, target, pokemon, move);\n\t\t\tif (hitResult === false) {\n\t\t\t\tthis.battle.add('-immune', target);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Now, let's calculate the accuracy.\n\t\t\tlet accuracy = move.accuracy;\n\n\t\t\t// Partial trapping moves: true accuracy while it lasts\n\t\t\tif (pokemon.volatiles['partialtrappinglock']) {\n\t\t\t\tif (move.volatileStatus === 'partiallytrapped' && target === pokemon.volatiles['partialtrappinglock'].locked) {\n\t\t\t\t\taccuracy = true;\n\t\t\t\t} else if (pokemon.volatiles['partialtrappinglock'].locked !== target) {\n\t\t\t\t\t// The target switched, therefor, you fail using wrap.\n\t\t\t\t\tdelete pokemon.volatiles['partialtrappinglock'];\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// OHKO moves only have a chance to hit if the user is at least as fast as the target\n\t\t\tif (move.ohko) {\n\t\t\t\tif (target.speed > pokemon.speed) {\n\t\t\t\t\tthis.battle.add('-immune', target, '[ohko]');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Calculate true accuracy for gen 1, which uses 0-255.\n\t\t\t// Stadium uses the Gen 2 boost table for accuracy and evasiveness, except for 1/3 instead of 0.33\n\t\t\tconst boostTable = [1 / 3, 0.36, 0.43, 0.5, 0.66, 0.75, 1, 1.33, 1.66, 2, 2.33, 2.66, 3];\n\t\t\tif (accuracy !== true) {\n\t\t\t\taccuracy = Math.floor(accuracy * 255 / 100);\n\t\t\t\t// Check also for accuracy modifiers.\n\t\t\t\tif (!move.ignoreAccuracy) {\n\t\t\t\t\taccuracy = Math.floor(accuracy * boostTable[pokemon.boosts.accuracy + 6]);\n\t\t\t\t}\n\t\t\t\tif (!move.ignoreEvasion) {\n\t\t\t\t\taccuracy = Math.floor(accuracy * boostTable[-target.boosts.evasion + 6]);\n\t\t\t\t}\n\t\t\t\taccuracy = Math.min(accuracy, 255);\n\t\t\t}\n\t\t\taccuracy = this.battle.runEvent('Accuracy', target, pokemon, move, accuracy);\n\n\t\t\t// Stadium fixes the 1/256 accuracy bug.\n\t\t\tif (accuracy !== true && !this.battle.randomChance(accuracy + 1, 256)) {\n\t\t\t\tthis.battle.attrLastMove('[miss]');\n\t\t\t\tthis.battle.add('-miss', pokemon);\n\t\t\t\tdamage = false;\n\t\t\t\tthis.battle.lastDamage = 0;\n\t\t\t}\n\n\t\t\t// If damage is 0 and not false it means it didn't miss, let's calc.\n\t\t\tif (damage !== false) {\n\t\t\t\tif (move.multihit) {\n\t\t\t\t\tlet hits = move.multihit;\n\t\t\t\t\tif (Array.isArray(hits)) {\n\t\t\t\t\t\t// Yes, it's hardcoded... meh\n\t\t\t\t\t\tif (hits[0] === 2 && hits[1] === 5) {\n\t\t\t\t\t\t\thits = this.battle.sample([2, 2, 2, 3, 3, 3, 4, 5]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thits = this.battle.random(hits[0], hits[1] + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\thits = Math.floor(hits);\n\t\t\t\t\t// In gen 1, all the hits have the same damage for multihits move\n\t\t\t\t\tlet moveDamage: number | false | undefined = 0;\n\t\t\t\t\tlet i: number;\n\t\t\t\t\tfor (i = 0; i < hits && target.hp && pokemon.hp; i++) {\n\t\t\t\t\t\tmove.hit = i + 1;\n\t\t\t\t\t\tif (move.hit === hits) move.lastHit = true;\n\t\t\t\t\t\tmoveDamage = this.moveHit(target, pokemon, move);\n\t\t\t\t\t\tif (moveDamage === false) break;\n\t\t\t\t\t\tdamage = (moveDamage || 0);\n\t\t\t\t\t\t// Move damage is fixed to be the first move's damage\n\t\t\t\t\t\tif (i === 0) move.damage = damage;\n\t\t\t\t\t\tif (target.subFainted) {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tmove.damage = null;\n\t\t\t\t\tif (i === 0) return 1;\n\t\t\t\t\tthis.battle.add('-hitcount', target, i);\n\t\t\t\t} else {\n\t\t\t\t\tdamage = this.moveHit(target, pokemon, move);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (move.category !== 'Status') target.gotAttacked(move, damage, pokemon);\n\n\t\t\tif (move.selfdestruct) {\n\t\t\t\tthis.battle.faint(pokemon, pokemon, move);\n\t\t\t}\n\n\t\t\t// The move missed.\n\t\t\tif (damage === false) {\n\t\t\t\t// Delete the partial trap lock if necessary.\n\t\t\t\tdelete pokemon.volatiles['partialtrappinglock'];\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (move.ohko) this.battle.add('-ohko');\n\n\t\t\tif (!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\t\tmoveHit(target, pokemon, moveOrMoveName, moveData, isSecondary, isSelf) {\n\t\t\tlet damage: number | false | null | undefined = 0;\n\t\t\tconst move = this.dex.getActiveMove(moveOrMoveName);\n\n\t\t\tif (!isSecondary && !isSelf) this.battle.setActiveMove(move, pokemon, target);\n\t\t\tlet hitResult: number | boolean = true;\n\t\t\tif (!moveData) moveData = 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 (target) {\n\t\t\t\thitResult = this.battle.singleEvent('TryHit', moveData, {}, target, pokemon, move);\n\n\t\t\t\t// Partial trapping moves still apply their volatile to Pokémon behind a Sub\n\t\t\t\tconst targetHadSub = !!target.volatiles['substitute'];\n\t\t\t\tif (targetHadSub && moveData.volatileStatus && moveData.volatileStatus === 'partiallytrapped') {\n\t\t\t\t\ttarget.addVolatile(moveData.volatileStatus, pokemon, move);\n\t\t\t\t\tif (!pokemon.volatiles['partialtrappinglock'] || pokemon.volatiles['partialtrappinglock'].duration > 1) {\n\t\t\t\t\t\ttarget.volatiles[moveData.volatileStatus].duration = 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!hitResult) {\n\t\t\t\t\tif (hitResult === false) this.battle.add('-fail', target);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Only run the hit events for the hit itself, not the secondary or self hits\n\t\t\t\tif (!isSelf && !isSecondary) {\n\t\t\t\t\thitResult = this.battle.runEvent('TryHit', target, pokemon, move);\n\t\t\t\t\tif (!hitResult) {\n\t\t\t\t\t\tif (hitResult === false) this.battle.add('-fail', target);\n\t\t\t\t\t\t// Special Substitute hit flag\n\t\t\t\t\t\tif (hitResult !== 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.battle.runEvent('TryFieldHit', target, pokemon, move)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSecondary && !moveData.self) {\n\t\t\t\t\thitResult = this.battle.runEvent('TrySecondaryHit', target, pokemon, moveData);\n\t\t\t\t}\n\n\t\t\t\tif (hitResult === 0) {\n\t\t\t\t\ttarget = null;\n\t\t\t\t} else if (!hitResult) {\n\t\t\t\t\tif (hitResult === false) this.battle.add('-fail', target);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (target) {\n\t\t\t\tlet didSomething = false;\n\n\t\t\t\tdamage = this.getDamage(pokemon, target, moveData);\n\t\t\t\tif (damage && damage > target.hp) {\n\t\t\t\t\tdamage = target.hp;\n\t\t\t\t}\n\t\t\t\tif ((damage || damage === 0) && !target.fainted) {\n\t\t\t\t\tdamage = this.battle.damage(damage, target, pokemon, move);\n\t\t\t\t\tif (!(damage || damage === 0)) return false;\n\t\t\t\t\tdidSomething = true;\n\t\t\t\t} else if (damage === false && typeof hitResult === 'undefined') {\n\t\t\t\t\tthis.battle.add('-fail', target);\n\t\t\t\t}\n\t\t\t\tif (damage === false || damage === null) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (moveData.boosts && !target.fainted) {\n\t\t\t\t\tthis.battle.boost(moveData.boosts, target, pokemon, move);\n\t\t\t\t}\n\t\t\t\tif (moveData.heal && !target.fainted) {\n\t\t\t\t\tconst d = target.heal(Math.floor(target.maxhp * moveData.heal[0] / moveData.heal[1]));\n\t\t\t\t\tif (!d) {\n\t\t\t\t\t\tthis.battle.add('-fail', target);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.battle.add('-heal', target, target.getHealth);\n\t\t\t\t\tdidSomething = true;\n\t\t\t\t}\n\t\t\t\tif (moveData.status) {\n\t\t\t\t\tif (!target.status) {\n\t\t\t\t\t\ttarget.setStatus(moveData.status, pokemon, move);\n\t\t\t\t\t\ttarget.recalculateStats!();\n\t\t\t\t\t} else if (!isSecondary) {\n\t\t\t\t\t\tif (target.status === moveData.status) {\n\t\t\t\t\t\t\tthis.battle.add('-fail', target, target.status);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.battle.add('-fail', target);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdidSomething = true;\n\t\t\t\t}\n\t\t\t\tif (moveData.forceStatus) {\n\t\t\t\t\tif (target.setStatus(moveData.forceStatus, pokemon, move)) {\n\t\t\t\t\t\ttarget.recalculateStats!();\n\t\t\t\t\t\tdidSomething = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (moveData.volatileStatus) {\n\t\t\t\t\tif (target.addVolatile(moveData.volatileStatus, pokemon, move)) {\n\t\t\t\t\t\tdidSomething = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (moveData.sideCondition) {\n\t\t\t\t\tif (target.side.addSideCondition(moveData.sideCondition, pokemon, move)) {\n\t\t\t\t\t\tdidSomething = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (moveData.pseudoWeather) {\n\t\t\t\t\tif (this.battle.field.addPseudoWeather(moveData.pseudoWeather, pokemon, move)) {\n\t\t\t\t\t\tdidSomething = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Hit events\n\t\t\t\thitResult = this.battle.singleEvent('Hit', moveData, {}, target, pokemon, move);\n\t\t\t\tif (!isSelf && !isSecondary) {\n\t\t\t\t\tthis.battle.runEvent('Hit', target, pokemon, move);\n\t\t\t\t}\n\t\t\t\tif (!hitResult && !didSomething) {\n\t\t\t\t\tif (hitResult === false) this.battle.add('-fail', target);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Here's where self effects are applied.\n\t\t\tif (moveData.self) {\n\t\t\t\tthis.moveHit(pokemon, pokemon, move, moveData.self, isSecondary, true);\n\t\t\t}\n\n\t\t\t// Now we can save the partial trapping damage.\n\t\t\tif (pokemon.volatiles['partialtrappinglock']) {\n\t\t\t\tpokemon.volatiles['partialtrappinglock'].damage = this.battle.lastDamage;\n\t\t\t}\n\n\t\t\t// Apply move secondaries.\n\t\t\tif (moveData.secondaries && target && target.hp > 0) {\n\t\t\t\tfor (const secondary of moveData.secondaries) {\n\t\t\t\t\t// Multi-hit moves only roll for status once\n\t\t\t\t\tif (!move.multihit || move.lastHit) {\n\t\t\t\t\t\t// We check here whether to negate the probable secondary status if it's para, burn, or freeze.\n\t\t\t\t\t\t// In the game, this is checked and if true, the random number generator is not called.\n\t\t\t\t\t\t// That means that a move that does not share the type of the target can status it.\n\t\t\t\t\t\t// If a move that was not fire-type would exist on Gen 1, it could burn a Pokémon.\n\t\t\t\t\t\tif (!(secondary.status && ['par', 'brn', 'frz'].includes(secondary.status) && target.hasType(move.type))) {\n\t\t\t\t\t\t\tconst effectChance = Math.floor((secondary.chance || 100) * 255 / 100);\n\t\t\t\t\t\t\tif (typeof secondary.chance === 'undefined' || this.battle.randomChance(effectChance + 1, 256)) {\n\t\t\t\t\t\t\t\tthis.moveHit(target, pokemon, move, secondary, true, isSelf);\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}\n\t\t\t}\n\t\t\tif (move.selfSwitch && pokemon.hp) {\n\t\t\t\tpokemon.switchFlag = move.selfSwitch === true ? true : this.dex.toID(move.selfSwitch);\n\t\t\t}\n\n\t\t\treturn damage;\n\t\t},\n\t\tgetDamage(source, target, move, suppressMessages) {\n\t\t\t// First of all, we get the move.\n\t\t\tif (typeof move === 'string') {\n\t\t\t\tmove = this.dex.getActiveMove(move);\n\t\t\t} else if (typeof move === 'number') {\n\t\t\t\tmove = {\n\t\t\t\t\tbasePower: move,\n\t\t\t\t\ttype: '???',\n\t\t\t\t\tcategory: 'Physical',\n\t\t\t\t\twillCrit: false,\n\t\t\t\t\tflags: {},\n\t\t\t\t} as ActiveMove;\n\t\t\t}\n\n\t\t\t// Let's see if the target is immune to the move.\n\t\t\tif (!move.ignoreImmunity || (move.ignoreImmunity !== true && !move.ignoreImmunity[move.type])) {\n\t\t\t\tif (!target.runImmunity(move.type, true)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Is it an OHKO move?\n\t\t\tif (move.ohko) {\n\t\t\t\treturn 65535;\n\t\t\t}\n\n\t\t\t// We edit the damage through move's damage callback if necessary.\n\t\t\tif (move.damageCallback) {\n\t\t\t\treturn move.damageCallback.call(this.battle, source, target);\n\t\t\t}\n\n\t\t\t// We take damage from damage=level moves (seismic toss).\n\t\t\tif (move.damage === 'level') {\n\t\t\t\treturn source.level;\n\t\t\t}\n\n\t\t\t// If there's a fix move damage, we return that.\n\t\t\tif (move.damage) {\n\t\t\t\treturn move.damage;\n\t\t\t}\n\n\t\t\t// If it's the first hit on a Normal-type partially trap move, it hits Ghosts anyways but damage is 0.\n\t\t\tif (move.volatileStatus === 'partiallytrapped' && move.type === 'Normal' && target.hasType('Ghost')) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Let's check if we are in middle of a partial trap sequence to return the previous damage.\n\t\t\tif (source.volatiles['partialtrappinglock'] && (target === source.volatiles['partialtrappinglock'].locked)) {\n\t\t\t\treturn source.volatiles['partialtrappinglock'].damage;\n\t\t\t}\n\n\t\t\t// We check the category and typing to calculate later on the damage.\n\t\t\tif (!move.category) move.category = 'Physical';\n\t\t\t// '???' is typeless damage: used for Struggle and Confusion etc\n\t\t\tif (!move.type) move.type = '???';\n\t\t\tconst type = move.type;\n\n\t\t\t// We get the base power and apply basePowerCallback if necessary.\n\t\t\tlet basePower: number | false | null = move.basePower;\n\t\t\tif (move.basePowerCallback) {\n\t\t\t\tbasePower = move.basePowerCallback.call(this.battle, source, target, move);\n\t\t\t}\n\t\t\tif (!basePower) {\n\t\t\t\treturn basePower === 0 ? undefined : basePower;\n\t\t\t}\n\t\t\tbasePower = this.battle.clampIntRange(basePower, 1);\n\n\t\t\t// Checking for the move's Critical Hit possibility. We check if it's a 100% crit move, otherwise we calculate the chance.\n\t\t\tlet isCrit = move.willCrit || false;\n\t\t\tif (!isCrit) {\n\t\t\t\t// In Stadium, the critical chance is based on speed.\n\t\t\t\t// First, we get the base speed and store it. Then we add 76. This is our current crit chance.\n\t\t\t\tlet critChance = source.species.baseStats['spe'] + 76;\n\n\t\t\t\t// Now we right logical shift it two places, essentially dividing by 4 and flooring it.\n\t\t\t\tcritChance = critChance >> 2;\n\n\t\t\t\t// Now we check for focus energy volatile.\n\t\t\t\tif (source.volatiles['focusenergy']) {\n\t\t\t\t\t// If it exists, crit chance is multiplied by 4 and floored with a logical left shift.\n\t\t\t\t\tcritChance = critChance << 2;\n\t\t\t\t\t// Then we add 160.\n\t\t\t\t\tcritChance += 160;\n\t\t\t\t} else {\n\t\t\t\t\t// If it is not active, we left shift it by 1.\n\t\t\t\t\tcritChance = critChance << 1;\n\t\t\t\t}\n\n\t\t\t\t// Now we check for the move's critical hit ratio.\n\t\t\t\tif (move.critRatio === 2) {\n\t\t\t\t\t// High crit ratio, we multiply the result so far by 4.\n\t\t\t\t\tcritChance = critChance << 2;\n\t\t\t\t} else if (move.critRatio === 1) {\n\t\t\t\t\t// Normal hit ratio, we divide the crit chance by 2 and floor the result again.\n\t\t\t\t\tcritChance = critChance >> 1;\n\t\t\t\t}\n\n\t\t\t\t// Now we make sure it's a number between 1 and 255.\n\t\t\t\tcritChance = this.battle.clampIntRange(critChance, 1, 255);\n\n\t\t\t\t// Last, we check deppending on ratio if the move critical hits or not.\n\t\t\t\t// We compare our critical hit chance against a random number between 0 and 255.\n\t\t\t\t// If the random number is lower, we get a critical hit. This means there is always a 1/255 chance of not hitting critically.\n\t\t\t\tif (critChance > 0) {\n\t\t\t\t\tisCrit = this.battle.randomChance(critChance, 256);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// There is a critical hit.\n\t\t\tif (isCrit && this.battle.runEvent('CriticalHit', target, null, move)) {\n\t\t\t\ttarget.getMoveHitData(move).crit = true;\n\t\t\t}\n\n\t\t\t// Happens after crit calculation.\n\t\t\tif (basePower) {\n\t\t\t\tbasePower = this.battle.runEvent('BasePower', source, target, move, basePower);\n\t\t\t\tif (basePower && move.basePowerModifier) {\n\t\t\t\t\tbasePower *= move.basePowerModifier;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!basePower) return 0;\n\t\t\tbasePower = this.battle.clampIntRange(basePower, 1);\n\n\t\t\t// We now check attacker's and defender's stats.\n\t\t\tlet level = source.level;\n\t\t\tconst attacker = move.overrideOffensivePokemon === 'target' ? target : source;\n\t\t\tconst defender = move.overrideDefensivePokemon === 'source' ? source : target;\n\n\t\t\tconst isPhysical = move.category === 'Physical';\n\t\t\tconst atkType: StatIDExceptHP = move.overrideOffensiveStat || (isPhysical ? 'atk' : 'spa');\n\t\t\tconst defType: StatIDExceptHP = move.overrideDefensiveStat || (isPhysical ? 'def' : 'spd');\n\n\t\t\tlet attack = attacker.getStat(atkType);\n\t\t\tlet defense = defender.getStat(defType);\n\n\t\t\t// In gen 1, screen effect is applied here.\n\t\t\tif ((defType === 'def' && defender.volatiles['reflect']) || (defType === 'spd' && defender.volatiles['lightscreen'])) {\n\t\t\t\tthis.battle.debug('Screen doubling (Sp)Def');\n\t\t\t\tdefense *= 2;\n\t\t\t\tdefense = this.battle.clampIntRange(defense, 1, 1998);\n\t\t\t}\n\n\t\t\t// In the event of a critical hit, the offense and defense changes are ignored.\n\t\t\t// This includes both boosts and screens.\n\t\t\t// Also, level is doubled in damage calculation.\n\t\t\tif (isCrit) {\n\t\t\t\tmove.ignoreOffensive = true;\n\t\t\t\tmove.ignoreDefensive = true;\n\t\t\t\tlevel *= 2;\n\t\t\t\tif (!suppressMessages) this.battle.add('-crit', target);\n\t\t\t}\n\n\t\t\tif (move.ignoreOffensive) {\n\t\t\t\tthis.battle.debug('Negating (sp)atk boost/penalty.');\n\t\t\t\tattack = attacker.getStat(atkType, true);\n\t\t\t}\n\n\t\t\tif (move.ignoreDefensive) {\n\t\t\t\tthis.battle.debug('Negating (sp)def boost/penalty.');\n\t\t\t\tdefense = target.getStat(defType, true);\n\t\t\t}\n\n\t\t\t// When either attack or defense are higher than 256, they are both divided by 4 and moded by 256.\n\t\t\t// This is what causes the rollover bugs.\n\t\t\tif (attack >= 256 || defense >= 256) {\n\t\t\t\tattack = this.battle.clampIntRange(Math.floor(attack / 4) % 256, 1);\n\t\t\t\t// Defense isn't checked on the cartridge, but we don't want those / 0 bugs on the sim.\n\t\t\t\tdefense = this.battle.clampIntRange(Math.floor(defense / 4) % 256, 1);\n\t\t\t}\n\n\t\t\t// Self destruct moves halve defense at this point.\n\t\t\tif (move.selfdestruct && defType === 'def') {\n\t\t\t\tdefense = this.battle.clampIntRange(Math.floor(defense / 2), 1);\n\t\t\t}\n\n\t\t\t// Let's go with the calculation now that we have what we need.\n\t\t\t// We do it step by step just like the game does.\n\t\t\tlet damage = level * 2;\n\t\t\tdamage = Math.floor(damage / 5);\n\t\t\tdamage += 2;\n\t\t\tdamage *= basePower;\n\t\t\tdamage *= attack;\n\t\t\tdamage = Math.floor(damage / defense);\n\t\t\tdamage = this.battle.clampIntRange(Math.floor(damage / 50), 0, 997);\n\t\t\tdamage += 2;\n\n\t\t\t// STAB damage bonus, the \"???\" type never gets STAB\n\t\t\tif (type !== '???' && source.hasType(type)) {\n\t\t\t\tdamage += Math.floor(damage / 2);\n\t\t\t}\n\n\t\t\t// Type effectiveness.\n\t\t\t// In Gen 1, type effectiveness is applied against each of the target's types.\n\t\t\tfor (const targetType of target.types) {\n\t\t\t\tconst typeMod = this.battle.dex.getEffectiveness(type, targetType);\n\t\t\t\tif (typeMod > 0) {\n\t\t\t\t\t// Super effective against targetType\n\t\t\t\t\tdamage *= 20;\n\t\t\t\t\tdamage = Math.floor(damage / 10);\n\t\t\t\t}\n\t\t\t\tif (typeMod < 0) {\n\t\t\t\t\t// Not very effective against targetType\n\t\t\t\t\tdamage *= 5;\n\t\t\t\t\tdamage = Math.floor(damage / 10);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst totalTypeMod = target.runEffectiveness(move);\n\t\t\tif (totalTypeMod > 0) {\n\t\t\t\tif (!suppressMessages) this.battle.add('-supereffective', target);\n\t\t\t}\n\t\t\tif (totalTypeMod < 0) {\n\t\t\t\tif (!suppressMessages) this.battle.add('-resisted', target);\n\t\t\t}\n\n\t\t\t// If damage becomes 0, the move is made to miss.\n\t\t\t// This occurs when damage was either 2 or 3 prior to applying STAB/Type matchup, and target is 4x resistant to the move.\n\t\t\tif (damage === 0) return damage;\n\n\t\t\t// Apply random factor if damage is greater than 1\n\t\t\tif (damage > 1) {\n\t\t\t\tdamage *= this.battle.random(217, 256);\n\t\t\t\tdamage = Math.floor(damage / 255);\n\t\t\t}\n\n\t\t\t// We are done, this is the final damage.\n\t\t\treturn Math.floor(damage);\n\t\t},\n\t},\n};\n"]}
1
+ {"version":3,"sources":["/Users/kjs/Code/src/github.com/pkmn/ps/mods/build/gen1stadium/index.js","../../src/gen1stadium/conditions.ts","../../src/gen1stadium/rulesets.ts","../../src/gen1stadium/moves.ts","../../src/gen1stadium/scripts.ts"],"names":[],"mappings":"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","file":"/Users/kjs/Code/src/github.com/pkmn/ps/mods/build/gen1stadium/index.js","sourcesContent":[null,"import type {ModdedConditionDataTable} from '@pkmn/sim';\n\nexport const Conditions: ModdedConditionDataTable = {\n\tbrn: {\n\t\tname: 'brn',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'brn');\n\t\t},\n\t\tonAfterMoveSelfPriority: 2,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t\tonAfterSwitchInSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t},\n\tpar: {\n\t\tname: 'par',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'par');\n\t\t},\n\t\tonBeforeMovePriority: 2,\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (this.randomChance(63, 256)) {\n\t\t\t\tthis.add('cant', pokemon, 'par');\n\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t\tpokemon.removeVolatile('lockedmove');\n\t\t\t\tpokemon.removeVolatile('twoturnmove');\n\t\t\t\tpokemon.removeVolatile('invulnerability');\n\t\t\t\tpokemon.removeVolatile('partialtrappinglock');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t},\n\tslp: {\n\t\tname: 'slp',\n\t\teffectType: 'Status',\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tif (sourceEffect && sourceEffect.effectType === 'Move') {\n\t\t\t\tthis.add('-status', target, 'slp', '[from] move: ' + sourceEffect.name);\n\t\t\t} else {\n\t\t\t\tthis.add('-status', target, 'slp');\n\t\t\t}\n\t\t\t// 1-3 turns\n\t\t\tthis.effectState.startTime = this.random(1, 4);\n\t\t\tthis.effectState.time = this.effectState.startTime;\n\n\t\t\tif (target.removeVolatile('nightmare')) {\n\t\t\t\tthis.add('-end', target, 'Nightmare', '[silent]');\n\t\t\t}\n\t\t},\n\t\tonBeforeMovePriority: 2,\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tpokemon.statusState.time--;\n\t\t\tthis.add('cant', pokemon, 'slp');\n\t\t\tpokemon.lastMove = null;\n\t\t\treturn false;\n\t\t},\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tif (pokemon.statusState.time <= 0) pokemon.cureStatus();\n\t\t},\n\t},\n\tfrz: {\n\t\tname: 'frz',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'frz');\n\t\t},\n\t\tonBeforeMovePriority: 2,\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tthis.add('cant', pokemon, 'frz');\n\t\t\tpokemon.lastMove = null;\n\t\t\treturn false;\n\t\t},\n\t\tonHit(target, source, move) {\n\t\t\tif (move.type === 'Fire' && move.category !== 'Status') {\n\t\t\t\ttarget.cureStatus();\n\t\t\t}\n\t\t},\n\t},\n\tpsn: {\n\t\tname: 'psn',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'psn');\n\t\t},\n\t\tonAfterMoveSelfPriority: 2,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t\tonAfterSwitchInSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t},\n\tconfusion: {\n\t\tinherit: true,\n\t\tonStart(target) {\n\t\t\tthis.add('-start', target, 'confusion');\n\t\t\tthis.effectState.time = this.random(2, 6);\n\t\t},\n\t},\n\tflinch: {\n\t\tinherit: true,\n\t\tonStart() {},\n\t},\n\tpartiallytrapped: {\n\t\tname: 'partiallytrapped',\n\t\tduration: 2,\n\t\tonBeforeMovePriority: 1,\n\t\tonStart(target, source, effect) {\n\t\t\tthis.add('-activate', target, 'move: ' + effect, '[of] ' + source);\n\t\t},\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (this.effectState.source && (!this.effectState.source.isActive || this.effectState.source.hp <= 0)) {\n\t\t\t\tpokemon.removeVolatile('partiallytrapped');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('cant', pokemon, 'partiallytrapped');\n\t\t\treturn false;\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tthis.add('-end', pokemon, this.effectState.sourceEffect, '[partiallytrapped]');\n\t\t},\n\t},\n};\n","import type {ModdedFormatDataTable} from '@pkmn/sim';\n\nexport const Rulesets: ModdedFormatDataTable = {\n\tstandard: {\n\t\teffectType: 'ValidatorRule',\n\t\tname: 'Standard',\n\t\truleset: ['Obtainable', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Exact HP Mod', 'Cancel Mod'],\n\t},\n};\n","import type {ActiveMove, ModdedMoveDataTable} from '@pkmn/sim';\n\nexport const Moves: ModdedMoveDataTable = {\n\tbide: {\n\t\tinherit: true,\n\t\tpriority: 0,\n\t\taccuracy: true,\n\t\tcondition: {\n\t\t\tdurationCallback(target, source, effect) {\n\t\t\t\treturn this.random(3, 5);\n\t\t\t},\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.effectState.totalDamage = 0;\n\t\t\t\tthis.effectState.lastDamage = 0;\n\t\t\t\tthis.add('-start', pokemon, 'Bide');\n\t\t\t},\n\t\t\tonHit(target, source, move) {\n\t\t\t\tif (source && source !== target && move.category !== 'Physical' && move.category !== 'Special') {\n\t\t\t\t\tconst damage = this.effectState.totalDamage;\n\t\t\t\t\tthis.effectState.totalDamage += damage;\n\t\t\t\t\tthis.effectState.lastDamage = damage;\n\t\t\t\t\tthis.effectState.sourceSlot = source.getSlot();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDamage(damage, target, source, move) {\n\t\t\t\tif (!source || source.isAlly(target)) return;\n\t\t\t\tif (!move || move.effectType !== 'Move') return;\n\t\t\t\tif (!damage && this.effectState.lastDamage > 0) {\n\t\t\t\t\tdamage = this.effectState.totalDamage;\n\t\t\t\t}\n\t\t\t\tthis.effectState.totalDamage += damage;\n\t\t\t\tthis.effectState.lastDamage = damage;\n\t\t\t\tthis.effectState.sourceSlot = source.getSlot();\n\t\t\t},\n\t\t\tonAfterSetStatus(status, pokemon) {\n\t\t\t\t// Sleep, freeze, and partial trap will just pause duration.\n\t\t\t\tif (pokemon.volatiles['flinch']) {\n\t\t\t\t\tthis.effectState.duration++;\n\t\t\t\t} else if (pokemon.volatiles['partiallytrapped']) {\n\t\t\t\t\tthis.effectState.duration++;\n\t\t\t\t} else {\n\t\t\t\t\tswitch (status.id) {\n\t\t\t\t\tcase 'slp':\n\t\t\t\t\tcase 'frz':\n\t\t\t\t\t\tthis.effectState.duration++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBeforeMove(pokemon, t, move) {\n\t\t\t\tif (this.effectState.duration === 1) {\n\t\t\t\t\tthis.add('-end', pokemon, 'Bide');\n\t\t\t\t\tif (!this.effectState.totalDamage) {\n\t\t\t\t\t\tthis.debug(\"Bide failed because no damage was taken\");\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\tconst target = this.getAtSlot(this.effectState.sourceSlot);\n\t\t\t\t\tif (target.isSemiInvulnerable()) {\n\t\t\t\t\t\tthis.add('-message', 'The foe ' + target.name + ' can\\'t be hit while flying!');\n\t\t\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.actions.moveHit(target, pokemon, move, {damage: this.effectState.totalDamage * 2} as ActiveMove);\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, 'Bide');\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tif (!pokemon.hasMove('bide')) {\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 !== 'bide') {\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\ttype: \"???\", // Will look as Normal but it's STAB-less\n\t},\n\tbind: {\n\t\tinherit: true,\n\t\t// FIXME: onBeforeMove() {},\n\t},\n\tclamp: {\n\t\tinherit: true,\n\t\t// FIXME: onBeforeMove() {},\n\t},\n\tcounter: {\n\t\tinherit: true,\n\t\tignoreImmunity: true,\n\t\twillCrit: false,\n\t\tbasePower: 1,\n\t\tdamageCallback(pokemon, target) {\n\t\t\t// Counter mechanics in Stadium 1:\n\t\t\t// - a move is Counterable if it is Normal or Fighting type, has nonzero Base Power, and is not Counter\n\t\t\t// - Counter succeeds if the target used a Counterable move earlier this turn\n\n\t\t\tconst lastMoveThisTurn = target.side.lastMove && target.side.lastMove.id === target.side.lastSelectedMove &&\n\t\t\t\t!this.queue.willMove(target) && this.dex.moves.get(target.side.lastMove.id);\n\t\t\tif (!lastMoveThisTurn) {\n\t\t\t\tthis.debug(\"Stadium 1 Counter: last move was not this turn\");\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst lastMoveThisTurnIsCounterable = lastMoveThisTurn && lastMoveThisTurn.basePower > 0 &&\n\t\t\t\t['Normal', 'Fighting'].includes(lastMoveThisTurn.type) && lastMoveThisTurn.id !== 'counter';\n\t\t\tif (!lastMoveThisTurnIsCounterable) {\n\t\t\t\tthis.debug(`Stadium 1 Counter: last move ${lastMoveThisTurn.name} was not Counterable`);\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.lastDamage <= 0) {\n\t\t\t\tthis.debug(\"Stadium 1 Counter: no previous damage exists\");\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn 2 * this.lastDamage;\n\t\t},\n\t},\n\tfirespin: {\n\t\tinherit: true,\n\t\t// FIXME: onBeforeMove() {},\n\t},\n\thaze: {\n\t\tinherit: true,\n\t\tonHit(target, source) {\n\t\t\tthis.add('-activate', target, 'move: Haze');\n\t\t\tthis.add('-clearallboost', '[silent]');\n\t\t\tfor (const pokemon of this.getAllActive()) {\n\t\t\t\tpokemon.clearBoosts();\n\t\t\t\tpokemon.cureStatus(true);\n\t\t\t\tfor (const id of Object.keys(pokemon.volatiles)) {\n\t\t\t\t\tpokemon.removeVolatile(id);\n\t\t\t\t\tthis.add('-end', pokemon, id, '[silent]');\n\t\t\t\t}\n\t\t\t\tpokemon.recalculateStats!();\n\t\t\t}\n\t\t},\n\t},\n\thyperbeam: {\n\t\tinherit: true,\n\t\tonMoveFail(target, source, move) {\n\t\t\tsource.addVolatile('mustrecharge');\n\t\t},\n\t},\n\tpsywave: {\n\t\tinherit: true,\n\t\tbasePower: 1,\n\t\tdamageCallback(pokemon) {\n\t\t\treturn this.random(1, this.trunc(1.5 * pokemon.level));\n\t\t},\n\t},\n\trage: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tvolatileStatus: 'rage',\n\t\t},\n\t\tcondition: {\n\t\t\t// Rage lock\n\t\t\tonStart(target, source, effect) {\n\t\t\t\tthis.effectState.move = 'rage';\n\t\t\t},\n\t\t\tonLockMove: 'rage',\n\t\t\tonHit(target, source, move) {\n\t\t\t\tif (target.boosts.atk < 6 && (move.category !== 'Status' || move.id === 'disable')) {\n\t\t\t\t\tthis.boost({atk: 1});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\trecover: {\n\t\tinherit: true,\n\t\theal: null,\n\t\tonHit(target) {\n\t\t\tif (target.hp === target.maxhp) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.heal(Math.floor(target.maxhp / 2), target, target);\n\t\t},\n\t},\n\trest: {\n\t\tinherit: true,\n\t\tonHit(target, source, move) {\n\t\t\t// Fails if the difference between\n\t\t\t// max HP and current HP is 0, 255, or 511\n\t\t\tif (target.hp >= target.maxhp) return false;\n\t\t\tif (!target.setStatus('slp', source, move)) return false;\n\t\t\ttarget.statusState.time = 2;\n\t\t\ttarget.statusState.startTime = 2;\n\t\t\ttarget.recalculateStats!(); // Stadium Rest removes statdrops given by Major Status Conditions.\n\t\t\tthis.heal(target.maxhp); // Aesthetic only as the healing happens after you fall asleep in-game\n\t\t},\n\t},\n\tsoftboiled: {\n\t\tinherit: true,\n\t\theal: null,\n\t\tonHit(target) {\n\t\t\t// Fail when health is 255 or 511 less than max\n\t\t\tif (target.hp === target.maxhp) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.heal(Math.floor(target.maxhp / 2), target, target);\n\t\t},\n\t},\n\tsubstitute: {\n\t\tinherit: true,\n\t\tonTryHit(target) {\n\t\t\tif (target.volatiles['substitute']) {\n\t\t\t\tthis.add('-fail', target, 'move: Substitute');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// Stadium fixes the 25% = you die gag\n\t\t\tif (target.hp <= target.maxhp / 4) {\n\t\t\t\tthis.add('-fail', target, 'move: Substitute', '[weak]');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\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\tonTryHitPriority: -1,\n\t\t\tonTryHit(target, source, move) {\n\t\t\t\tif (target === source) {\n\t\t\t\t\tthis.debug('sub bypass: self hit');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (move.drain) {\n\t\t\t\t\tthis.add('-miss', source);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (move.category === 'Status') {\n\t\t\t\t\tconst SubBlocked = ['leechseed', 'lockon', 'mindreader', 'nightmare'];\n\t\t\t\t\tif (move.status || move.boosts || move.volatileStatus === 'confusion' || SubBlocked.includes(move.id)) {\n\t\t\t\t\t\tthis.add('-activate', target, 'Substitute', '[block] ' + move.name);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (move.volatileStatus && target === source) return;\n\t\t\t\tlet damage = this.actions.getDamage(source, target, move);\n\t\t\t\tif (damage && damage > target.volatiles['substitute'].hp) {\n\t\t\t\t\tdamage = target.volatiles['substitute'].hp;\n\t\t\t\t}\n\t\t\t\tif (!damage && damage !== 0) return null;\n\t\t\t\tdamage = this.runEvent('SubDamage', target, source, move, damage);\n\t\t\t\tif (!damage && damage !== 0) return damage;\n\t\t\t\ttarget.volatiles['substitute'].hp -= damage;\n\t\t\t\tthis.lastDamage = damage;\n\t\t\t\tif (target.volatiles['substitute'].hp <= 0) {\n\t\t\t\t\tthis.debug('Substitute broke');\n\t\t\t\t\ttarget.removeVolatile('substitute');\n\t\t\t\t\ttarget.subFainted = true;\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\t// Drain/recoil does not happen if the substitute breaks\n\t\t\t\tif (target.volatiles['substitute']) {\n\t\t\t\t\tif (move.recoil) {\n\t\t\t\t\t\tthis.damage(this.clampIntRange(Math.floor(damage * move.recoil[0] / move.recoil[1]), 1), source, target, 'recoil');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.runEvent('AfterSubDamage', target, source, move, damage);\n\t\t\t\t// Add here counter damage\n\t\t\t\tconst lastAttackedBy = target.getLastAttackedBy();\n\t\t\t\tif (!lastAttackedBy) {\n\t\t\t\t\ttarget.attackedBy.push({source: source, move: move.id, damage: damage, slot: source.getSlot(), thisTurn: true});\n\t\t\t\t} else {\n\t\t\t\t\tlastAttackedBy.move = move.id;\n\t\t\t\t\tlastAttackedBy.damage = damage;\n\t\t\t\t}\n\t\t\t\treturn 0;\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\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Normal\",\n\t},\n\tstruggle: {\n\t\tinherit: true,\n\t\tignoreImmunity: {'Normal': true},\n\t},\n\twrap: {\n\t\tinherit: true,\n\t\t// FIXME: onBeforeMove() {},\n\t},\n};\n","import type {ActiveMove, BoostID, ModdedBattleScriptsData, StatIDExceptHP} from '@pkmn/sim';\n\n/**\n * Stadium mechanics inherit from gen 1 mechanics, but fixes some stuff.\n */\n\nconst SKIP_LASTDAMAGE = new Set([\n\t'confuseray', 'conversion', 'counter', 'focusenergy', 'glare', 'haze', 'leechseed', 'lightscreen',\n\t'mimic', 'mist', 'poisongas', 'poisonpowder', 'recover', 'reflect', 'rest', 'softboiled',\n\t'splash', 'stunspore', 'substitute', 'supersonic', 'teleport', 'thunderwave', 'toxic', 'transform',\n]);\n\nexport const Scripts: ModdedBattleScriptsData = {\n\tinherit: 'gen1',\n\tgen: 1,\n\t// BattlePokemon scripts. Stadium shares gen 1 code but it fixes some problems with it.\n\tpokemon: {\n\t\tinherit: true,\n\t\t// This is run on Stadium after boosts and status changes.\n\t\trecalculateStats() {\n\t\t\tlet statName: StatIDExceptHP;\n\t\t\tfor (statName in this.storedStats) {\n\t\t\t\tlet stat = this.species.baseStats[statName];\n\t\t\t\tstat = Math.floor(\n\t\t\t\t\tMath.floor(\n\t\t\t\t\t\t2 * stat + this.set.ivs[statName] + Math.floor(this.set.evs[statName] / 4)\n\t\t\t\t\t) * this.level / 100 + 5\n\t\t\t\t);\n\t\t\t\tthis.baseStoredStats[statName] = this.storedStats[statName] = Math.floor(stat);\n\t\t\t\tthis.modifiedStats![statName] = Math.floor(stat);\n\t\t\t\t// Re-apply drops, if necessary.\n\t\t\t\tif (this.status === 'par' && statName === 'spe') this.modifyStat!('spe', 0.25);\n\t\t\t\tif (this.status === 'brn' && statName === 'atk') this.modifyStat!('atk', 0.5);\n\t\t\t\tif (this.boosts[statName] !== 0) {\n\t\t\t\t\tif (this.boosts[statName] >= 0) {\n\t\t\t\t\t\tthis.modifyStat!(statName, [1, 1.5, 2, 2.5, 3, 3.5, 4][this.boosts[statName]]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modifyStat!(statName, [100, 66, 50, 40, 33, 28, 25][-this.boosts[statName]] / 100);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.modifiedStats![statName] > 999) {\n\t\t\t\t\tthis.modifiedStats![statName] = 999;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Stadium's fixed boosting function.\n\t\tboostBy(boost) {\n\t\t\tlet changed = false;\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in boost) {\n\t\t\t\tlet delta = boost[i];\n\t\t\t\tif (delta === undefined) continue;\n\t\t\t\tthis.boosts[i] += delta;\n\t\t\t\tif (this.boosts[i] > 6) {\n\t\t\t\t\tdelta -= this.boosts[i] - 6;\n\t\t\t\t\tthis.boosts[i] = 6;\n\t\t\t\t}\n\t\t\t\tif (this.boosts[i] < -6) {\n\t\t\t\t\tdelta -= this.boosts[i] - (-6);\n\t\t\t\t\tthis.boosts[i] = -6;\n\t\t\t\t}\n\t\t\t\tif (delta) changed = true;\n\t\t\t}\n\t\t\tthis.recalculateStats!();\n\t\t\treturn changed;\n\t\t},\n\t\t// Remove stat recalculation logic from gen 1\n\t\tclearBoosts() {\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in this.boosts) {\n\t\t\t\tthis.boosts[i] = 0;\n\t\t\t}\n\t\t},\n\t},\n\tactions: {\n\t\tinherit: true,\n\t\trunMove(moveOrMoveName, pokemon, targetLoc, options) {\n\t\t\tlet sourceEffect = options?.sourceEffect;\n\t\t\tconst move = this.dex.getActiveMove(moveOrMoveName);\n\t\t\tconst target = this.battle.getTarget(pokemon, move, targetLoc);\n\t\t\tif (target?.subFainted) target.subFainted = null;\n\n\t\t\tthis.battle.setActiveMove(move, pokemon, target);\n\n\t\t\tif (pokemon.moveThisTurn || !this.battle.runEvent('BeforeMove', pokemon, target, move)) {\n\t\t\t\tthis.battle.debug('' + pokemon.fullname + ' move interrupted; movedThisTurn: ' + pokemon.moveThisTurn);\n\t\t\t\tthis.battle.clearActiveMove(true);\n\t\t\t\t// This is only run for sleep\n\t\t\t\tthis.battle.runEvent('AfterMoveSelf', pokemon, target, move);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (move.beforeMoveCallback) {\n\t\t\t\tif (move.beforeMoveCallback.call(this.battle, pokemon, target, move)) {\n\t\t\t\t\tthis.battle.clearActiveMove(true);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet lockedMove = this.battle.runEvent('LockMove', pokemon);\n\t\t\tif (lockedMove === true) lockedMove = false;\n\t\t\tif (\n\t\t\t\t!lockedMove &&\n\t\t\t\t(!pokemon.volatiles['partialtrappinglock'] || pokemon.volatiles['partialtrappinglock'].locked !== target)\n\t\t\t) {\n\t\t\t\tpokemon.deductPP(move, null, target);\n\t\t\t} else {\n\t\t\t\tsourceEffect = move;\n\t\t\t}\n\t\t\tthis.battle.actions.useMove(move, pokemon, {target, sourceEffect});\n\t\t},\n\t\t// This function deals with AfterMoveSelf events.\n\t\t// This leads with partial trapping moves shenanigans after the move has been used.\n\t\tuseMove(moveOrMoveName, pokemon, options) {\n\t\t\tlet sourceEffect = options?.sourceEffect;\n\t\t\tlet target = options?.target;\n\t\t\tconst moveResult = this.useMoveInner(moveOrMoveName, pokemon, {target, sourceEffect});\n\n\t\t\tif (!sourceEffect && this.battle.effect.id) sourceEffect = this.battle.effect;\n\t\t\tconst baseMove = this.battle.dex.moves.get(moveOrMoveName);\n\t\t\tlet move = this.battle.dex.getActiveMove(baseMove);\n\t\t\tif (target === undefined) target = this.battle.getRandomTarget(pokemon, move);\n\t\t\tif (move.target === 'self') {\n\t\t\t\ttarget = pokemon;\n\t\t\t}\n\t\t\tif (sourceEffect) move.sourceEffect = sourceEffect.id;\n\n\t\t\tthis.battle.singleEvent('ModifyMove', move, null, pokemon, target, move, move);\n\t\t\tif (baseMove.target !== move.target) {\n\t\t\t\t// Target changed in ModifyMove, so we must adjust it here\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 (baseMove.target !== move.target) {\n\t\t\t\t// Check again, this shouldn't ever happen on Gen 1.\n\t\t\t\ttarget = this.battle.getRandomTarget(pokemon, move);\n\t\t\t}\n\n\t\t\tif (move.id !== 'metronome') {\n\t\t\t\tif (move.id !== 'mirrormove' ||\n\t\t\t\t\t(!pokemon.side.foe.active[0]?.lastMove || pokemon.side.foe.active[0].lastMove?.id === 'mirrormove')) {\n\t\t\t\t\t// The move is our 'final' move (a failed Mirror Move, or any move that isn't Metronome or Mirror Move).\n\t\t\t\t\tpokemon.side.lastMove = move;\n\t\t\t\t\tpokemon.lastMove = move;\n\t\t\t\t\tthis.battle.singleEvent('AfterMove', move, null, pokemon, target, move);\n\n\t\t\t\t\t// If target fainted\n\t\t\t\t\tif (target && target.hp <= 0) {\n\t\t\t\t\t\tdelete pokemon.volatiles['partialtrappinglock'];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.battle.runEvent('AfterMoveSelf', pokemon, target, move);\n\t\t\t\t\t}\n\t\t\t\t\tif (pokemon.volatiles['mustrecharge']) this.battle.add('-mustrecharge', pokemon);\n\n\t\t\t\t\t// For partial trapping moves, we are saving the target.\n\t\t\t\t\tif (move.volatileStatus === 'partiallytrapped' && target && target.hp > 0) {\n\t\t\t\t\t\t// It hit, so let's remove must recharge volatile. Yup, this happens on Stadium.\n\t\t\t\t\t\ttarget.removeVolatile('mustrecharge');\n\t\t\t\t\t\t// Let's check if the lock exists\n\t\t\t\t\t\tif (pokemon.volatiles['partialtrappinglock'] && target.volatiles['partiallytrapped']) {\n\t\t\t\t\t\t\t// Here the partialtrappinglock volatile has been already applied\n\t\t\t\t\t\t\tif (!pokemon.volatiles['partialtrappinglock'].locked) {\n\t\t\t\t\t\t\t\t// If it's the first hit, we save the target\n\t\t\t\t\t\t\t\tpokemon.volatiles['partialtrappinglock'].locked = target;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} // If we move to here, the move failed and there's no partial trapping lock\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn moveResult;\n\t\t},\n\t\t// This is the function that actually uses the move, running ModifyMove events.\n\t\t// It uses the move and then deals with the effects after the move.\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\tconst baseMove = this.battle.dex.moves.get(moveOrMoveName);\n\t\t\tlet move = this.battle.dex.getActiveMove(baseMove);\n\t\t\tif (target === undefined) target = this.battle.getRandomTarget(pokemon, move);\n\t\t\tif (move.target === 'self') {\n\t\t\t\ttarget = pokemon;\n\t\t\t}\n\t\t\tif (sourceEffect) move.sourceEffect = sourceEffect.id;\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 (baseMove.target !== move.target) {\n\t\t\t\t// Target changed in ModifyMove, so we must adjust it here\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 (baseMove.target !== move.target) {\n\t\t\t\t// Check again, this shouldn't ever happen on Gen 1.\n\t\t\t\ttarget = this.battle.getRandomTarget(pokemon, move);\n\t\t\t\tthis.battle.debug('not a gen 1 mechanic');\n\t\t\t}\n\t\t\tif (!move) return false;\n\n\t\t\tlet attrs = '';\n\t\t\tif (pokemon.fainted) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (sourceEffect) attrs += '|[from]' + this.battle.dex.conditions.get(sourceEffect);\n\t\t\tthis.battle.addMove('move', pokemon, move.name, target + attrs);\n\n\t\t\tif (!this.battle.singleEvent('Try', move, null, pokemon, target, move)) {\n\t\t\t\treturn true;\n\t\t\t}\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\treturn true;\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\tlet damage: number | undefined | false | '' = false;\n\t\t\tif (!target || target.fainted) {\n\t\t\t\tthis.battle.attrLastMove('[notarget]');\n\t\t\t\tthis.battle.add('-notarget');\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// Store 0 damage for last damage if the move is not in the array.\n\t\t\tif (!SKIP_LASTDAMAGE.has(move.id)) this.battle.lastDamage = 0;\n\n\t\t\tdamage = this.tryMoveHit(target, pokemon, move);\n\n\t\t\t// Go ahead with results of the used move.\n\t\t\tif (damage === false) {\n\t\t\t\tthis.battle.singleEvent('MoveFail', move, null, target, pokemon, move);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!move.negateSecondary) {\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\tlet damage: number | false | undefined = 0;\n\n\t\t\t// First, check if the target is semi-invulnerable\n\t\t\tlet hitResult = this.battle.runEvent('Invulnerability', target, pokemon, move);\n\t\t\tif (hitResult === false) {\n\t\t\t\tthis.battle.attrLastMove('[miss]');\n\t\t\t\tthis.battle.add('-miss', pokemon);\n\t\t\t\tif (move.selfdestruct) {\n\t\t\t\t\tthis.battle.faint(pokemon, pokemon, move);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Then, check if the Pokemon is immune to this move.\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, true)\n\t\t\t) {\n\t\t\t\tif (move.selfdestruct) {\n\t\t\t\t\tthis.battle.faint(pokemon, pokemon, move);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\thitResult = this.battle.singleEvent('TryImmunity', move, null, target, pokemon, move);\n\t\t\tif (hitResult === false) {\n\t\t\t\tthis.battle.add('-immune', target);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Now, let's calculate the accuracy.\n\t\t\tlet accuracy = move.accuracy;\n\n\t\t\t// Partial trapping moves: true accuracy while it lasts\n\t\t\tif (pokemon.volatiles['partialtrappinglock']) {\n\t\t\t\tif (move.volatileStatus === 'partiallytrapped' && target === pokemon.volatiles['partialtrappinglock'].locked) {\n\t\t\t\t\taccuracy = true;\n\t\t\t\t} else if (pokemon.volatiles['partialtrappinglock'].locked !== target) {\n\t\t\t\t\t// The target switched, therefor, you fail using wrap.\n\t\t\t\t\tdelete pokemon.volatiles['partialtrappinglock'];\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// OHKO moves only have a chance to hit if the user is at least as fast as the target\n\t\t\tif (move.ohko) {\n\t\t\t\tif (target.speed > pokemon.speed) {\n\t\t\t\t\tthis.battle.add('-immune', target, '[ohko]');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Calculate true accuracy for gen 1, which uses 0-255.\n\t\t\t// Stadium uses the Gen 2 boost table for accuracy and evasiveness, except for 1/3 instead of 0.33\n\t\t\tconst boostTable = [1 / 3, 0.36, 0.43, 0.5, 0.66, 0.75, 1, 1.33, 1.66, 2, 2.33, 2.66, 3];\n\t\t\tif (accuracy !== true) {\n\t\t\t\taccuracy = Math.floor(accuracy * 255 / 100);\n\t\t\t\t// Check also for accuracy modifiers.\n\t\t\t\tif (!move.ignoreAccuracy) {\n\t\t\t\t\taccuracy = Math.floor(accuracy * boostTable[pokemon.boosts.accuracy + 6]);\n\t\t\t\t}\n\t\t\t\tif (!move.ignoreEvasion) {\n\t\t\t\t\taccuracy = Math.floor(accuracy * boostTable[-target.boosts.evasion + 6]);\n\t\t\t\t}\n\t\t\t\taccuracy = Math.min(accuracy, 255);\n\t\t\t}\n\t\t\taccuracy = this.battle.runEvent('Accuracy', target, pokemon, move, accuracy);\n\n\t\t\t// Stadium fixes the 1/256 accuracy bug.\n\t\t\tif (accuracy !== true && !this.battle.randomChance(accuracy + 1, 256)) {\n\t\t\t\tthis.battle.attrLastMove('[miss]');\n\t\t\t\tthis.battle.add('-miss', pokemon);\n\t\t\t\tdamage = false;\n\t\t\t\tthis.battle.lastDamage = 0;\n\t\t\t}\n\n\t\t\t// If damage is 0 and not false it means it didn't miss, let's calc.\n\t\t\tif (damage !== false) {\n\t\t\t\tif (move.multihit) {\n\t\t\t\t\tlet hits = move.multihit;\n\t\t\t\t\tif (Array.isArray(hits)) {\n\t\t\t\t\t\t// Yes, it's hardcoded... meh\n\t\t\t\t\t\tif (hits[0] === 2 && hits[1] === 5) {\n\t\t\t\t\t\t\thits = this.battle.sample([2, 2, 2, 3, 3, 3, 4, 5]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thits = this.battle.random(hits[0], hits[1] + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\thits = Math.floor(hits);\n\t\t\t\t\t// In gen 1, all the hits have the same damage for multihits move\n\t\t\t\t\tlet moveDamage: number | false | undefined = 0;\n\t\t\t\t\tlet i: number;\n\t\t\t\t\tfor (i = 0; i < hits && target.hp && pokemon.hp; i++) {\n\t\t\t\t\t\tmove.hit = i + 1;\n\t\t\t\t\t\tif (move.hit === hits) move.lastHit = true;\n\t\t\t\t\t\tmoveDamage = this.moveHit(target, pokemon, move);\n\t\t\t\t\t\tif (moveDamage === false) break;\n\t\t\t\t\t\tdamage = (moveDamage || 0);\n\t\t\t\t\t\t// Move damage is fixed to be the first move's damage\n\t\t\t\t\t\tif (i === 0) move.damage = damage;\n\t\t\t\t\t\tif (target.subFainted) {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tmove.damage = null;\n\t\t\t\t\tif (i === 0) return 1;\n\t\t\t\t\tthis.battle.add('-hitcount', target, i);\n\t\t\t\t} else {\n\t\t\t\t\tdamage = this.moveHit(target, pokemon, move);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (move.category !== 'Status') target.gotAttacked(move, damage, pokemon);\n\n\t\t\tif (move.selfdestruct) {\n\t\t\t\tthis.battle.faint(pokemon, pokemon, move);\n\t\t\t}\n\n\t\t\t// The move missed.\n\t\t\tif (damage === false) {\n\t\t\t\t// Delete the partial trap lock if necessary.\n\t\t\t\tdelete pokemon.volatiles['partialtrappinglock'];\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (move.ohko) this.battle.add('-ohko');\n\n\t\t\tif (!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\t\tmoveHit(target, pokemon, moveOrMoveName, moveData, isSecondary, isSelf) {\n\t\t\tlet damage: number | false | null | undefined = 0;\n\t\t\tconst move = this.dex.getActiveMove(moveOrMoveName);\n\n\t\t\tif (!isSecondary && !isSelf) this.battle.setActiveMove(move, pokemon, target);\n\t\t\tlet hitResult: number | boolean = true;\n\t\t\tif (!moveData) moveData = 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 (target) {\n\t\t\t\thitResult = this.battle.singleEvent('TryHit', moveData, {}, target, pokemon, move);\n\n\t\t\t\t// Partial trapping moves still apply their volatile to Pokémon behind a Sub\n\t\t\t\tconst targetHadSub = !!target.volatiles['substitute'];\n\t\t\t\tif (targetHadSub && moveData.volatileStatus && moveData.volatileStatus === 'partiallytrapped') {\n\t\t\t\t\ttarget.addVolatile(moveData.volatileStatus, pokemon, move);\n\t\t\t\t\tif (!pokemon.volatiles['partialtrappinglock'] || pokemon.volatiles['partialtrappinglock'].duration > 1) {\n\t\t\t\t\t\ttarget.volatiles[moveData.volatileStatus].duration = 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!hitResult) {\n\t\t\t\t\tif (hitResult === false) this.battle.add('-fail', target);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Only run the hit events for the hit itself, not the secondary or self hits\n\t\t\t\tif (!isSelf && !isSecondary) {\n\t\t\t\t\thitResult = this.battle.runEvent('TryHit', target, pokemon, move);\n\t\t\t\t\tif (!hitResult) {\n\t\t\t\t\t\tif (hitResult === false) this.battle.add('-fail', target);\n\t\t\t\t\t\t// Special Substitute hit flag\n\t\t\t\t\t\tif (hitResult !== 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.battle.runEvent('TryFieldHit', target, pokemon, move)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSecondary && !moveData.self) {\n\t\t\t\t\thitResult = this.battle.runEvent('TrySecondaryHit', target, pokemon, moveData);\n\t\t\t\t}\n\n\t\t\t\tif (hitResult === 0) {\n\t\t\t\t\ttarget = null;\n\t\t\t\t} else if (!hitResult) {\n\t\t\t\t\tif (hitResult === false) this.battle.add('-fail', target);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (target) {\n\t\t\t\tlet didSomething = false;\n\n\t\t\t\tdamage = this.getDamage(pokemon, target, moveData);\n\t\t\t\tif (damage && damage > target.hp) {\n\t\t\t\t\tdamage = target.hp;\n\t\t\t\t}\n\t\t\t\tif ((damage || damage === 0) && !target.fainted) {\n\t\t\t\t\tdamage = this.battle.damage(damage, target, pokemon, move);\n\t\t\t\t\tif (!(damage || damage === 0)) return false;\n\t\t\t\t\tdidSomething = true;\n\t\t\t\t} else if (damage === false && typeof hitResult === 'undefined') {\n\t\t\t\t\tthis.battle.add('-fail', target);\n\t\t\t\t}\n\t\t\t\tif (damage === false || damage === null) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (moveData.boosts && !target.fainted) {\n\t\t\t\t\tthis.battle.boost(moveData.boosts, target, pokemon, move);\n\t\t\t\t}\n\t\t\t\tif (moveData.heal && !target.fainted) {\n\t\t\t\t\tconst d = target.heal(Math.floor(target.maxhp * moveData.heal[0] / moveData.heal[1]));\n\t\t\t\t\tif (!d) {\n\t\t\t\t\t\tthis.battle.add('-fail', target);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.battle.add('-heal', target, target.getHealth);\n\t\t\t\t\tdidSomething = true;\n\t\t\t\t}\n\t\t\t\tif (moveData.status) {\n\t\t\t\t\tif (!target.status) {\n\t\t\t\t\t\ttarget.setStatus(moveData.status, pokemon, move);\n\t\t\t\t\t\ttarget.recalculateStats!();\n\t\t\t\t\t} else if (!isSecondary) {\n\t\t\t\t\t\tif (target.status === moveData.status) {\n\t\t\t\t\t\t\tthis.battle.add('-fail', target, target.status);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.battle.add('-fail', target);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdidSomething = true;\n\t\t\t\t}\n\t\t\t\tif (moveData.forceStatus) {\n\t\t\t\t\tif (target.setStatus(moveData.forceStatus, pokemon, move)) {\n\t\t\t\t\t\ttarget.recalculateStats!();\n\t\t\t\t\t\tdidSomething = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (moveData.volatileStatus) {\n\t\t\t\t\tif (target.addVolatile(moveData.volatileStatus, pokemon, move)) {\n\t\t\t\t\t\tdidSomething = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (moveData.sideCondition) {\n\t\t\t\t\tif (target.side.addSideCondition(moveData.sideCondition, pokemon, move)) {\n\t\t\t\t\t\tdidSomething = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (moveData.pseudoWeather) {\n\t\t\t\t\tif (this.battle.field.addPseudoWeather(moveData.pseudoWeather, pokemon, move)) {\n\t\t\t\t\t\tdidSomething = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Hit events\n\t\t\t\thitResult = this.battle.singleEvent('Hit', moveData, {}, target, pokemon, move);\n\t\t\t\tif (!isSelf && !isSecondary) {\n\t\t\t\t\tthis.battle.runEvent('Hit', target, pokemon, move);\n\t\t\t\t}\n\t\t\t\tif (!hitResult && !didSomething) {\n\t\t\t\t\tif (hitResult === false) this.battle.add('-fail', target);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Here's where self effects are applied.\n\t\t\tif (moveData.self) {\n\t\t\t\tthis.moveHit(pokemon, pokemon, move, moveData.self, isSecondary, true);\n\t\t\t}\n\n\t\t\t// Now we can save the partial trapping damage.\n\t\t\tif (pokemon.volatiles['partialtrappinglock']) {\n\t\t\t\tpokemon.volatiles['partialtrappinglock'].damage = this.battle.lastDamage;\n\t\t\t}\n\n\t\t\t// Apply move secondaries.\n\t\t\tif (moveData.secondaries && target && target.hp > 0) {\n\t\t\t\tfor (const secondary of moveData.secondaries) {\n\t\t\t\t\t// Multi-hit moves only roll for status once\n\t\t\t\t\tif (!move.multihit || move.lastHit) {\n\t\t\t\t\t\t// We check here whether to negate the probable secondary status if it's para, burn, or freeze.\n\t\t\t\t\t\t// In the game, this is checked and if true, the random number generator is not called.\n\t\t\t\t\t\t// That means that a move that does not share the type of the target can status it.\n\t\t\t\t\t\t// If a move that was not fire-type would exist on Gen 1, it could burn a Pokémon.\n\t\t\t\t\t\tif (!(secondary.status && ['par', 'brn', 'frz'].includes(secondary.status) && target.hasType(move.type))) {\n\t\t\t\t\t\t\tconst effectChance = Math.floor((secondary.chance || 100) * 255 / 100);\n\t\t\t\t\t\t\tif (typeof secondary.chance === 'undefined' || this.battle.randomChance(effectChance + 1, 256)) {\n\t\t\t\t\t\t\t\tthis.moveHit(target, pokemon, move, secondary, true, isSelf);\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}\n\t\t\t}\n\t\t\tif (move.selfSwitch && pokemon.hp) {\n\t\t\t\tpokemon.switchFlag = move.selfSwitch === true ? true : this.dex.toID(move.selfSwitch);\n\t\t\t}\n\n\t\t\treturn damage;\n\t\t},\n\t\tgetDamage(source, target, move, suppressMessages) {\n\t\t\t// First of all, we get the move.\n\t\t\tif (typeof move === 'string') {\n\t\t\t\tmove = this.dex.getActiveMove(move);\n\t\t\t} else if (typeof move === 'number') {\n\t\t\t\tmove = {\n\t\t\t\t\tbasePower: move,\n\t\t\t\t\ttype: '???',\n\t\t\t\t\tcategory: 'Physical',\n\t\t\t\t\twillCrit: false,\n\t\t\t\t\tflags: {},\n\t\t\t\t} as ActiveMove;\n\t\t\t}\n\n\t\t\t// Let's see if the target is immune to the move.\n\t\t\tif (!move.ignoreImmunity || (move.ignoreImmunity !== true && !move.ignoreImmunity[move.type])) {\n\t\t\t\tif (!target.runImmunity(move.type, true)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Is it an OHKO move?\n\t\t\tif (move.ohko) {\n\t\t\t\treturn 65535;\n\t\t\t}\n\n\t\t\t// We edit the damage through move's damage callback if necessary.\n\t\t\tif (move.damageCallback) {\n\t\t\t\treturn move.damageCallback.call(this.battle, source, target);\n\t\t\t}\n\n\t\t\t// We take damage from damage=level moves (seismic toss).\n\t\t\tif (move.damage === 'level') {\n\t\t\t\treturn source.level;\n\t\t\t}\n\n\t\t\t// If there's a fix move damage, we return that.\n\t\t\tif (move.damage) {\n\t\t\t\treturn move.damage;\n\t\t\t}\n\n\t\t\t// If it's the first hit on a Normal-type partially trap move, it hits Ghosts anyways but damage is 0.\n\t\t\tif (move.volatileStatus === 'partiallytrapped' && move.type === 'Normal' && target.hasType('Ghost')) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Let's check if we are in middle of a partial trap sequence to return the previous damage.\n\t\t\tif (source.volatiles['partialtrappinglock'] && (target === source.volatiles['partialtrappinglock'].locked)) {\n\t\t\t\treturn source.volatiles['partialtrappinglock'].damage;\n\t\t\t}\n\n\t\t\t// We check the category and typing to calculate later on the damage.\n\t\t\tif (!move.category) move.category = 'Physical';\n\t\t\t// '???' is typeless damage: used for Struggle and Confusion etc\n\t\t\tif (!move.type) move.type = '???';\n\t\t\tconst type = move.type;\n\n\t\t\t// We get the base power and apply basePowerCallback if necessary.\n\t\t\tlet basePower: number | false | null = move.basePower;\n\t\t\tif (move.basePowerCallback) {\n\t\t\t\tbasePower = move.basePowerCallback.call(this.battle, source, target, move);\n\t\t\t}\n\t\t\tif (!basePower) {\n\t\t\t\treturn basePower === 0 ? undefined : basePower;\n\t\t\t}\n\t\t\tbasePower = this.battle.clampIntRange(basePower, 1);\n\n\t\t\t// Checking for the move's Critical Hit possibility. We check if it's a 100% crit move, otherwise we calculate the chance.\n\t\t\tlet isCrit = move.willCrit || false;\n\t\t\tif (!isCrit) {\n\t\t\t\t// In Stadium, the critical chance is based on speed.\n\t\t\t\t// First, we get the base speed and store it. Then we add 76. This is our current crit chance.\n\t\t\t\tlet critChance = source.species.baseStats['spe'] + 76;\n\n\t\t\t\t// Now we right logical shift it two places, essentially dividing by 4 and flooring it.\n\t\t\t\tcritChance = critChance >> 2;\n\n\t\t\t\t// Now we check for focus energy volatile.\n\t\t\t\tif (source.volatiles['focusenergy']) {\n\t\t\t\t\t// If it exists, crit chance is multiplied by 4 and floored with a logical left shift.\n\t\t\t\t\tcritChance = critChance << 2;\n\t\t\t\t\t// Then we add 160.\n\t\t\t\t\tcritChance += 160;\n\t\t\t\t} else {\n\t\t\t\t\t// If it is not active, we left shift it by 1.\n\t\t\t\t\tcritChance = critChance << 1;\n\t\t\t\t}\n\n\t\t\t\t// Now we check for the move's critical hit ratio.\n\t\t\t\tif (move.critRatio === 2) {\n\t\t\t\t\t// High crit ratio, we multiply the result so far by 4.\n\t\t\t\t\tcritChance = critChance << 2;\n\t\t\t\t} else if (move.critRatio === 1) {\n\t\t\t\t\t// Normal hit ratio, we divide the crit chance by 2 and floor the result again.\n\t\t\t\t\tcritChance = critChance >> 1;\n\t\t\t\t}\n\n\t\t\t\t// Now we make sure it's a number between 1 and 255.\n\t\t\t\tcritChance = this.battle.clampIntRange(critChance, 1, 255);\n\n\t\t\t\t// Last, we check deppending on ratio if the move critical hits or not.\n\t\t\t\t// We compare our critical hit chance against a random number between 0 and 255.\n\t\t\t\t// If the random number is lower, we get a critical hit. This means there is always a 1/255 chance of not hitting critically.\n\t\t\t\tif (critChance > 0) {\n\t\t\t\t\tisCrit = this.battle.randomChance(critChance, 256);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// There is a critical hit.\n\t\t\tif (isCrit && this.battle.runEvent('CriticalHit', target, null, move)) {\n\t\t\t\ttarget.getMoveHitData(move).crit = true;\n\t\t\t}\n\n\t\t\t// Happens after crit calculation.\n\t\t\tif (basePower) {\n\t\t\t\tbasePower = this.battle.runEvent('BasePower', source, target, move, basePower);\n\t\t\t\tif (basePower && move.basePowerModifier) {\n\t\t\t\t\tbasePower *= move.basePowerModifier;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!basePower) return 0;\n\t\t\tbasePower = this.battle.clampIntRange(basePower, 1);\n\n\t\t\t// We now check attacker's and defender's stats.\n\t\t\tlet level = source.level;\n\t\t\tconst attacker = move.overrideOffensivePokemon === 'target' ? target : source;\n\t\t\tconst defender = move.overrideDefensivePokemon === 'source' ? source : target;\n\n\t\t\tconst isPhysical = move.category === 'Physical';\n\t\t\tconst atkType: StatIDExceptHP = move.overrideOffensiveStat || (isPhysical ? 'atk' : 'spa');\n\t\t\tconst defType: StatIDExceptHP = move.overrideDefensiveStat || (isPhysical ? 'def' : 'spd');\n\n\t\t\tlet attack = attacker.getStat(atkType);\n\t\t\tlet defense = defender.getStat(defType);\n\n\t\t\t// In gen 1, screen effect is applied here.\n\t\t\tif ((defType === 'def' && defender.volatiles['reflect']) || (defType === 'spd' && defender.volatiles['lightscreen'])) {\n\t\t\t\tthis.battle.debug('Screen doubling (Sp)Def');\n\t\t\t\tdefense *= 2;\n\t\t\t\tdefense = this.battle.clampIntRange(defense, 1, 1998);\n\t\t\t}\n\n\t\t\t// In the event of a critical hit, the offense and defense changes are ignored.\n\t\t\t// This includes both boosts and screens.\n\t\t\t// Also, level is doubled in damage calculation.\n\t\t\tif (isCrit) {\n\t\t\t\tmove.ignoreOffensive = true;\n\t\t\t\tmove.ignoreDefensive = true;\n\t\t\t\tlevel *= 2;\n\t\t\t\tif (!suppressMessages) this.battle.add('-crit', target);\n\t\t\t}\n\n\t\t\tif (move.ignoreOffensive) {\n\t\t\t\tthis.battle.debug('Negating (sp)atk boost/penalty.');\n\t\t\t\tattack = attacker.getStat(atkType, true);\n\t\t\t}\n\n\t\t\tif (move.ignoreDefensive) {\n\t\t\t\tthis.battle.debug('Negating (sp)def boost/penalty.');\n\t\t\t\tdefense = target.getStat(defType, true);\n\t\t\t}\n\n\t\t\t// When either attack or defense are higher than 256, they are both divided by 4 and moded by 256.\n\t\t\t// This is what causes the rollover bugs.\n\t\t\tif (attack >= 256 || defense >= 256) {\n\t\t\t\tattack = this.battle.clampIntRange(Math.floor(attack / 4) % 256, 1);\n\t\t\t\t// Defense isn't checked on the cartridge, but we don't want those / 0 bugs on the sim.\n\t\t\t\tdefense = this.battle.clampIntRange(Math.floor(defense / 4) % 256, 1);\n\t\t\t}\n\n\t\t\t// Self destruct moves halve defense at this point.\n\t\t\tif (move.selfdestruct && defType === 'def') {\n\t\t\t\tdefense = this.battle.clampIntRange(Math.floor(defense / 2), 1);\n\t\t\t}\n\n\t\t\t// Let's go with the calculation now that we have what we need.\n\t\t\t// We do it step by step just like the game does.\n\t\t\tlet damage = level * 2;\n\t\t\tdamage = Math.floor(damage / 5);\n\t\t\tdamage += 2;\n\t\t\tdamage *= basePower;\n\t\t\tdamage *= attack;\n\t\t\tdamage = Math.floor(damage / defense);\n\t\t\tdamage = this.battle.clampIntRange(Math.floor(damage / 50), 0, 997);\n\t\t\tdamage += 2;\n\n\t\t\t// STAB damage bonus, the \"???\" type never gets STAB\n\t\t\tif (type !== '???' && source.hasType(type)) {\n\t\t\t\tdamage += Math.floor(damage / 2);\n\t\t\t}\n\n\t\t\t// Type effectiveness.\n\t\t\t// In Gen 1, type effectiveness is applied against each of the target's types.\n\t\t\tfor (const targetType of target.types) {\n\t\t\t\tconst typeMod = this.battle.dex.getEffectiveness(type, targetType);\n\t\t\t\tif (typeMod > 0) {\n\t\t\t\t\t// Super effective against targetType\n\t\t\t\t\tdamage *= 20;\n\t\t\t\t\tdamage = Math.floor(damage / 10);\n\t\t\t\t}\n\t\t\t\tif (typeMod < 0) {\n\t\t\t\t\t// Not very effective against targetType\n\t\t\t\t\tdamage *= 5;\n\t\t\t\t\tdamage = Math.floor(damage / 10);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst totalTypeMod = target.runEffectiveness(move);\n\t\t\tif (totalTypeMod > 0) {\n\t\t\t\tif (!suppressMessages) this.battle.add('-supereffective', target);\n\t\t\t}\n\t\t\tif (totalTypeMod < 0) {\n\t\t\t\tif (!suppressMessages) this.battle.add('-resisted', target);\n\t\t\t}\n\n\t\t\t// If damage becomes 0, the move is made to miss.\n\t\t\t// This occurs when damage was either 2 or 3 prior to applying STAB/Type matchup, and target is 4x resistant to the move.\n\t\t\tif (damage === 0) return damage;\n\n\t\t\t// Apply random factor if damage is greater than 1\n\t\t\tif (damage > 1) {\n\t\t\t\tdamage *= this.battle.random(217, 256);\n\t\t\t\tdamage = Math.floor(damage / 255);\n\t\t\t}\n\n\t\t\t// We are done, this is the final damage.\n\t\t\treturn Math.floor(damage);\n\t\t},\n\t},\n};\n"]}
@@ -507,7 +507,8 @@ var Scripts = {
507
507
  },
508
508
  actions: {
509
509
  inherit: true,
510
- runMove(moveOrMoveName, pokemon, targetLoc, sourceEffect) {
510
+ runMove(moveOrMoveName, pokemon, targetLoc, options) {
511
+ let sourceEffect = options == null ? void 0 : options.sourceEffect;
511
512
  const move = this.dex.getActiveMove(moveOrMoveName);
512
513
  const target = this.battle.getTarget(pokemon, move, targetLoc);
513
514
  if (target == null ? void 0 : target.subFainted) target.subFainted = null;
@@ -531,13 +532,15 @@ var Scripts = {
531
532
  } else {
532
533
  sourceEffect = move;
533
534
  }
534
- this.battle.actions.useMove(move, pokemon, target, sourceEffect);
535
+ this.battle.actions.useMove(move, pokemon, { target, sourceEffect });
535
536
  },
536
537
  // This function deals with AfterMoveSelf events.
537
538
  // This leads with partial trapping moves shenanigans after the move has been used.
538
- useMove(moveOrMoveName, pokemon, target, sourceEffect) {
539
+ useMove(moveOrMoveName, pokemon, options) {
539
540
  var _a, _b;
540
- const moveResult = this.useMoveInner(moveOrMoveName, pokemon, target, sourceEffect);
541
+ let sourceEffect = options == null ? void 0 : options.sourceEffect;
542
+ let target = options == null ? void 0 : options.target;
543
+ const moveResult = this.useMoveInner(moveOrMoveName, pokemon, { target, sourceEffect });
541
544
  if (!sourceEffect && this.battle.effect.id) sourceEffect = this.battle.effect;
542
545
  const baseMove = this.battle.dex.moves.get(moveOrMoveName);
543
546
  let move = this.battle.dex.getActiveMove(baseMove);
@@ -579,7 +582,9 @@ var Scripts = {
579
582
  },
580
583
  // This is the function that actually uses the move, running ModifyMove events.
581
584
  // It uses the move and then deals with the effects after the move.
582
- useMoveInner(moveOrMoveName, pokemon, target, sourceEffect) {
585
+ useMoveInner(moveOrMoveName, pokemon, options) {
586
+ let sourceEffect = options == null ? void 0 : options.sourceEffect;
587
+ let target = options == null ? void 0 : options.target;
583
588
  if (!sourceEffect && this.battle.effect.id) sourceEffect = this.battle.effect;
584
589
  const baseMove = this.battle.dex.moves.get(moveOrMoveName);
585
590
  let move = this.battle.dex.getActiveMove(baseMove);