{ "version": 3, "sources": ["../../data/conditions.ts"], "sourcesContent": ["export const Conditions: import('../sim/dex-conditions').ConditionDataTable = {\n\tbrn: {\n\t\tname: 'brn',\n\t\teffectType: 'Status',\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tif (sourceEffect && sourceEffect.id === 'flameorb') {\n\t\t\t\tthis.add('-status', target, 'brn', '[from] item: Flame Orb');\n\t\t\t} else if (sourceEffect && sourceEffect.effectType === 'Ability') {\n\t\t\t\tthis.add('-status', target, 'brn', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-status', target, 'brn');\n\t\t\t}\n\t\t},\n\t\t// Damage reduction is handled directly in the sim/battle.js damage function\n\t\tonResidualOrder: 10,\n\t\tonResidual(pokemon) {\n\t\t\tthis.damage(pokemon.baseMaxhp / 16);\n\t\t},\n\t},\n\tpar: {\n\t\tname: 'par',\n\t\teffectType: 'Status',\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tif (sourceEffect && sourceEffect.effectType === 'Ability') {\n\t\t\t\tthis.add('-status', target, 'par', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-status', target, 'par');\n\t\t\t}\n\t\t},\n\t\tonModifySpePriority: -101,\n\t\tonModifySpe(spe, pokemon) {\n\t\t\t// Paralysis occurs after all other Speed modifiers, so evaluate all modifiers up to this point first\n\t\t\tspe = this.finalModify(spe);\n\t\t\tif (!pokemon.hasAbility('quickfeet')) {\n\t\t\t\tspe = Math.floor(spe * 50 / 100);\n\t\t\t}\n\t\t\treturn spe;\n\t\t},\n\t\tonBeforeMovePriority: 1,\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (this.randomChance(1, 4)) {\n\t\t\t\tthis.add('cant', pokemon, 'par');\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 === 'Ability') {\n\t\t\t\tthis.add('-status', target, 'slp', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);\n\t\t\t} else if (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(2, 5);\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: 10,\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tif (pokemon.hasAbility('earlybird')) {\n\t\t\t\tpokemon.statusState.time--;\n\t\t\t}\n\t\t\tpokemon.statusState.time--;\n\t\t\tif (pokemon.statusState.time <= 0) {\n\t\t\t\tpokemon.cureStatus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('cant', pokemon, 'slp');\n\t\t\tif (move.sleepUsable) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t},\n\tfrz: {\n\t\tname: 'frz',\n\t\teffectType: 'Status',\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tif (sourceEffect && sourceEffect.effectType === 'Ability') {\n\t\t\t\tthis.add('-status', target, 'frz', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-status', target, 'frz');\n\t\t\t}\n\t\t\tif (target.species.name === 'Shaymin-Sky' && target.baseSpecies.baseSpecies === 'Shaymin') {\n\t\t\t\ttarget.formeChange('Shaymin', this.effect, true);\n\t\t\t\ttarget.regressionForme = false;\n\t\t\t}\n\t\t},\n\t\tonBeforeMovePriority: 10,\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tif (move.flags['defrost']) return;\n\t\t\tif (this.randomChance(1, 5)) {\n\t\t\t\tpokemon.cureStatus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('cant', pokemon, 'frz');\n\t\t\treturn false;\n\t\t},\n\t\tonModifyMove(move, pokemon) {\n\t\t\tif (move.flags['defrost']) {\n\t\t\t\tthis.add('-curestatus', pokemon, 'frz', `[from] move: ${move}`);\n\t\t\t\tpokemon.clearStatus();\n\t\t\t}\n\t\t},\n\t\tonAfterMoveSecondary(target, source, move) {\n\t\t\tif (move.thawsTarget) {\n\t\t\t\ttarget.cureStatus();\n\t\t\t}\n\t\t},\n\t\tonDamagingHit(damage, 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, source, sourceEffect) {\n\t\t\tif (sourceEffect && sourceEffect.effectType === 'Ability') {\n\t\t\t\tthis.add('-status', target, 'psn', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-status', target, 'psn');\n\t\t\t}\n\t\t},\n\t\tonResidualOrder: 9,\n\t\tonResidual(pokemon) {\n\t\t\tthis.damage(pokemon.baseMaxhp / 8);\n\t\t},\n\t},\n\ttox: {\n\t\tname: 'tox',\n\t\teffectType: 'Status',\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tthis.effectState.stage = 0;\n\t\t\tif (sourceEffect && sourceEffect.id === 'toxicorb') {\n\t\t\t\tthis.add('-status', target, 'tox', '[from] item: Toxic Orb');\n\t\t\t} else if (sourceEffect && sourceEffect.effectType === 'Ability') {\n\t\t\t\tthis.add('-status', target, 'tox', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-status', target, 'tox');\n\t\t\t}\n\t\t},\n\t\tonSwitchIn() {\n\t\t\tthis.effectState.stage = 0;\n\t\t},\n\t\tonResidualOrder: 9,\n\t\tonResidual(pokemon) {\n\t\t\tif (this.effectState.stage < 15) {\n\t\t\t\tthis.effectState.stage++;\n\t\t\t}\n\t\t\tthis.damage(this.clampIntRange(pokemon.baseMaxhp / 16, 1) * this.effectState.stage);\n\t\t},\n\t},\n\tconfusion: {\n\t\tname: 'confusion',\n\t\t// this is a volatile status\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tif (sourceEffect?.id === 'lockedmove') {\n\t\t\t\tthis.add('-start', target, 'confusion', '[fatigue]');\n\t\t\t} else if (sourceEffect?.effectType === 'Ability') {\n\t\t\t\tthis.add('-start', target, 'confusion', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-start', target, 'confusion');\n\t\t\t}\n\t\t\tconst min = sourceEffect?.id === 'axekick' ? 3 : 2;\n\t\t\tthis.effectState.time = this.random(min, 6);\n\t\t},\n\t\tonEnd(target) {\n\t\t\tthis.add('-end', target, 'confusion');\n\t\t},\n\t\tonBeforeMovePriority: 3,\n\t\tonBeforeMove(pokemon) {\n\t\t\tpokemon.volatiles['confusion'].time--;\n\t\t\tif (!pokemon.volatiles['confusion'].time) {\n\t\t\t\tpokemon.removeVolatile('confusion');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('-activate', pokemon, 'confusion');\n\t\t\tif (!this.randomChance(33, 100)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.activeTarget = pokemon;\n\t\t\tconst damage = this.actions.getConfusionDamage(pokemon, 40);\n\t\t\tif (typeof damage !== 'number') throw new Error(\"Confusion damage not dealt\");\n\t\t\tconst activeMove = { id: this.toID('confused'), effectType: 'Move', type: '???' };\n\t\t\tthis.damage(damage, pokemon, pokemon, activeMove as ActiveMove);\n\t\t\treturn false;\n\t\t},\n\t},\n\tflinch: {\n\t\tname: 'flinch',\n\t\tduration: 1,\n\t\tonBeforeMovePriority: 8,\n\t\tonBeforeMove(pokemon) {\n\t\t\tthis.add('cant', pokemon, 'flinch');\n\t\t\tthis.runEvent('Flinch', pokemon);\n\t\t\treturn false;\n\t\t},\n\t},\n\ttrapped: {\n\t\tname: 'trapped',\n\t\tnoCopy: true,\n\t\tonTrapPokemon(pokemon) {\n\t\t\tpokemon.tryTrap();\n\t\t},\n\t\tonStart(target) {\n\t\t\tthis.add('-activate', target, 'trapped');\n\t\t},\n\t},\n\ttrapper: {\n\t\tname: 'trapper',\n\t\tnoCopy: true,\n\t},\n\tpartiallytrapped: {\n\t\tname: 'partiallytrapped',\n\t\tduration: 5,\n\t\tdurationCallback(target, source) {\n\t\t\tif (source?.hasItem('gripclaw')) return 8;\n\t\t\treturn this.random(5, 7);\n\t\t},\n\t\tonStart(pokemon, source) {\n\t\t\tthis.add('-activate', pokemon, 'move: ' + this.effectState.sourceEffect, `[of] ${source}`);\n\t\t\tthis.effectState.boundDivisor = source.hasItem('bindingband') ? 6 : 8;\n\t\t},\n\t\tonResidualOrder: 13,\n\t\tonResidual(pokemon) {\n\t\t\tconst source = this.effectState.source;\n\t\t\t// G-Max Centiferno and G-Max Sandblast continue even after the user leaves the field\n\t\t\tconst gmaxEffect = ['gmaxcentiferno', 'gmaxsandblast'].includes(this.effectState.sourceEffect.id);\n\t\t\tif (source && (!source.isActive || source.hp <= 0 || !source.activeTurns) && !gmaxEffect) {\n\t\t\t\tdelete pokemon.volatiles['partiallytrapped'];\n\t\t\t\tthis.add('-end', pokemon, this.effectState.sourceEffect, '[partiallytrapped]', '[silent]');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.damage(pokemon.baseMaxhp / this.effectState.boundDivisor);\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tthis.add('-end', pokemon, this.effectState.sourceEffect, '[partiallytrapped]');\n\t\t},\n\t\tonTrapPokemon(pokemon) {\n\t\t\tconst gmaxEffect = ['gmaxcentiferno', 'gmaxsandblast'].includes(this.effectState.sourceEffect.id);\n\t\t\tif (this.effectState.source?.isActive || gmaxEffect) pokemon.tryTrap();\n\t\t},\n\t},\n\tlockedmove: {\n\t\t// Outrage, Thrash, Petal Dance...\n\t\tname: 'lockedmove',\n\t\tduration: 2,\n\t\tonResidual(target) {\n\t\t\tif (target.status === 'slp') {\n\t\t\t\t// don't lock, and bypass confusion for calming\n\t\t\t\tdelete target.volatiles['lockedmove'];\n\t\t\t}\n\t\t\tthis.effectState.trueDuration--;\n\t\t},\n\t\tonStart(target, source, effect) {\n\t\t\tthis.effectState.trueDuration = this.random(2, 4);\n\t\t\tthis.effectState.move = effect.id;\n\t\t},\n\t\tonRestart() {\n\t\t\tif (this.effectState.trueDuration >= 2) {\n\t\t\t\tthis.effectState.duration = 2;\n\t\t\t}\n\t\t},\n\t\tonEnd(target) {\n\t\t\tif (this.effectState.trueDuration > 1) return;\n\t\t\ttarget.addVolatile('confusion');\n\t\t},\n\t\tonLockMove(pokemon) {\n\t\t\tif (pokemon.volatiles['dynamax']) return;\n\t\t\treturn this.effectState.move;\n\t\t},\n\t},\n\ttwoturnmove: {\n\t\t// Skull Bash, SolarBeam, Sky Drop...\n\t\tname: 'twoturnmove',\n\t\tduration: 2,\n\t\tonStart(attacker, defender, effect) {\n\t\t\t// (\"attacker\" is the Pokemon using the two turn move and the Pokemon this condition is being applied to)\n\t\t\tthis.effectState.move = effect.id;\n\t\t\tattacker.addVolatile(effect.id);\n\t\t\t// lastMoveTargetLoc is the location of the originally targeted slot before any redirection\n\t\t\t// note that this is not updated for moves called by other moves\n\t\t\t// i.e. if Dig is called by Metronome, lastMoveTargetLoc will still be the user's location\n\t\t\tlet moveTargetLoc: number = attacker.lastMoveTargetLoc!;\n\t\t\tif (effect.sourceEffect && this.dex.moves.get(effect.id).target !== 'self') {\n\t\t\t\t// this move was called by another move such as Metronome\n\t\t\t\t// and needs a random target to be determined this turn\n\t\t\t\t// it will already have one by now if there is any valid target\n\t\t\t\t// but if there isn't one we need to choose a random slot now\n\t\t\t\tif (defender.fainted) {\n\t\t\t\t\tdefender = this.sample(attacker.foes(true));\n\t\t\t\t}\n\t\t\t\tmoveTargetLoc = attacker.getLocOf(defender);\n\t\t\t}\n\t\t\tattacker.volatiles[effect.id].targetLoc = moveTargetLoc;\n\t\t\tthis.attrLastMove('[still]');\n\t\t\t// Run side-effects normally associated with hitting (e.g., Protean, Libero)\n\t\t\tthis.runEvent('PrepareHit', attacker, defender, effect);\n\t\t},\n\t\tonEnd(target) {\n\t\t\ttarget.removeVolatile(this.effectState.move);\n\t\t},\n\t\tonLockMove() {\n\t\t\treturn this.effectState.move;\n\t\t},\n\t\tonMoveAborted(pokemon) {\n\t\t\tpokemon.removeVolatile('twoturnmove');\n\t\t},\n\t},\n\tchoicelock: {\n\t\tname: 'choicelock',\n\t\tnoCopy: true,\n\t\tonStart(pokemon) {\n\t\t\tif (!this.activeMove) throw new Error(\"Battle.activeMove is null\");\n\t\t\tif (!this.activeMove.id || this.activeMove.hasBounced || this.activeMove.sourceEffect === 'snatch') return false;\n\t\t\tthis.effectState.move = this.activeMove.id;\n\t\t},\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tif (!pokemon.getItem().isChoice) {\n\t\t\t\tpokemon.removeVolatile('choicelock');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!pokemon.ignoringItem() && !pokemon.volatiles['dynamax'] &&\n\t\t\t\tmove.id !== this.effectState.move && move.id !== 'struggle'\n\t\t\t) {\n\t\t\t\t// Fails unless the Choice item is being ignored, and no PP is lost\n\t\t\t\tthis.addMove('move', pokemon, move.name);\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\tthis.debug(\"Disabled by Choice item lock\");\n\t\t\t\tthis.add('-fail', pokemon);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tonDisableMove(pokemon) {\n\t\t\tif (!pokemon.getItem().isChoice || !pokemon.hasMove(this.effectState.move)) {\n\t\t\t\tpokemon.removeVolatile('choicelock');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (pokemon.ignoringItem() || pokemon.volatiles['dynamax']) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\tif (moveSlot.id !== this.effectState.move) {\n\t\t\t\t\tpokemon.disableMove(moveSlot.id, false, this.effectState.sourceEffect);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tmustrecharge: {\n\t\tname: 'mustrecharge',\n\t\tduration: 2,\n\t\tonBeforeMovePriority: 11,\n\t\tonBeforeMove(pokemon) {\n\t\t\tthis.add('cant', pokemon, 'recharge');\n\t\t\tpokemon.removeVolatile('mustrecharge');\n\t\t\tpokemon.removeVolatile('truant');\n\t\t\treturn null;\n\t\t},\n\t\tonStart(pokemon) {\n\t\t\tthis.add('-mustrecharge', pokemon);\n\t\t},\n\t\tonLockMove: 'recharge',\n\t},\n\tfuturemove: {\n\t\t// this is a slot condition\n\t\tname: 'futuremove',\n\t\tonStart(target) {\n\t\t\tthis.effectState.targetSlot = target.getSlot();\n\t\t\tthis.effectState.endingTurn = (this.turn - 1) + 2;\n\t\t\tif (this.effectState.endingTurn >= 254) {\n\t\t\t\tthis.hint(`In Gen 8+, Future attacks will never resolve when used on the 255th turn or later.`);\n\t\t\t}\n\t\t},\n\t\tonResidualOrder: 3,\n\t\tonResidual(target: Pokemon) {\n\t\t\tif (this.getOverflowedTurnCount() < this.effectState.endingTurn) return;\n\t\t\ttarget.side.removeSlotCondition(this.getAtSlot(this.effectState.targetSlot), 'futuremove');\n\t\t},\n\t\tonEnd(target) {\n\t\t\tconst data = this.effectState;\n\t\t\t// time's up; time to hit! :D\n\t\t\tconst move = this.dex.moves.get(data.move);\n\t\t\tif (target.fainted || target === data.source) {\n\t\t\t\tthis.hint(`${move.name} did not hit because the target is ${(target.fainted ? 'fainted' : 'the user')}.`);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.add('-end', target, 'move: ' + move.name);\n\t\t\ttarget.removeVolatile('Protect');\n\t\t\ttarget.removeVolatile('Endure');\n\n\t\t\tif (data.source.hasAbility('infiltrator') && this.gen >= 6) {\n\t\t\t\tdata.moveData.infiltrates = true;\n\t\t\t}\n\t\t\tif (data.source.hasAbility('normalize') && this.gen >= 6) {\n\t\t\t\tdata.moveData.type = 'Normal';\n\t\t\t}\n\t\t\tconst hitMove = new this.dex.Move(data.moveData) as ActiveMove;\n\n\t\t\tthis.actions.trySpreadMoveHit([target], data.source, hitMove, true);\n\t\t\tif (data.source.isActive && data.source.hasItem('lifeorb') && this.gen >= 5) {\n\t\t\t\tthis.singleEvent('AfterMoveSecondarySelf', data.source.getItem(), data.source.itemState, data.source, target, data.source.getItem());\n\t\t\t}\n\t\t\tthis.activeMove = null;\n\n\t\t\tthis.checkWin();\n\t\t},\n\t},\n\thealreplacement: {\n\t\t// this is a slot condition\n\t\tname: 'healreplacement',\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tthis.effectState.sourceEffect = sourceEffect;\n\t\t\tthis.add('-activate', source, 'healreplacement');\n\t\t},\n\t\tonSwitchIn(target) {\n\t\t\tif (!target.fainted) {\n\t\t\t\ttarget.heal(target.maxhp);\n\t\t\t\tthis.add('-heal', target, target.getHealth, '[from] move: ' + this.effectState.sourceEffect, '[zeffect]');\n\t\t\t\ttarget.side.removeSlotCondition(target, 'healreplacement');\n\t\t\t}\n\t\t},\n\t},\n\tstall: {\n\t\t// Protect, Detect, Endure counter\n\t\tname: 'stall',\n\t\tduration: 2,\n\t\tcounterMax: 729,\n\t\tonStart() {\n\t\t\tthis.effectState.counter = 3;\n\t\t},\n\t\tonStallMove(pokemon) {\n\t\t\t// this.effectState.counter should never be undefined here.\n\t\t\t// However, just in case, use 1 if it is undefined.\n\t\t\tconst counter = this.effectState.counter || 1;\n\t\t\tthis.debug(`Success chance: ${Math.round(100 / counter)}%`);\n\t\t\tconst success = this.randomChance(1, counter);\n\t\t\tif (!success) delete pokemon.volatiles['stall'];\n\t\t\treturn success;\n\t\t},\n\t\tonRestart() {\n\t\t\tif (this.effectState.counter < (this.effect as Condition).counterMax!) {\n\t\t\t\tthis.effectState.counter *= 3;\n\t\t\t}\n\t\t\tthis.effectState.duration = 2;\n\t\t},\n\t},\n\tgem: {\n\t\tname: 'gem',\n\t\tduration: 1,\n\t\taffectsFainted: true,\n\t\tonBasePowerPriority: 14,\n\t\tonBasePower(basePower, user, target, move) {\n\t\t\tthis.debug('Gem Boost');\n\t\t\treturn this.chainModify([5325, 4096]);\n\t\t},\n\t},\n\n\t// weather is implemented here since it's so important to the game\n\n\traindance: {\n\t\tname: 'RainDance',\n\t\teffectType: 'Weather',\n\t\tduration: 5,\n\t\tdurationCallback(source, effect) {\n\t\t\tif (source?.hasItem('damprock')) {\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t\treturn 5;\n\t\t},\n\t\tonWeatherModifyDamage(damage, attacker, defender, move) {\n\t\t\tif (defender.hasItem('utilityumbrella')) return;\n\t\t\tif (move.type === 'Water') {\n\t\t\t\tthis.debug('rain water boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\tthis.debug('rain fire suppress');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonFieldStart(field, source, effect) {\n\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\tif (this.gen <= 5) this.effectState.duration = 0;\n\t\t\t\tthis.add('-weather', 'RainDance', '[from] ability: ' + effect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-weather', 'RainDance');\n\t\t\t}\n\t\t},\n\t\tonFieldResidualOrder: 1,\n\t\tonFieldResidual() {\n\t\t\tthis.add('-weather', 'RainDance', '[upkeep]');\n\t\t\tthis.eachEvent('Weather');\n\t\t},\n\t\tonFieldEnd() {\n\t\t\tthis.add('-weather', 'none');\n\t\t},\n\t},\n\tprimordialsea: {\n\t\tname: 'PrimordialSea',\n\t\teffectType: 'Weather',\n\t\tduration: 0,\n\t\tonTryMovePriority: 1,\n\t\tonTryMove(attacker, defender, move) {\n\t\t\tif (move.type === 'Fire' && move.category !== 'Status') {\n\t\t\t\tthis.debug('Primordial Sea fire suppress');\n\t\t\t\tthis.add('-fail', attacker, move, '[from] Primordial Sea');\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonWeatherModifyDamage(damage, attacker, defender, move) {\n\t\t\tif (defender.hasItem('utilityumbrella')) return;\n\t\t\tif (move.type === 'Water') {\n\t\t\t\tthis.debug('Rain water boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonFieldStart(field, source, effect) {\n\t\t\tthis.add('-weather', 'PrimordialSea', '[from] ability: ' + effect.name, `[of] ${source}`);\n\t\t},\n\t\tonFieldResidualOrder: 1,\n\t\tonFieldResidual() {\n\t\t\tthis.add('-weather', 'PrimordialSea', '[upkeep]');\n\t\t\tthis.eachEvent('Weather');\n\t\t},\n\t\tonFieldEnd() {\n\t\t\tthis.add('-weather', 'none');\n\t\t},\n\t},\n\tsunnyday: {\n\t\tname: 'SunnyDay',\n\t\teffectType: 'Weather',\n\t\tduration: 5,\n\t\tdurationCallback(source, effect) {\n\t\t\tif (source?.hasItem('heatrock')) {\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t\treturn 5;\n\t\t},\n\t\tonWeatherModifyDamage(damage, attacker, defender, move) {\n\t\t\tif (move.id === 'hydrosteam' && !attacker.hasItem('utilityumbrella')) {\n\t\t\t\tthis.debug('Sunny Day Hydro Steam boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t\tif (defender.hasItem('utilityumbrella')) return;\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\tthis.debug('Sunny Day fire boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t\tif (move.type === 'Water') {\n\t\t\t\tthis.debug('Sunny Day water suppress');\n\t\t\t\treturn this.chainModify(0.5);\n\t\t\t}\n\t\t},\n\t\tonFieldStart(battle, source, effect) {\n\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\tif (this.gen <= 5) this.effectState.duration = 0;\n\t\t\t\tthis.add('-weather', 'SunnyDay', '[from] ability: ' + effect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-weather', 'SunnyDay');\n\t\t\t}\n\t\t},\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (pokemon.hasItem('utilityumbrella')) return;\n\t\t\tif (type === 'frz') return false;\n\t\t},\n\t\tonFieldResidualOrder: 1,\n\t\tonFieldResidual() {\n\t\t\tthis.add('-weather', 'SunnyDay', '[upkeep]');\n\t\t\tthis.eachEvent('Weather');\n\t\t},\n\t\tonFieldEnd() {\n\t\t\tthis.add('-weather', 'none');\n\t\t},\n\t},\n\tdesolateland: {\n\t\tname: 'DesolateLand',\n\t\teffectType: 'Weather',\n\t\tduration: 0,\n\t\tonTryMovePriority: 1,\n\t\tonTryMove(attacker, defender, move) {\n\t\t\tif (move.type === 'Water' && move.category !== 'Status') {\n\t\t\t\tthis.debug('Desolate Land water suppress');\n\t\t\t\tthis.add('-fail', attacker, move, '[from] Desolate Land');\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tonWeatherModifyDamage(damage, attacker, defender, move) {\n\t\t\tif (defender.hasItem('utilityumbrella')) return;\n\t\t\tif (move.type === 'Fire') {\n\t\t\t\tthis.debug('Sunny Day fire boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonFieldStart(field, source, effect) {\n\t\t\tthis.add('-weather', 'DesolateLand', '[from] ability: ' + effect.name, `[of] ${source}`);\n\t\t},\n\t\tonImmunity(type, pokemon) {\n\t\t\tif (pokemon.hasItem('utilityumbrella')) return;\n\t\t\tif (type === 'frz') return false;\n\t\t},\n\t\tonFieldResidualOrder: 1,\n\t\tonFieldResidual() {\n\t\t\tthis.add('-weather', 'DesolateLand', '[upkeep]');\n\t\t\tthis.eachEvent('Weather');\n\t\t},\n\t\tonFieldEnd() {\n\t\t\tthis.add('-weather', 'none');\n\t\t},\n\t},\n\tsandstorm: {\n\t\tname: 'Sandstorm',\n\t\teffectType: 'Weather',\n\t\tduration: 5,\n\t\tdurationCallback(source, effect) {\n\t\t\tif (source?.hasItem('smoothrock')) {\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t\treturn 5;\n\t\t},\n\t\t// This should be applied directly to the stat before any of the other modifiers are chained\n\t\t// So we give it increased priority.\n\t\tonModifySpDPriority: 10,\n\t\tonModifySpD(spd, pokemon) {\n\t\t\tif (pokemon.hasType('Rock') && this.field.isWeather('sandstorm')) {\n\t\t\t\treturn this.modify(spd, 1.5);\n\t\t\t}\n\t\t},\n\t\tonFieldStart(field, source, effect) {\n\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\tif (this.gen <= 5) this.effectState.duration = 0;\n\t\t\t\tthis.add('-weather', 'Sandstorm', '[from] ability: ' + effect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-weather', 'Sandstorm');\n\t\t\t}\n\t\t},\n\t\tonFieldResidualOrder: 1,\n\t\tonFieldResidual() {\n\t\t\tthis.add('-weather', 'Sandstorm', '[upkeep]');\n\t\t\tif (this.field.isWeather('sandstorm')) this.eachEvent('Weather');\n\t\t},\n\t\tonWeather(target) {\n\t\t\tthis.damage(target.baseMaxhp / 16);\n\t\t},\n\t\tonFieldEnd() {\n\t\t\tthis.add('-weather', 'none');\n\t\t},\n\t},\n\thail: {\n\t\tname: 'Hail',\n\t\teffectType: 'Weather',\n\t\tduration: 5,\n\t\tdurationCallback(source, effect) {\n\t\t\tif (source?.hasItem('icyrock')) {\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t\treturn 5;\n\t\t},\n\t\tonFieldStart(field, source, effect) {\n\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\tif (this.gen <= 5) this.effectState.duration = 0;\n\t\t\t\tthis.add('-weather', 'Hail', '[from] ability: ' + effect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-weather', 'Hail');\n\t\t\t}\n\t\t},\n\t\tonFieldResidualOrder: 1,\n\t\tonFieldResidual() {\n\t\t\tthis.add('-weather', 'Hail', '[upkeep]');\n\t\t\tif (this.field.isWeather('hail')) this.eachEvent('Weather');\n\t\t},\n\t\tonWeather(target) {\n\t\t\tthis.damage(target.baseMaxhp / 16);\n\t\t},\n\t\tonFieldEnd() {\n\t\t\tthis.add('-weather', 'none');\n\t\t},\n\t},\n\tsnowscape: {\n\t\tname: 'Snowscape',\n\t\teffectType: 'Weather',\n\t\tduration: 5,\n\t\tdurationCallback(source, effect) {\n\t\t\tif (source?.hasItem('icyrock')) {\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t\treturn 5;\n\t\t},\n\t\tonModifyDefPriority: 10,\n\t\tonModifyDef(def, pokemon) {\n\t\t\tif (pokemon.hasType('Ice') && this.field.isWeather('snowscape')) {\n\t\t\t\treturn this.modify(def, 1.5);\n\t\t\t}\n\t\t},\n\t\tonFieldStart(field, source, effect) {\n\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\tif (this.gen <= 5) this.effectState.duration = 0;\n\t\t\t\tthis.add('-weather', 'Snowscape', '[from] ability: ' + effect.name, `[of] ${source}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-weather', 'Snowscape');\n\t\t\t}\n\t\t},\n\t\tonFieldResidualOrder: 1,\n\t\tonFieldResidual() {\n\t\t\tthis.add('-weather', 'Snowscape', '[upkeep]');\n\t\t\tif (this.field.isWeather('snowscape')) this.eachEvent('Weather');\n\t\t},\n\t\tonFieldEnd() {\n\t\t\tthis.add('-weather', 'none');\n\t\t},\n\t},\n\tdeltastream: {\n\t\tname: 'DeltaStream',\n\t\teffectType: 'Weather',\n\t\tduration: 0,\n\t\tonEffectivenessPriority: -1,\n\t\tonEffectiveness(typeMod, target, type, move) {\n\t\t\tif (move && move.effectType === 'Move' && move.category !== 'Status' && type === 'Flying' && typeMod > 0) {\n\t\t\t\tthis.add('-fieldactivate', 'Delta Stream');\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\tonFieldStart(field, source, effect) {\n\t\t\tthis.add('-weather', 'DeltaStream', '[from] ability: ' + effect.name, `[of] ${source}`);\n\t\t},\n\t\tonFieldResidualOrder: 1,\n\t\tonFieldResidual() {\n\t\t\tthis.add('-weather', 'DeltaStream', '[upkeep]');\n\t\t\tthis.eachEvent('Weather');\n\t\t},\n\t\tonFieldEnd() {\n\t\t\tthis.add('-weather', 'none');\n\t\t},\n\t},\n\n\tdynamax: {\n\t\tname: 'Dynamax',\n\t\tnoCopy: true,\n\t\tonStart(pokemon) {\n\t\t\tthis.effectState.turns = 0;\n\t\t\tpokemon.removeVolatile('minimize');\n\t\t\tpokemon.removeVolatile('substitute');\n\t\t\tif (pokemon.volatiles['torment']) {\n\t\t\t\tdelete pokemon.volatiles['torment'];\n\t\t\t\tthis.add('-end', pokemon, 'Torment', '[silent]');\n\t\t\t}\n\t\t\tif (['cramorantgulping', 'cramorantgorging'].includes(pokemon.species.id) && !pokemon.transformed) {\n\t\t\t\tpokemon.formeChange('cramorant');\n\t\t\t}\n\t\t\tthis.add('-start', pokemon, 'Dynamax', pokemon.gigantamax ? 'Gmax' : '');\n\t\t\tif (pokemon.baseSpecies.name === 'Shedinja') return;\n\n\t\t\t// Changes based on dynamax level, 2 is max (at LVL 10)\n\t\t\tconst ratio = 1.5 + (pokemon.dynamaxLevel * 0.05);\n\n\t\t\tpokemon.maxhp = Math.floor(pokemon.maxhp * ratio);\n\t\t\tpokemon.hp = Math.floor(pokemon.hp * ratio);\n\t\t\tthis.add('-heal', pokemon, pokemon.getHealth, '[silent]');\n\t\t},\n\t\tonTryAddVolatile(status, pokemon) {\n\t\t\tif (status.id === 'flinch') return null;\n\t\t},\n\t\tonBeforeSwitchOutPriority: -1,\n\t\tonBeforeSwitchOut(pokemon) {\n\t\t\tpokemon.removeVolatile('dynamax');\n\t\t},\n\t\tonSourceModifyDamage(damage, source, target, move) {\n\t\t\tif (move.id === 'behemothbash' || move.id === 'behemothblade' || move.id === 'dynamaxcannon') {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tonDragOutPriority: 2,\n\t\tonDragOut(pokemon) {\n\t\t\tthis.add('-block', pokemon, 'Dynamax');\n\t\t\treturn null;\n\t\t},\n\t\tonResidualPriority: -100,\n\t\tonResidual() {\n\t\t\tthis.effectState.turns++;\n\t\t},\n\t\tonEnd(pokemon) {\n\t\t\tthis.add('-end', pokemon, 'Dynamax');\n\t\t\tif (pokemon.baseSpecies.name === 'Shedinja') return;\n\t\t\tpokemon.hp = pokemon.getUndynamaxedHP();\n\t\t\tpokemon.maxhp = pokemon.baseMaxhp;\n\t\t\tthis.add('-heal', pokemon, pokemon.getHealth, '[silent]');\n\t\t},\n\t},\n\n\t// Commander needs two conditions so they are implemented here\n\t// Dondozo\n\tcommanded: {\n\t\tname: \"Commanded\",\n\t\tnoCopy: true,\n\t\tonStart(pokemon) {\n\t\t\tthis.boost({ atk: 2, spa: 2, spe: 2, def: 2, spd: 2 }, pokemon);\n\t\t},\n\t\tonDragOutPriority: 2,\n\t\tonDragOut() {\n\t\t\treturn false;\n\t\t},\n\t\t// Prevents Shed Shell allowing a swap\n\t\tonTrapPokemonPriority: -11,\n\t\tonTrapPokemon(pokemon) {\n\t\t\tpokemon.trapped = true;\n\t\t},\n\t},\n\t// Tatsugiri\n\tcommanding: {\n\t\tname: \"Commanding\",\n\t\tnoCopy: true,\n\t\tonDragOutPriority: 2,\n\t\tonDragOut() {\n\t\t\treturn false;\n\t\t},\n\t\t// Prevents Shed Shell allowing a swap\n\t\tonTrapPokemonPriority: -11,\n\t\tonTrapPokemon(pokemon) {\n\t\t\tpokemon.trapped = true;\n\t\t},\n\t\t// Dodging moves is handled in BattleActions#hitStepInvulnerabilityEvent\n\t\t// This is here for moves that manually call this event like Perish Song\n\t\tonInvulnerability: false,\n\t\tonBeforeTurn(pokemon) {\n\t\t\tthis.queue.cancelAction(pokemon);\n\t\t},\n\t},\n\n\t// Arceus and Silvally's actual typing is implemented here.\n\t// Their true typing for all their formes is Normal, and it's only\n\t// Multitype and RKS System, respectively, that changes their type,\n\t// but their formes are specified to be their corresponding type\n\t// in the Pokedex, so that needs to be overridden.\n\t// This is mainly relevant for Hackmons Cup and Balanced Hackmons.\n\tarceus: {\n\t\tname: 'Arceus',\n\t\tonTypePriority: 1,\n\t\tonType(types, pokemon) {\n\t\t\tif (pokemon.transformed || pokemon.ability !== 'multitype' && this.gen >= 8) return types;\n\t\t\tlet type: string | undefined = 'Normal';\n\t\t\tif (pokemon.ability === 'multitype') {\n\t\t\t\ttype = pokemon.getItem().onPlate;\n\t\t\t\tif (!type) {\n\t\t\t\t\ttype = 'Normal';\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn [type];\n\t\t},\n\t},\n\tsilvally: {\n\t\tname: 'Silvally',\n\t\tonTypePriority: 1,\n\t\tonType(types, pokemon) {\n\t\t\tif (pokemon.transformed || pokemon.ability !== 'rkssystem' && this.gen >= 8) return types;\n\t\t\tlet type: string | undefined = 'Normal';\n\t\t\tif (pokemon.ability === 'rkssystem') {\n\t\t\t\ttype = pokemon.getItem().onMemory;\n\t\t\t\tif (!type) {\n\t\t\t\t\ttype = 'Normal';\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn [type];\n\t\t},\n\t},\n\trolloutstorage: {\n\t\tname: 'rolloutstorage',\n\t\tduration: 2,\n\t\tonBasePower(relayVar, source, target, move) {\n\t\t\tlet bp = Math.max(1, move.basePower);\n\t\t\tbp *= 2 ** source.volatiles['rolloutstorage'].contactHitCount;\n\t\t\tif (source.volatiles['defensecurl']) {\n\t\t\t\tbp *= 2;\n\t\t\t}\n\t\t\tsource.removeVolatile('rolloutstorage');\n\t\t\treturn bp;\n\t\t},\n\t},\n};\n"], "mappings": "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", "names": [] }