{ "version": 3, "sources": ["../../../../../data/mods/vaporemons/moves.ts"], "sourcesContent": ["export const Moves: {[k: string]: ModdedMoveData} = {\n\tdireclaw: {\n\t\tshortDesc: \"Sets a layer of Toxic Spikes.\",\n\t\tnum: -1005,\n\t\taccuracy: 100,\n\t\tbasePower: 65,\n\t\tcategory: \"Physical\",\n\t\tname: \"Dire Claw\",\n\t\tdesc: \"Sets a layer of Toxic Spikes on the opponent's side of the field.\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonAfterHit(target, source, move) {\n\t\t\tif (!move.hasSheerForce && source.hp && !target.hasItem('covertcloak')) {\n\t\t\t\tfor (const side of source.side.foeSidesWithConditions()) {\n\t\t\t\t\tside.addSideCondition('toxicspikes');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAfterSubDamage(damage, target, source, move) {\n\t\t\tif (!move.hasSheerForce && source.hp && !target.hasItem('covertcloak')) {\n\t\t\t\tfor (const side of source.side.foeSidesWithConditions()) {\n\t\t\t\t\tside.addSideCondition('toxicspikes');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsecondary: {},\n\t\ttarget: \"normal\",\n\t\ttype: \"Poison\",\n\t\tcontestType: \"Clever\",\n\t},\n\tceaselessedge: {\n\t\tnum: 845,\n\t\taccuracy: 100,\n\t\tbasePower: 65,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Sets a layer of Spikes on the opposing side.\",\n\t\tname: \"Ceaseless Edge\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1, slicing: 1},\n\t\tonAfterHit(target, source, move) {\n\t\t\tif (!move.hasSheerForce && source.hp && !target.hasItem('covertcloak')) {\n\t\t\t\tfor (const side of source.side.foeSidesWithConditions()) {\n\t\t\t\t\tside.addSideCondition('spikes');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAfterSubDamage(damage, target, source, move) {\n\t\t\tif (!move.hasSheerForce && source.hp && !target.hasItem('covertcloak')) {\n\t\t\t\tfor (const side of source.side.foeSidesWithConditions()) {\n\t\t\t\t\tside.addSideCondition('spikes');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsecondary: {},\n\t\ttarget: \"normal\",\n\t\ttype: \"Dark\",\n\t},\n\tstoneaxe: {\n\t\tnum: 830,\n\t\taccuracy: 100,\n\t\tbasePower: 65,\n\t\tcategory: \"Physical\",\n\t\tname: \"Stone Axe\",\n\t\tdesc: \"If this move is successful, it sets up a hazard on the opposing side of the field, damaging each opposing Pokemon that switches in. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any opposing Pokemon uses Rapid Spin or Defog successfully, or is hit by Defog.\",\n\t\tshortDesc: \"Sets Stealth Rock on the target's side.\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1, slicing: 1},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tsideCondition: 'stealthrock',\n\t\t},\n\t\ttarget: \"adjacentFoe\",\n\t\ttype: \"Rock\",\n\t\tcontestType: \"Tough\",\n\t},\n\telectroweb: {\n\t\tnum: 527,\n\t\taccuracy: 95,\n\t\tbasePower: 65,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"Sets Sticky Web on the target's side.\",\n\t\tname: \"Electroweb\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tsideCondition: 'stickyweb',\n\t\t},\n\t\ttarget: \"allAdjacentFoes\",\n\t\ttype: \"Electric\",\n\t\tcontestType: \"Beautiful\",\n\t},\n\tskullbash: {\n\t\tnum: 130,\n\t\taccuracy: 90,\n\t\tbasePower: 120,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Raises user's Atk by 1 on turn 1. Hits turn 2.\",\n\t\tisNonstandard: null,\n\t\tname: \"Skull Bash\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, charge: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonTryMove(attacker, defender, move) {\n\t\t\tif (attacker.removeVolatile(move.id)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('-prepare', attacker, move.name);\n\t\t\tthis.boost({atk: 1}, attacker, attacker, move);\n\t\t\tif (!this.runEvent('ChargeMove', attacker, defender, move)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tattacker.addVolatile('twoturnmove', defender);\n\t\t\treturn null;\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Steel\",\n\t\tcontestType: \"Tough\",\n\t},\n\tshelter: {\n\t\tnum: 842,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tshortDesc: \"Removes Spikes and Stealth Rock from the field. +1 Def for every type of hazard cleared.\",\n\t\tname: \"Shelter\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {snatch: 1, metronome: 1},\n\t\tonHit(pokemon) {\n\t\t\tconst somesideConditions = ['spikes', 'stealthrock'];\n\t\t\tconst sides = [pokemon.side];\n\t\t\tfor (const side of sides) {\n\t\t\t\tfor (const sideCondition of somesideConditions) {\n\t\t\t\t\tif (sideCondition) {\n\t\t\t\t\t\tthis.add('-message', `This sides Stealth Rock and Spikes will be removed!`);\n\t\t\t\t\t}\n\t\t\t\t\tif (side.removeSideCondition('spikes')) {\n\t\t\t\t\t\tthis.add('-sideend', side, this.dex.conditions.get('spikes'));\n\t\t\t\t\t\tthis.boost({def: 1}, pokemon);\n\t\t\t\t\t}\n\t\t\t\t\tif (side.removeSideCondition('stealthrock')) {\n\t\t\t\t\t\tthis.add('-sideend', side, this.dex.conditions.get('stealthrock'));\n\t\t\t\t\t\tthis.boost({def: 1}, pokemon);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Steel\",\n\t},\n\thealingstones: {\n\t\tnum: -191,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tdesc: \"Sets healing stones on the user's side, healing Pokemon that switch in for 1/8th of their max HP.\",\n\t\tshortDesc: \"Heals allies on switch-in.\",\n\t\tname: \"Healing Stones\",\n\t\tpp: 20,\n\t\tpriority: 0,\n\t\tflags: {snatch: 1, heal: 1, nonsky: 1, metronome: 1},\n\t\tsideCondition: 'healingstones',\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Stealth Rock\", target);\n\t\t},\n\t\tcondition: {\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'Healing Stones');\n\t\t\t\tthis.effectState.layers = 1;\n\t\t\t},\n\t\t\tonSideRestart(side) {\n\t\t\t\tif (this.effectState.layers >= 1) return false;\n\t\t\t\tthis.add('-sidestart', side, 'Healing Stones');\n\t\t\t\tthis.effectState.layers++;\n\t\t\t},\n\t\t\tonEntryHazard(pokemon) {\n\t\t\t\tif (pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('overcoat') ||\n\t\t\t\t\t pokemon.hasItem('mantisclaw')) return;\n\t\t\t\tconst healAmounts = [0, 3]; // 1/8\n\t\t\t\tthis.heal(healAmounts[this.effectState.layers] * pokemon.maxhp / 24);\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"allySide\",\n\t\ttype: \"Fairy\",\n\t\tcontestType: \"Clever\",\n\t},\n\tjunglehealing: {\n\t\tnum: 816,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tshortDesc: \"User and allies: healed 1/3 max HP, status cured.\",\n\t\tname: \"Jungle Healing\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {heal: 1, bypasssub: 1, allyanim: 1},\n\t\tonHit(pokemon) {\n\t\t\tconst success = !!this.heal(this.modify(pokemon.maxhp, 0.33));\n\t\t\treturn pokemon.cureStatus() || success;\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"allies\",\n\t\ttype: \"Grass\",\n\t},\n\tlifedew: {\n\t\tnum: 791,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tshortDesc: \"User: healed 1/3 max HP. Next switch-in: healed 1/4 max HP.\",\n\t\tname: \"Life Dew\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {snatch: 1, heal: 1, bypasssub: 1},\n\t\theal: [1, 3],\n\t\tslotCondition: 'lifedew',\n\t\tcondition: {\n\t\t\tonSwap(target) {\n\t\t\t\t if (!target.fainted) {\n\t\t\t\t\t const source = this.effectState.source;\n\t\t\t\t\t const damage = this.heal(target.baseMaxhp / 4, target, target);\n\t\t\t\t\t if (damage) this.add('-heal', target, target.getHealth, '[from] move: Life Dew', '[of] ' + source);\n\t\t\t\t\t target.side.removeSlotCondition(target, 'lifedew');\n\t\t\t\t }\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Water\",\n\t},\n\tshrapnelshot: {\n\t\taccuracy: 90,\n\t\tbasePower: 15,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Hits 2-5 times. First hit lowers the foe's Defense by 1 stage.\",\n\t\tname: \"Shrapnel Shot\",\n\t\tpp: 20,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1, bullet: 1},\n\t\tmultihit: [2, 5],\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Spikes\", target);\n\t\t},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tonHit(target, source, move) {\n\t\t\t\tif (move.hit < 2) {\n\t\t\t\t\tthis.boost({def: -1}, target);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t},\n\t\ttarget: \"normal\",\n\t\ttype: \"Steel\",\n\t\tzMove: {basePower: 140},\n\t\tmaxMove: {basePower: 130},\n\t\tcontestType: \"Cool\",\n\t},\n\tstormthrow: {\n\t\tnum: 480,\n\t\taccuracy: true,\n\t\tbasePower: 70,\n\t\tcategory: \"Physical\",\n\t\tisNonstandard: null,\n\t\tname: \"Storm Throw\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\twillCrit: true,\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Fighting\",\n\t\tcontestType: \"Cool\",\n\t},\n\tfrostbreath: {\n\t\tnum: 524,\n\t\taccuracy: true,\n\t\tbasePower: 70,\n\t\tcategory: \"Special\",\n\t\tname: \"Frost Breath\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\twillCrit: true,\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Ice\",\n\t\tcontestType: \"Beautiful\",\n\t},\n\tsnipeshot: {\n\t\tnum: 745,\n\t\taccuracy: true,\n\t\tbasePower: 70,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"Always critically hits.\",\n\t\tname: \"Snipe Shot\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1, pulse: 1},\n\t\twillCrit: true,\n\t\ttracksTarget: true,\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Water\",\n\t},\n\tfalsesurrender: {\n\t\tnum: 793,\n\t\taccuracy: true,\n\t\tbasePower: 70,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Always critically hits.\",\n\t\tname: \"False Surrender\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1},\n\t\twillCrit: true,\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Dark\",\n\t},\n\tchoke: {\n\t\taccuracy: 100,\n\t\tbasePower: 80,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Inflicts the Heal Block effect.\",\n\t\tname: \"Choke\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Sky Uppercut\", target);\n\t\t\tthis.add('-anim', source, \"Hex\", target);\n\t\t},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tonHit(target) {\n\t\t\t\ttarget.addVolatile('healblock');\n\t\t\t},\n\t\t},\n\t\ttarget: \"normal\",\n\t\ttype: \"Ghost\",\n\t\tcontestType: \"Clever\",\n\t},\n\tcuttingremark: {\n\t\taccuracy: 100,\n\t\tbasePower: 40,\n\t\tcategory: \"Physical\",\n\t\toverrideDefensiveStat: 'spd',\n\t\tshortDesc: \"Usually goes first. Targets the foe's Special Defense.\",\n\t\tname: \"Cutting Remark\",\n\t\tpp: 25,\n\t\tpriority: 1,\n\t\tflags: {protect: 1, mirror: 1, sound: 1, bypasssub: 1, metronome: 1, slicing: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Psycho Cut\", target);\n\t\t},\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Psychic\",\n\t\tcontestType: \"Cool\",\n\t},\n\tchainlightning: {\n\t\taccuracy: 100,\n\t\tbasePower: 15,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Usually goes first. Hits 2-5 times.\",\n\t\tname: \"Chain Lightning\",\n\t\tpp: 20,\n\t\tpriority: 1,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tmultihit: [2, 5],\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Thunder Shock\", target);\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Electric\",\n\t\tcontestType: \"Cool\",\n\t},\n\tpluck: {\n\t\tnum: 365,\n\t\taccuracy: 100,\n\t\tbasePower: 70,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Heals the user by 75% of the damage dealt.\",\n\t\tname: \"Pluck\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, heal: 1, metronome: 1},\n\t\tdrain: [3, 4],\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Flying\",\n\t\tcontestType: \"Cute\",\n\t},\n\tthroatchop: {\n\t\tnum: 675,\n\t\taccuracy: 100,\n\t\tbasePower: 85,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Foe can't use Sound moves or Yawn for 3 turns.\",\n\t\tname: \"Throat Chop\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tcondition: {\n\t\t\tduration: 3,\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-start', target, 'Throat Chop', '[silent]');\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (this.dex.moves.get(moveSlot.id).flags['sound']) {\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBeforeMovePriority: 6,\n\t\t\tonBeforeMove(pokemon, target, move) {\n\t\t\t\tif (!move.isZ && !move.isMax && (move.flags['sound'] || move.id === 'yawn')) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Throat Chop');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonResidualOrder: 22,\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'Throat Chop', '[silent]');\n\t\t\t},\n\t\t},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tonHit(target) {\n\t\t\t\ttarget.addVolatile('throatchop');\n\t\t\t},\n\t\t},\n\t\ttarget: \"normal\",\n\t\ttype: \"Dark\",\n\t\tcontestType: \"Clever\",\n\t},\n\twindbreaker: {\n\t\taccuracy: 100,\n\t\tbasePower: 85,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"Foe can't use Wind moves for 3 turns.\",\n\t\tname: \"Wind Breaker\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1, wind: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Gust\", target);\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 3,\n\t\t\tonStart(target) {\n\t\t\t\tthis.add('-start', target, 'Wind Breaker', '[silent]');\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (this.dex.moves.get(moveSlot.id).flags['wind']) {\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBeforeMovePriority: 6,\n\t\t\tonBeforeMove(pokemon, target, move) {\n\t\t\t\tif (!move.isZ && !move.isMax && move.flags['wind']) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Wind Breaker');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonResidualOrder: 22,\n\t\t\tonEnd(target) {\n\t\t\t\tthis.add('-end', target, 'Wind Breaker', '[silent]');\n\t\t\t},\n\t\t},\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tonHit(target) {\n\t\t\t\ttarget.addVolatile('windbreaker');\n\t\t\t},\n\t\t},\n\t\ttarget: \"normal\",\n\t\ttype: \"Flying\",\n\t\tcontestType: \"Clever\",\n\t},\n\thazardouswaste: {\n\t\taccuracy: 100,\n\t\tbasePower: 50,\n\t\tbasePowerCallback(pokemon, target, move) {\n\t\t\tconst yourSide = pokemon.side;\n\t\t\tconst targetSide = target.side;\n\t\t\tlet allLayers = 0;\n\t\t\tif (yourSide.getSideCondition('stealthrock')) allLayers++;\n\t\t\tif (yourSide.getSideCondition('healingstones')) allLayers++;\n\t\t\tif (yourSide.getSideCondition('stickyweb')) allLayers++;\n\t\t\tif (yourSide.sideConditions['spikes']) {\n\t\t\t\tallLayers += yourSide.sideConditions['spikes'].layers;\n\t\t\t}\n\t\t\tif (yourSide.sideConditions['toxicspikes']) {\n\t\t\t\tallLayers += yourSide.sideConditions['toxicspikes'].layers;\n\t\t\t}\n\t\t\tif (targetSide.getSideCondition('stealthrock')) allLayers++;\n\t\t\tif (targetSide.getSideCondition('healingstones')) allLayers++;\n\t\t\tif (targetSide.getSideCondition('stickyweb')) allLayers++;\n\t\t\tif (targetSide.sideConditions['spikes']) {\n\t\t\t\tallLayers += targetSide.sideConditions['spikes'].layers;\n\t\t\t}\n\t\t\tif (targetSide.sideConditions['toxicspikes']) {\n\t\t\t\tallLayers += targetSide.sideConditions['toxicspikes'].layers;\n\t\t\t}\n\t\t\tthis.debug('Hazardous Waste damage boost');\n\t\t\treturn Math.min(400, 50 + 50 * allLayers);\n\t\t},\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"+50 power for each hazard layer on the field. Caps at 400.\",\n\t\tname: \"Hazardous Waste\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Acid Downpour\", target);\n\t\t},\n\t\tonHit(target, source, move) {\n\t\t\tconst yourSide = source.side;\n\t\t\tconst targetSide = target.side;\n\t\t\tlet allLayers = 0;\n\t\t\tif (yourSide.getSideCondition('stealthrock')) allLayers++;\n\t\t\tif (yourSide.getSideCondition('healingstones')) allLayers++;\n\t\t\tif (yourSide.getSideCondition('stickyweb')) allLayers++;\n\t\t\tif (yourSide.sideConditions['spikes']) {\n\t\t\t\tallLayers += yourSide.sideConditions['spikes'].layers;\n\t\t\t}\n\t\t\tif (yourSide.sideConditions['toxicspikes']) {\n\t\t\t\tallLayers += yourSide.sideConditions['toxicspikes'].layers;\n\t\t\t}\n\t\t\tif (targetSide.getSideCondition('stealthrock')) allLayers++;\n\t\t\tif (targetSide.getSideCondition('healingstones')) allLayers++;\n\t\t\tif (targetSide.getSideCondition('stickyweb')) allLayers++;\n\t\t\tif (targetSide.sideConditions['spikes']) {\n\t\t\t\tallLayers += targetSide.sideConditions['spikes'].layers;\n\t\t\t}\n\t\t\tif (targetSide.sideConditions['toxicspikes']) {\n\t\t\t\tallLayers += targetSide.sideConditions['toxicspikes'].layers;\n\t\t\t}\n\t\t\tconst bp = Math.min(400, 50 + 50 * allLayers);\n\t\t\tthis.add('-message', `Hazardous Waste currently has a BP of ${bp}!`);\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Poison\",\n\t\tcontestType: \"Tough\",\n\t},\n\tchisel: {\n\t\taccuracy: 100,\n\t\tbasePower: 45,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Gives the foe a Substitute, then hits 4 times.\",\n\t\tname: \"Chisel\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tmultihit: 4,\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Salt Cure\", target);\n\t\t\ttarget.addVolatile('substitute');\n\t\t\tthis.add('-anim', source, \"Stone Axe\", target);\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Rock\",\n\t\tcontestType: \"Cool\",\n\t},\n\tpeekaboo: {\n\t\taccuracy: 100,\n\t\tbasePower: 140,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Deal halved damage if the user takes damage before it hits.\",\n\t\tname: \"Peekaboo\",\n\t\tpp: 20,\n\t\tpriority: -3,\n\t\tflags: {\n\t\t\tcontact: 1, protect: 1,\n\t\t\tmetronome: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1,\n\t\t},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Heart Stamp\", target);\n\t\t},\n\t\tpriorityChargeCallback(pokemon) {\n\t\t\tpokemon.addVolatile('peekaboo');\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-singleturn', pokemon, 'move: Peekaboo');\n\t\t\t},\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (move.category !== 'Status') {\n\t\t\t\t\tthis.effectState.lostSurprise = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBasePower(basePower, pokemon) {\n\t\t\t\tif (pokemon.volatiles['peekaboo']?.lostSurprise) {\n\t\t\t\t\tthis.debug('halved power');\n\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Fairy\",\n\t\tcontestType: \"Tough\",\n\t},\n\tpsychoboost: {\n\t\tnum: 354,\n\t\taccuracy: 100,\n\t\tbasePower: 120,\n\t\tshortDesc: \"Lowers the user's Sp. Atk by 1. Hits foe(s).\",\n\t\tcategory: \"Special\",\n\t\tisNonstandard: null,\n\t\tname: \"Psycho Boost\",\n\t\tpp: 5,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tself: {\n\t\t\tboosts: {\n\t\t\t\tspa: -1,\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"allAdjacentFoes\",\n\t\ttype: \"Psychic\",\n\t\tcontestType: \"Clever\",\n\t},\n\tragefist: {\n\t\tnum: 889,\n\t\taccuracy: 100,\n\t\tbasePower: 50,\n\t\tbasePowerCallback(pokemon) {\n\t\t\treturn Math.min(200, 50 + 50 * pokemon.timesAttacked);\n\t\t},\n\t\tshortDesc: \"+50 power for each time user was hit. Max 3 hits.\",\n\t\tcategory: \"Physical\",\n\t\tname: \"Rage Fist\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, punch: 1},\n\t\tonHit(target, source, move) {\n\t\t\tconst bp = Math.min(200, 50 + 50 * source.timesAttacked);\n\t\t\tthis.add('-message', `Rage Fist currently has a BP of ${bp}!`);\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Ghost\",\n\t},\n\tragingfury: {\n\t\tnum: 833,\n\t\taccuracy: 100,\n\t\tbasePower: 50,\n\t\tbasePowerCallback(pokemon) {\n\t\t\treturn Math.min(200, 50 + 50 * pokemon.timesAttacked);\n\t\t},\n\t\tshortDesc: \"+50 power for each time user was hit. Max 3 hits.\",\n\t\tcategory: \"Physical\",\n\t\tname: \"Raging Fury\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1},\n\t\tonHit(target, source, move) {\n\t\t\tconst bp = Math.min(200, 50 + 50 * source.timesAttacked);\n\t\t\tthis.add('-message', `Raging Fury currently has a BP of ${bp}!`);\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Fire\",\n\t},\n\tparry: {\n\t\taccuracy: 100,\n\t\tbasePower: 80,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"If the foe used a priority move, this move hits before that move and flinches the foe.\",\n\t\tname: \"Parry\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Mach Punch\", target);\n\t\t},\n\t\tpriorityChargeCallback(pokemon) {\n\t\t\tthis.add('-anim', pokemon, \"Imprison\", pokemon);\n\t\t\tthis.add('-message', `${pokemon.name} is attempting to parry!`);\n\t\t\tpokemon.addVolatile('parry');\n\t\t},\n\t\tsecondary: {}, // sheer force boosted\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(target, source) {\n\t\t\t\tthis.add('-singleturn', source, 'Parry');\n\t\t\t},\n\t\t\tonFoeTryMove(target, source, move) {\n\t\t\t\tconst targetAllExceptions = ['perishsong', 'flowershield', 'rototiller'];\n\t\t\t\tif (move.target === 'foeSide' || (move.target === 'all' && !targetAllExceptions.includes(move.id))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst parryHolder = this.effectState.target;\n\t\t\t\tif ((source.isAlly(parryHolder) || move.target === 'all') &&\n\t\t\t\t\t(!source.hasAbility('innerfocus') || !source.hasAbility('shielddust') ||\n\t\t\t\t\t!source.hasAbility('steadfast') || !source.hasItem('covertcloak') ||\n\t\t\t\t\t!source.hasAbility('sandveil') && !this.field.isWeather('sandstorm') ||\n\t\t\t\t\t!source.hasAbility('sunblock') && !this.field.isWeather('sunnyday') ||\n\t\t\t\t\t!source.hasAbility('snowcloak') && !this.field.isWeather('snow')) &&\n\t\t\t\t\tmove.priority > 0.1) {\n\t\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\t\tthis.add('cant', parryHolder, 'move: Parry', move, '[of] ' + target);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\ttarget: \"normal\",\n\t\ttype: \"Fighting\",\n\t\tcontestType: \"Clever\",\n\t},\n\trollout: {\n\t\tnum: 205,\n\t\taccuracy: 100,\n\t\tbasePower: 50,\n\t\tbasePowerCallback(pokemon, target, move) {\n\t\t\tif (pokemon.volatiles['defensecurl']) {\n\t\t\t\tthis.debug('BP doubled');\n\t\t\t\treturn move.basePower * 2;\n\t\t\t}\n\t\t\treturn move.basePower;\n\t\t},\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Switches the user out. 2x power if Rollout or Defense Curl was used last turn.\",\n\t\tname: \"Rollout\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1, failinstruct: 1, noparentalbond: 1},\n\t\tself: {\n\t\t\tsideCondition: 'rollout',\n\t\t},\n\t\tselfSwitch: true,\n\t\tcondition: {\n\t\t\tduration: 2,\n\t\t\tonBasePowerPriority: 1,\n\t\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\t\tif (move.id === 'rollout' && !attacker.volatiles['defensecurl']) {\n\t\t\t\t\treturn this.chainModify(2);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Rock\",\n\t\tcontestType: \"Cute\",\n\t},\n\tround: {\n\t\tnum: 496,\n\t\taccuracy: 100,\n\t\tbasePower: 50,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"Switches the user out. 2x power if Round was used last turn.\",\n\t\tname: \"Round\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, sound: 1, bypasssub: 1, metronome: 1},\n\t\tself: {\n\t\t\tsideCondition: 'round',\n\t\t},\n\t\tselfSwitch: true,\n\t\tcondition: {\n\t\t\tduration: 2,\n\t\t\tonBasePowerPriority: 1,\n\t\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\t\tif (move.id === 'round' || move.id === 'echochamber') {\n\t\t\t\t\treturn this.chainModify(2);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Normal\",\n\t\tcontestType: \"Beautiful\",\n\t},\n\trekindleheal: {\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tshortDesc: \"Healing from Rekindle.\",\n\t\tname: \"Rekindle Heal\",\n\t\tpp: 5,\n\t\tpriority: 0,\n\t\tflags: {metronome: 1},\n\t\tvolatileStatus: 'rekindleheal',\n\t\tcondition: {\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-start', pokemon, 'Rekindle');\n\t\t\t},\n\t\t\tonResidualOrder: 6,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tthis.heal(pokemon.baseMaxhp / 8);\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Fire\",\n\t},\n\trekindle: {\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tshortDesc: \"Heals 33% then 12.5% every turn. Burns foes that make contact.\",\n\t\tname: \"Rekindle\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {snatch: 1, heal: 1, metronome: 1},\n\t\theal: [1, 3],\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Morning Sun\", target);\n\t\t},\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tpokemon.addVolatile('rekindleheal');\n\t\t\t\tpokemon.addVolatile('rekindle');\n\t\t\t\tthis.add('-message', `${pokemon.name}'s flames burn brightly!`);\n\t\t\t},\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonDamagingHit(damage, target, source, move) {\n\t\t\t\tif (this.checkMoveMakesContact(move, source, target)) {\n\t\t\t\t\tsource.trySetStatus('brn', target);\n\t\t\t\t\tthis.add('-message', `${target.name}'s flames burnt its attacker!`);\n\t\t\t\t\ttarget.removeVolatile('rekindleheal');\n\t\t\t\t\tthis.add('-message', `${target.name}'s flames were put out!`);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"all\",\n\t\ttype: \"Fire\",\n\t\tcontestType: \"Clever\",\n\t},\n\tmeteorbeam: {\n\t\tnum: 800,\n\t\taccuracy: 90,\n\t\tbasePower: 120,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"Raises user's Sp. Atk by 1 on turn 1. Hits turn 2. Hits in 1 turn in Sand.\",\n\t\tname: \"Meteor Beam\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {charge: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonTryMove(attacker, defender, move) {\n\t\t\tif (attacker.removeVolatile(move.id)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('-prepare', attacker, move.name);\n\t\t\tthis.boost({spa: 1}, attacker, attacker, move);\n\t\t\tif (this.field.isWeather('sandstorm')) {\n\t\t\t\tthis.attrLastMove('[still]');\n\t\t\t\tthis.addMove('-anim', attacker, move.name, defender);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!this.runEvent('ChargeMove', attacker, defender, move)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tattacker.addVolatile('twoturnmove', defender);\n\t\t\treturn null;\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Rock\",\n\t},\n\trebuild: {\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tshortDesc: \"Restores HP equal to the user's level \u00D7 1.25.\",\n\t\tname: \"Rebuild\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {snatch: 1, heal: 1, metronome: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Iron Defense\", target);\n\t\t},\n\t\tonHit(pokemon) {\n\t\t\tthis.heal(pokemon.level * 1.25);\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Steel\",\n\t\tcontestType: \"Clever\",\n\t},\n\twashaway: {\n\t\taccuracy: 100,\n\t\tbasePower: 80,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"Removes hazards and terrains, then forces out target.\",\n\t\tname: \"Wash Away\",\n\t\tpp: 10,\n\t\tpriority: -6,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1, noassist: 1, failcopycat: 1},\n\t\tforceSwitch: true,\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Surf\", target);\n\t\t},\n\t\tonHit(target, source, move) {\n\t\t\tlet success = false;\n\t\t\tconst removeTarget = [\n\t\t\t\t'spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones',\n\t\t\t];\n\t\t\tconst removeAll = [\n\t\t\t\t'spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones',\n\t\t\t];\n\t\t\tfor (const targetCondition of removeTarget) {\n\t\t\t\tif (target.side.removeSideCondition(targetCondition)) {\n\t\t\t\t\tif (!removeAll.includes(targetCondition)) continue;\n\t\t\t\t\tthis.add('-sideend', target.side, this.dex.conditions.get(targetCondition).name, '[from] move: Wash Away', '[of] ' + source);\n\t\t\t\t\tsuccess = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const sideCondition of removeAll) {\n\t\t\t\tif (source.side.removeSideCondition(sideCondition)) {\n\t\t\t\t\tthis.add('-sideend', source.side, this.dex.conditions.get(sideCondition).name, '[from] move: Wash Away', '[of] ' + source);\n\t\t\t\t\tsuccess = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.field.clearTerrain();\n\t\t\treturn success;\n\t\t},\n\t\ttarget: \"normal\",\n\t\ttype: \"Water\",\n\t\tcontestType: \"Tough\",\n\t},\n\techochamber: {\n\t\taccuracy: 100,\n\t\tbasePower: 90,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"1.5x power if a sound move was used last turn.\",\n\t\tname: \"Echo Chamber\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, sound: 1, bypasssub: 1, metronome: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Hyper Voice\", target);\n\t\t},\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 2,\n\t\t\tonBasePowerPriority: 1,\n\t\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\t\tif (move.id === 'echochamber') {\n\t\t\t\t\treturn this.chainModify(1.5);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Steel\",\n\t\tcontestType: \"Cool\",\n\t},\n\tbrickbreak: {\n\t\tinherit: true,\n\t\tbasePower: 90,\n\t},\n\tpsychicfangs: {\n\t\tinherit: true,\n\t\tbasePower: 90,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1, bite: 1},\n\t},\n\tsledgehammerblow: {\n\t\taccuracy: 100,\n\t\tbasePower: 90,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Destroys screens, unless the target is immune.\",\n\t\tname: \"Sledgehammer Blow\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Gigaton Hammer\", target);\n\t\t},\n\t\tonTryHit(pokemon) {\n\t\t\t// will shatter screens through sub, before you hit\n\t\t\tpokemon.side.removeSideCondition('reflect');\n\t\t\tpokemon.side.removeSideCondition('lightscreen');\n\t\t\tpokemon.side.removeSideCondition('auroraveil');\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Steel\",\n\t\tcontestType: \"Clever\",\n\t},\n\tdesertstorm: {\n\t\taccuracy: 100,\n\t\tbasePower: 90,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"(Partially functional placeholder) Hits two turns after being used. Sets sands when it hits, even if the target is immune.\",\n\t\tname: \"Desert Storm\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {allyanim: 1, metronome: 1, futuremove: 1},\n\t\tignoreImmunity: true,\n\t\tonTry(source, target) {\n\t\t\tif (!target.side.addSlotCondition(target, 'futuremove')) return false;\n\t\t\tObject.assign(target.side.slotConditions[target.position]['futuremove'], {\n\t\t\t\tduration: 3,\n\t\t\t\tmove: 'desertstorm',\n\t\t\t\tsource: source,\n\t\t\t\tmoveData: {\n\t\t\t\t\tid: 'desertstorm',\n\t\t\t\t\tname: \"Desert Storm\",\n\t\t\t\t\taccuracy: 100,\n\t\t\t\t\tbasePower: 90,\n\t\t\t\t\tcategory: \"Physical\",\n\t\t\t\t\tpriority: 0,\n\t\t\t\t\tflags: {allyanim: 1, futuremove: 1},\n\t\t\t\t\tignoreImmunity: false,\n\t\t\t\t\tself: {\n\t\t\t\t\t\tsideCondition: 'desertstorm',\n\t\t\t\t\t},\n\t\t\t\t\teffectType: 'Move',\n\t\t\t\t\ttype: 'Ground',\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.add('-start', source, 'move: Desert Storm');\n\t\t\treturn this.NOT_FAIL;\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(source) {\n\t\t\t\tthis.field.setWeather('sandstorm');\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Ground\",\n\t\tcontestType: \"Clever\",\n\t},\n\tdragonrage: {\n\t\tnum: 82,\n\t\taccuracy: 100,\n\t\tbasePower: 85,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"If the user is hit this turn, +1 SpA.\",\n\t\tisNonstandard: null,\n\t\tname: \"Dragon Rage\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tpriorityChargeCallback(pokemon) {\n\t\t\tpokemon.addVolatile('dragonrage');\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-singleturn', pokemon, 'move: Dragon Rage');\n\t\t\t},\n\t\t\tonHit(target, source, move) {\n\t\t\t\tif (target !== source && move.category !== 'Status') {\n\t\t\t\t\tthis.boost({spa: 1});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Dragon\",\n\t\tcontestType: \"Cool\",\n\t},\n\trage: {\n\t\tnum: 99,\n\t\taccuracy: 100,\n\t\tbasePower: 85,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"If the user is hit this turn, +1 Atk.\",\n\t\tisNonstandard: null,\n\t\tname: \"Rage\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tpriorityChargeCallback(pokemon) {\n\t\t\tpokemon.addVolatile('rage');\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-singleturn', pokemon, 'move: Rage');\n\t\t\t},\n\t\t\tonHit(target, source, move) {\n\t\t\t\tif (target !== source && move.category !== 'Status') {\n\t\t\t\t\tthis.boost({atk: 1});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Normal\",\n\t\tcontestType: \"Tough\",\n\t},\n\tlatentvenom: {\n\t\taccuracy: 100,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tshortDesc: \"Hits two turns after being used. Foe: badly poisoned and -1 Def & SpD.\",\n\t\tname: \"Latent Venom\",\n\t\tpp: 5,\n\t\tpriority: 0,\n\t\tflags: {snatch: 1, allyanim: 1, metronome: 1, futuremove: 1},\n\t\tignoreImmunity: true,\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Acid Spray\", target);\n\t\t},\n\t\tonTry(source, target) {\n\t\t\tif (!target.side.addSlotCondition(target, 'futuremove')) return false;\n\t\t\tObject.assign(target.side.slotConditions[target.position]['futuremove'], {\n\t\t\t\tduration: 3,\n\t\t\t\tmove: 'latentvenom',\n\t\t\t\tsource: source,\n\t\t\t\tmoveData: {\n\t\t\t\t\tid: 'latentvenom',\n\t\t\t\t\tname: \"Latent Venom\",\n\t\t\t\t\taccuracy: 100,\n\t\t\t\t\tbasePower: 0,\n\t\t\t\t\tcategory: \"Status\",\n\t\t\t\t\tpriority: 0,\n\t\t\t\t\tflags: {allyanim: 1, futuremove: 1},\n\t\t\t\t\tignoreImmunity: false,\n\t\t\t\t\tstatus: 'tox',\n\t\t\t\t\tboosts: {\n\t\t\t\t\t\tdef: -1,\n\t\t\t\t\t\tspd: -1,\n\t\t\t\t\t},\n\t\t\t\t\teffectType: 'Move',\n\t\t\t\t\ttype: 'Poison',\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.add('-start', source, 'move: Latent Venom');\n\t\t\treturn this.NOT_FAIL;\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Poison\",\n\t\tcontestType: \"Cool\",\n\t},\n\tpivotfail: {\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tshortDesc: \"Prevents pivoting moves from being used for the rest of the turn.\",\n\t\tname: \"Pivot Fail\",\n\t\tpp: 5,\n\t\tpriority: 0,\n\t\tflags: {metronome: 1},\n\t\tvolatileStatus: 'pivotfail',\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-message', `${pokemon.name}'s pivoting moves will fail for the rest of the turn!`);\n\t\t\t},\n\t\t\tonBeforeMovePriority: 6,\n\t\t\tonBeforeMove(pokemon, target, move) {\n\t\t\t\tif (!move.isZ && !move.isMax && move.selfSwitch) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Smack Down');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonModifyMove(move, pokemon, target) {\n\t\t\t\tif (!move.isZ && !move.isMax && move.selfSwitch) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Smack Down');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Rock\",\n\t},\n\tsmackdown: {\n\t\tnum: 479,\n\t\taccuracy: 100,\n\t\tbasePower: 65,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Removes the target's Ground immunity and causes pivoting moves to fail.\",\n\t\tname: \"Smack Down\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, nonsky: 1, metronome: 1},\n\t\tvolatileStatus: 'smackdown',\n\t\tonHit(target) {\n\t\t\ttarget.addVolatile('pivotfail');\n\t\t},\n\t\tcondition: {\n\t\t\tnoCopy: true,\n\t\t\tonStart(pokemon) {\n\t\t\t\tlet applies = false;\n\t\t\t\tif (pokemon.hasType('Flying') || pokemon.hasAbility('levitate')) applies = true;\n\t\t\t\tif (pokemon.hasItem('ironball') || pokemon.volatiles['ingrain'] ||\n\t\t\t\t\tthis.field.getPseudoWeather('gravity')) applies = false;\n\t\t\t\tif (pokemon.removeVolatile('fly') || pokemon.removeVolatile('bounce')) {\n\t\t\t\t\tapplies = true;\n\t\t\t\t\tthis.queue.cancelMove(pokemon);\n\t\t\t\t\tpokemon.removeVolatile('twoturnmove');\n\t\t\t\t}\n\t\t\t\tif (pokemon.volatiles['magnetrise']) {\n\t\t\t\t\tapplies = true;\n\t\t\t\t\tdelete pokemon.volatiles['magnetrise'];\n\t\t\t\t}\n\t\t\t\tif (pokemon.volatiles['telekinesis']) {\n\t\t\t\t\tapplies = true;\n\t\t\t\t\tdelete pokemon.volatiles['telekinesis'];\n\t\t\t\t}\n\t\t\t\tif (!applies) return false;\n\t\t\t\tthis.add('-start', pokemon, 'Smack Down');\n\t\t\t},\n\t\t\tonRestart(pokemon) {\n\t\t\t\tif (pokemon.removeVolatile('fly') || pokemon.removeVolatile('bounce')) {\n\t\t\t\t\tthis.queue.cancelMove(pokemon);\n\t\t\t\t\tpokemon.removeVolatile('twoturnmove');\n\t\t\t\t\tthis.add('-start', pokemon, 'Smack Down');\n\t\t\t\t}\n\t\t\t},\n\t\t\t// groundedness implemented in battle.engine.js:BattlePokemon#isGrounded\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Rock\",\n\t\tcontestType: \"Tough\",\n\t},\n\trootpull: {\n\t\taccuracy: 100,\n\t\tbasePower: 90,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"100% chance to lower the target's Speed by 1 (2 if Flying-type).\",\n\t\tname: \"Root Pull\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Trailblaze\", target);\n\t\t},\n\t\tonHit(target) {\n\t\t\tif (target.hasType('Flying') && !target.hasItem('covertcloak') && !target.hasAbility('shielddust')) {\n\t\t\t\tthis.boost({spe: -1}, target);\n\t\t\t}\n\t\t},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tboosts: {\n\t\t\t\tspe: -1,\n\t\t\t},\n\t\t},\n\t\ttarget: \"normal\",\n\t\ttype: \"Grass\",\n\t},\n\tsnatch: {\n\t\tnum: 289,\n\t\taccuracy: 100,\n\t\tbasePower: 30,\n\t\tcategory: \"Physical\",\n\t\tisNonstandard: null,\n\t\tname: \"Snatch\",\n\t\tpp: 10,\n\t\tpriority: 2,\n\t\tflags: {protect: 1, mirror: 1, bypasssub: 1, mustpressure: 1, noassist: 1, failcopycat: 1},\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tpokemon.addVolatile('snatch');\n\t\t\t},\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonStart(pokemon) {\n\t\t\t\tthis.add('-singleturn', pokemon, 'Snatch');\n\t\t\t},\n\t\t\tonAnyPrepareHitPriority: -1,\n\t\t\tonAnyPrepareHit(source, target, move) {\n\t\t\t\tconst snatchUser = this.effectState.source;\n\t\t\t\tif (snatchUser.isSkyDropped()) return;\n\t\t\t\tif (!move || move.isZ || move.isMax || !move.flags['snatch'] || move.sourceEffect === 'snatch') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsnatchUser.removeVolatile('snatch');\n\t\t\t\tthis.add('-activate', snatchUser, 'move: Snatch', '[of] ' + source);\n\t\t\t\tthis.actions.useMove(move.id, snatchUser);\n\t\t\t\treturn null;\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Dark\",\n\t\tcontestType: \"Clever\",\n\t},\n\ttailslap: {\n\t\tinherit: true,\n\t\taccuracy: 100,\n\t},\n\tpinmissile: {\n\t\tinherit: true,\n\t\taccuracy: 100,\n\t},\n\trockblast: {\n\t\tinherit: true,\n\t\taccuracy: 100,\n\t},\n\tsignalbeam: {\n\t\tnum: 324,\n\t\taccuracy: 100,\n\t\tbasePower: 75,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"Nullifies the target's Ability.\",\n\t\tisNonstandard: null,\n\t\tname: \"Signal Beam\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tonHit(target) {\n\t\t\tif (target.getAbility().flags['cantsuppress']) return;\n\t\t\ttarget.addVolatile('gastroacid');\n\t\t},\n\t\tonAfterSubDamage(damage, target) {\n\t\t\tif (target.getAbility().flags['cantsuppress']) return;\n\t\t\ttarget.addVolatile('gastroacid');\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Bug\",\n\t\tcontestType: \"Beautiful\",\n\t},\n\tflyingpress: {\n\t\tnum: 560,\n\t\taccuracy: 95,\n\t\tbasePower: 100,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Either Fighting or Flying-type, whichever is more effective.\",\n\t\tname: \"Flying Press\",\n\t\tpp: 10,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, gravity: 1, distance: 1, nonsky: 1, metronome: 1},\n\t\tonModifyType(move, pokemon) {\n\t\t\tfor (const target of pokemon.side.foe.active) {\n\t\t\t\tconst type1 = 'Fighting';\n\t\t\t\tconst type2 = 'Flying';\n\t\t\t\tif (this.dex.getEffectiveness(type1, target) < this.dex.getEffectiveness(type2, target)) {\n\t\t\t\t\tmove.type = 'Flying';\n\t\t\t\t} else if (target.hasType('Ghost') && !pokemon.hasAbility('scrappy') &&\n\t\t\t\t\t\t\t !pokemon.hasAbility('mindseye') && !target.hasItem('ringtarget')) {\n\t\t\t\t\tmove.type = 'Flying';\n\t\t\t\t} else if (this.dex.getEffectiveness(type1, target) === this.dex.getEffectiveness(type2, target)) {\n\t\t\t\t\tif (pokemon.hasType('Flying') && !pokemon.hasType('Fighting')) {\n\t\t\t\t\t\tmove.type = 'Flying';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonHit(target, source, move) {\n\t\t\tthis.add('-message', `Flying Press dealt ${move.type}-type damage!`);\n\t\t},\n\t\tpriority: 0,\n\t\tsecondary: null,\n\t\ttarget: \"any\",\n\t\ttype: \"Fighting\",\n\t\tzMove: {basePower: 170},\n\t\tcontestType: \"Tough\",\n\t},\n\tsoftwarecrash: {\n\t\tnum: 560,\n\t\taccuracy: 95,\n\t\tbasePower: 100,\n\t\tcategory: \"Special\",\n\t\tshortDesc: \"Either Bug or Electric-type, whichever is more effective.\",\n\t\tname: \"Software Crash\",\n\t\tpp: 10,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tthis.attrLastMove('[still]');\n\t\t\tthis.add('-anim', source, \"Hyper Beam\", target);\n\t\t},\n\t\tonModifyType(move, pokemon) {\n\t\t\tfor (const target of pokemon.side.foe.active) {\n\t\t\t\tconst type1 = 'Bug';\n\t\t\t\tconst type2 = 'Electric';\n\t\t\t\tif (this.dex.getEffectiveness(type1, target) < this.dex.getEffectiveness(type2, target)) {\n\t\t\t\t\tif (!target.hasType('Ground') && !target.hasItem('ringtarget')) {\n\t\t\t\t\t\tmove.type = 'Electric';\n\t\t\t\t\t}\n\t\t\t\t} else if (this.dex.getEffectiveness(type1, target) === this.dex.getEffectiveness(type2, target)) {\n\t\t\t\t\tif (pokemon.hasType('Electric') && !pokemon.hasType('Bug')) {\n\t\t\t\t\t\tmove.type = 'Electric';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonHit(target, source, move) {\n\t\t\tthis.add('-message', `Software Crash dealt ${move.type}-type damage!`);\n\t\t},\n\t\tpriority: 0,\n\t\tsecondary: null,\n\t\ttarget: \"any\",\n\t\ttype: \"Bug\",\n\t\tzMove: {basePower: 170},\n\t\tcontestType: \"Tough\",\n\t},\n\tlashout: {\n\t\tnum: 808,\n\t\taccuracy: 100,\n\t\tbasePower: 70,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"2x power if the user has negative stat changes or a status.\",\n\t\tname: \"Lash Out\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonBasePower(basePower, pokemon) {\n\t\t\tconst negativeVolatiles = ['confusion', 'taunt', 'torment', 'trapped', 'partiallytrapped', 'leechseed', 'sandspit',\n\t\t\t\t'attract', 'curse', 'disable', 'electrify', 'embargo', 'encore', 'foresight', 'gastroacid', 'foresight', 'miracleeye',\n\t\t\t\t'glaiverush', 'healblock', 'throatchop', 'windbreaker', 'nightmare', 'octolock', 'powder', 'saltcure', 'smackdown',\n\t\t\t\t'syrupbomb', 'tarshot', 'telekinesis', 'yawn'];\n\t\t\tlet i: BoostID;\n\t\t\tfor (i in pokemon.boosts) {\n\t\t\t\tfor (const volatile of negativeVolatiles) {\n\t\t\t\t\tif (pokemon.status && pokemon.status !== 'brn' || pokemon.volatiles[volatile] || pokemon.boosts[i] < 0) {\n\t\t\t\t\t\treturn this.chainModify(2);\n\t\t\t\t\t} else if (pokemon.status === 'brn') {\n\t\t\t\t\t\treturn this.chainModify(4);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Dark\",\n\t},\n\tnaturalgift: {\n\t\tnum: 363,\n\t\taccuracy: 100,\n\t\tbasePower: 0,\n\t\tcategory: \"Physical\",\n\t\tshortDesc: \"Type and power based on user's berry.\",\n\t\tisNonstandard: null,\n\t\tname: \"Natural Gift\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1},\n\t\tonModifyType(move, pokemon) {\n\t\t\tif (pokemon.ignoringItem()) return;\n\t\t\tconst item = pokemon.getItem();\n\t\t\tif (!item.naturalGift) return;\n\t\t\tmove.type = item.naturalGift.type;\n\t\t},\n\t\tonPrepareHit(target, pokemon, move) {\n\t\t\tif (pokemon.ignoringItem()) return false;\n\t\t\tconst item = pokemon.getItem();\n\t\t\tif (!item.naturalGift) return false;\n\t\t\tmove.basePower = item.naturalGift.basePower;\n\t\t\tthis.debug('BP: ' + move.basePower);\n\t\t},\n\t\tonBasePower(basePower, pokemon) {\n\t\t\tif (pokemon.hasAbility('ripen') || pokemon.hasAbility('harvest')) {\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Normal\",\n\t\tzMove: {basePower: 160},\n\t\tmaxMove: {basePower: 130},\n\t\tcontestType: \"Clever\",\n\t},\n\n\t// all edited unchanged moves\n\tstealthrock: {\n\t\tnum: 446,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Stealth Rock\",\n\t\tpp: 20,\n\t\tpriority: 0,\n\t\tflags: {reflectable: 1, snatch: 1, metronome: 1},\n\t\tsideCondition: 'stealthrock',\n\t\tcondition: {\n\t\t\t// this is a side condition\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'move: Stealth Rock');\n\t\t\t},\n\t\t\tonEntryHazard(pokemon) {\n\t\t\t\tif (pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('overcoat') ||\n\t\t\t\t\t pokemon.hasItem('mantisclaw')) return;\n\t\t\t\tconst typeMod = this.clampIntRange(pokemon.runEffectiveness(this.dex.getActiveMove('stealthrock')), -6, 6);\n\t\t\t\tif (pokemon.hasAbility('smelt')) {\n\t\t\t\t\tconst fireHazard = this.dex.getActiveMove('Stealth Rock');\n\t\t\t\t\tfireHazard.type = 'Fire';\n\t\t\t\t\tconst smeltMod = this.clampIntRange(pokemon.runEffectiveness(fireHazard), -6, 6);\n\t\t\t\t\tthis.damage(pokemon.maxhp * Math.pow(2, smeltMod) / 8);\n\t\t\t\t} else {\n\t\t\t\t\tthis.damage(pokemon.maxhp * Math.pow(2, typeMod) / 8);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"foeSide\",\n\t\ttype: \"Rock\",\n\t\tzMove: {boost: {def: 1}},\n\t\tcontestType: \"Cool\",\n\t},\n\tspikes: {\n\t\tnum: 191,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Spikes\",\n\t\tpp: 20,\n\t\tpriority: 0,\n\t\tflags: {reflectable: 1, snatch: 1, nonsky: 1, metronome: 1, mustpressure: 1},\n\t\tsideCondition: 'spikes',\n\t\tcondition: {\n\t\t\t// this is a side condition\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'Spikes');\n\t\t\t\tthis.effectState.layers = 1;\n\t\t\t},\n\t\t\tonSideRestart(side) {\n\t\t\t\tif (this.effectState.layers >= 3) return false;\n\t\t\t\tthis.add('-sidestart', side, 'Spikes');\n\t\t\t\tthis.effectState.layers++;\n\t\t\t},\n\t\t\tonEntryHazard(pokemon) {\n\t\t\t\tif (!pokemon.isGrounded()) return;\n\t\t\t\tif (pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('overcoat') ||\n\t\t\t\t\t pokemon.hasItem('mantisclaw')) return;\n\t\t\t\tconst damageAmounts = [0, 3, 4, 6]; // 1/8, 1/6, 1/4\n\t\t\t\tthis.damage(damageAmounts[this.effectState.layers] * pokemon.maxhp / 24);\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"foeSide\",\n\t\ttype: \"Ground\",\n\t\tzMove: {boost: {def: 1}},\n\t\tcontestType: \"Clever\",\n\t},\n\ttoxicspikes: {\n\t\tnum: 390,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Toxic Spikes\",\n\t\tpp: 20,\n\t\tpriority: 0,\n\t\tflags: {reflectable: 1, snatch: 1, nonsky: 1, metronome: 1, mustpressure: 1},\n\t\tsideCondition: 'toxicspikes',\n\t\tcondition: {\n\t\t\t// this is a side condition\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'move: Toxic Spikes');\n\t\t\t\tthis.effectState.layers = 1;\n\t\t\t},\n\t\t\tonSideRestart(side) {\n\t\t\t\tif (this.effectState.layers >= 2) return false;\n\t\t\t\tthis.add('-sidestart', side, 'move: Toxic Spikes');\n\t\t\t\tthis.effectState.layers++;\n\t\t\t},\n\t\t\tonEntryHazard(pokemon) {\n\t\t\t\tif (!pokemon.isGrounded()) return;\n\t\t\t\tif (pokemon.hasType('Poison')) {\n\t\t\t\t\tthis.add('-sideend', pokemon.side, 'move: Toxic Spikes', '[of] ' + pokemon);\n\t\t\t\t\tpokemon.side.removeSideCondition('toxicspikes');\n\t\t\t\t} else if (pokemon.hasType('Steel') || pokemon.hasItem('heavydutyboots') ||\n\t\t\t\t\t\t\t pokemon.hasAbility('overcoat') || pokemon.hasItem('mantisclaw')) {\n\t\t\t\t\treturn;\n\t\t\t\t} else if (this.effectState.layers >= 2) {\n\t\t\t\t\tpokemon.trySetStatus('tox', pokemon.side.foe.active[0]);\n\t\t\t\t} else {\n\t\t\t\t\tpokemon.trySetStatus('psn', pokemon.side.foe.active[0]);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"foeSide\",\n\t\ttype: \"Poison\",\n\t\tzMove: {boost: {def: 1}},\n\t\tcontestType: \"Clever\",\n\t},\n\tstickyweb: {\n\t\tnum: 564,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Sticky Web\",\n\t\tpp: 20,\n\t\tpriority: 0,\n\t\tflags: {reflectable: 1, snatch: 1, metronome: 1},\n\t\tsideCondition: 'stickyweb',\n\t\tcondition: {\n\t\t\tonSideStart(side) {\n\t\t\t\tthis.add('-sidestart', side, 'move: Sticky Web');\n\t\t\t},\n\t\t\tonEntryHazard(pokemon) {\n\t\t\t\tif (!pokemon.isGrounded() || pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('overcoat') ||\n\t\t\t\t\t pokemon.hasItem('mantisclaw')) return;\n\t\t\t\tthis.add('-activate', pokemon, 'move: Sticky Web');\n\t\t\t\tthis.boost({spe: -1}, pokemon, this.effectState.source, this.dex.getActiveMove('stickyweb'));\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"foeSide\",\n\t\ttype: \"Bug\",\n\t\tzMove: {boost: {spe: 1}},\n\t\tcontestType: \"Tough\",\n\t},\n\tdefog: {\n\t\tnum: 432,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Defog\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, reflectable: 1, mirror: 1, bypasssub: 1, metronome: 1, wind: 1},\n\t\tonHit(target, source, move) {\n\t\t\tlet success = false;\n\t\t\tif (!target.volatiles['substitute'] || move.infiltrates) success = !!this.boost({evasion: -1});\n\t\t\tconst removeTarget = [\n\t\t\t\t'reflect', 'lightscreen', 'auroraveil', 'safeguard', 'mist', 'spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones',\n\t\t\t];\n\t\t\tconst removeAll = [\n\t\t\t\t'spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones',\n\t\t\t];\n\t\t\tfor (const targetCondition of removeTarget) {\n\t\t\t\tif (target.side.removeSideCondition(targetCondition)) {\n\t\t\t\t\tif (!removeAll.includes(targetCondition)) continue;\n\t\t\t\t\tthis.add('-sideend', target.side, this.dex.conditions.get(targetCondition).name, '[from] move: Defog', '[of] ' + source);\n\t\t\t\t\tsuccess = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const sideCondition of removeAll) {\n\t\t\t\tif (source.side.removeSideCondition(sideCondition)) {\n\t\t\t\t\tthis.add('-sideend', source.side, this.dex.conditions.get(sideCondition).name, '[from] move: Defog', '[of] ' + source);\n\t\t\t\t\tsuccess = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.field.clearTerrain();\n\t\t\treturn success;\n\t\t},\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Flying\",\n\t\tzMove: {boost: {accuracy: 1}},\n\t\tcontestType: \"Cool\",\n\t},\n\tblazingtorque: {\n\t\tinherit: true,\n\t\tisNonstandard: null,\n\t},\n\twickedtorque: {\n\t\tinherit: true,\n\t\tisNonstandard: null,\n\t},\n\tnoxioustorque: {\n\t\tinherit: true,\n\t\tisNonstandard: null,\n\t},\n\tcombattorque: {\n\t\tinherit: true,\n\t\tisNonstandard: null,\n\t},\n\tmagicaltorque: {\n\t\tinherit: true,\n\t\tisNonstandard: null,\n\t},\n\trapidspin: {\n\t\tnum: 229,\n\t\taccuracy: 100,\n\t\tbasePower: 50,\n\t\tcategory: \"Physical\",\n\t\tname: \"Rapid Spin\",\n\t\tpp: 40,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonAfterHit(target, pokemon, move) {\n\t\t\tif (!move.hasSheerForce) {\n\t\t\t\tif (pokemon.hp && pokemon.removeVolatile('leechseed')) {\n\t\t\t\t\tthis.add('-end', pokemon, 'Leech Seed', '[from] move: Rapid Spin', '[of] ' + pokemon);\n\t\t\t\t}\n\t\t\t\tconst sideConditions = ['spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones'];\n\t\t\t\tfor (const condition of sideConditions) {\n\t\t\t\t\tif (pokemon.hp && pokemon.side.removeSideCondition(condition)) {\n\t\t\t\t\t\tthis.add('-sideend', pokemon.side, this.dex.conditions.get(condition).name, '[from] move: Rapid Spin', '[of] ' + pokemon);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pokemon.hp && pokemon.volatiles['partiallytrapped']) {\n\t\t\t\t\tpokemon.removeVolatile('partiallytrapped');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAfterSubDamage(damage, target, pokemon, move) {\n\t\t\tif (!move.hasSheerForce) {\n\t\t\t\tif (pokemon.hp && pokemon.removeVolatile('leechseed')) {\n\t\t\t\t\tthis.add('-end', pokemon, 'Leech Seed', '[from] move: Rapid Spin', '[of] ' + pokemon);\n\t\t\t\t}\n\t\t\t\tconst sideConditions = ['spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones'];\n\t\t\t\tfor (const condition of sideConditions) {\n\t\t\t\t\tif (pokemon.hp && pokemon.side.removeSideCondition(condition)) {\n\t\t\t\t\t\tthis.add('-sideend', pokemon.side, this.dex.conditions.get(condition).name, '[from] move: Rapid Spin', '[of] ' + pokemon);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pokemon.hp && pokemon.volatiles['partiallytrapped']) {\n\t\t\t\t\tpokemon.removeVolatile('partiallytrapped');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tself: {\n\t\t\t\tboosts: {\n\t\t\t\t\tspe: 1,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\ttarget: \"normal\",\n\t\ttype: \"Normal\",\n\t\tcontestType: \"Cool\",\n\t},\n\tmortalspin: {\n\t\tnum: 866,\n\t\taccuracy: 100,\n\t\tbasePower: 30,\n\t\tcategory: \"Physical\",\n\t\tname: \"Mortal Spin\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1, metronome: 1},\n\t\tonAfterHit(target, pokemon, move) {\n\t\t\tif (!move.hasSheerForce) {\n\t\t\t\tif (pokemon.hp && pokemon.removeVolatile('leechseed')) {\n\t\t\t\t\tthis.add('-end', pokemon, 'Leech Seed', '[from] move: Mortal Spin', '[of] ' + pokemon);\n\t\t\t\t}\n\t\t\t\tconst sideConditions = ['spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones'];\n\t\t\t\tfor (const condition of sideConditions) {\n\t\t\t\t\tif (pokemon.hp && pokemon.side.removeSideCondition(condition)) {\n\t\t\t\t\t\tthis.add('-sideend', pokemon.side, this.dex.conditions.get(condition).name, '[from] move: Mortal Spin', '[of] ' + pokemon);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pokemon.hp && pokemon.volatiles['partiallytrapped']) {\n\t\t\t\t\tpokemon.removeVolatile('partiallytrapped');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonAfterSubDamage(damage, target, pokemon, move) {\n\t\t\tif (!move.hasSheerForce) {\n\t\t\t\tif (pokemon.hp && pokemon.removeVolatile('leechseed')) {\n\t\t\t\t\tthis.add('-end', pokemon, 'Leech Seed', '[from] move: Mortal Spin', '[of] ' + pokemon);\n\t\t\t\t}\n\t\t\t\tconst sideConditions = ['spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones'];\n\t\t\t\tfor (const condition of sideConditions) {\n\t\t\t\t\tif (pokemon.hp && pokemon.side.removeSideCondition(condition)) {\n\t\t\t\t\t\tthis.add('-sideend', pokemon.side, this.dex.conditions.get(condition).name, '[from] move: Mortal Spin', '[of] ' + pokemon);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pokemon.hp && pokemon.volatiles['partiallytrapped']) {\n\t\t\t\t\tpokemon.removeVolatile('partiallytrapped');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsecondary: {\n\t\t\tchance: 100,\n\t\t\tstatus: 'psn',\n\t\t},\n\t\ttarget: \"allAdjacentFoes\",\n\t\ttype: \"Poison\",\n\t},\n\ttidyup: {\n\t\tnum: 882,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Tidy Up\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {},\n\t\tonHit(pokemon) {\n\t\t\tlet success = false;\n\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\tif (active.removeVolatile('substitute')) success = true;\n\t\t\t}\n\t\t\tconst removeAll = ['spikes', 'toxicspikes', 'stealthrock', 'stickyweb', 'gmaxsteelsurge', 'healingstones'];\n\t\t\tconst sides = [pokemon.side, ...pokemon.side.foeSidesWithConditions()];\n\t\t\tfor (const side of sides) {\n\t\t\t\tfor (const sideCondition of removeAll) {\n\t\t\t\t\tif (side.removeSideCondition(sideCondition)) {\n\t\t\t\t\t\tthis.add('-sideend', side, this.dex.conditions.get(sideCondition).name);\n\t\t\t\t\t\tsuccess = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (success) this.add('-activate', pokemon, 'move: Tidy Up');\n\t\t\treturn !!this.boost({atk: 1, spe: 1}, pokemon, pokemon, null, false, true) || success;\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Normal\",\n\t},\n\tcourtchange: {\n\t\tnum: 756,\n\t\taccuracy: 100,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Court Change\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {mirror: 1, metronome: 1},\n\t\tonHitField(target, source) {\n\t\t\tconst sideConditions = [\n\t\t\t\t'mist', 'lightscreen', 'reflect', 'spikes', 'safeguard', 'tailwind', 'toxicspikes', 'stealthrock',\n\t\t\t\t'waterpledge', 'firepledge', 'grasspledge', 'stickyweb', 'auroraveil', 'gmaxsteelsurge', 'gmaxcannonade',\n\t\t\t\t'gmaxvinelash', 'gmaxwildfire', 'healingstones',\n\t\t\t];\n\t\t\tlet success = false;\n\t\t\tif (this.gameType === \"freeforall\") {\n\t\t\t\t// random integer from 1-3 inclusive\n\t\t\t\tconst offset = this.random(3) + 1;\n\t\t\t\t// the list of all sides in counterclockwise order\n\t\t\t\tconst sides = [this.sides[0], this.sides[2]!, this.sides[1], this.sides[3]!];\n\t\t\t\tconst temp: {[k: number]: typeof source.side.sideConditions} = {0: {}, 1: {}, 2: {}, 3: {}};\n\t\t\t\tfor (const side of sides) {\n\t\t\t\t\tfor (const id in side.sideConditions) {\n\t\t\t\t\t\tif (!sideConditions.includes(id)) continue;\n\t\t\t\t\t\ttemp[side.n][id] = side.sideConditions[id];\n\t\t\t\t\t\tdelete side.sideConditions[id];\n\t\t\t\t\t\tconst effectName = this.dex.conditions.get(id).name;\n\t\t\t\t\t\tthis.add('-sideend', side, effectName, '[silent]');\n\t\t\t\t\t\tsuccess = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < 4; i++) {\n\t\t\t\t\tconst sourceSideConditions = temp[sides[i].n];\n\t\t\t\t\tconst targetSide = sides[(i + offset) % 4]; // the next side in rotation\n\t\t\t\t\tfor (const id in sourceSideConditions) {\n\t\t\t\t\t\ttargetSide.sideConditions[id] = sourceSideConditions[id];\n\t\t\t\t\t\tconst effectName = this.dex.conditions.get(id).name;\n\t\t\t\t\t\tlet layers = sourceSideConditions[id].layers || 1;\n\t\t\t\t\t\tfor (; layers > 0; layers--) this.add('-sidestart', targetSide, effectName, '[silent]');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst sourceSideConditions = source.side.sideConditions;\n\t\t\t\tconst targetSideConditions = source.side.foe.sideConditions;\n\t\t\t\tconst sourceTemp: typeof sourceSideConditions = {};\n\t\t\t\tconst targetTemp: typeof targetSideConditions = {};\n\t\t\t\tfor (const id in sourceSideConditions) {\n\t\t\t\t\tif (!sideConditions.includes(id)) continue;\n\t\t\t\t\tsourceTemp[id] = sourceSideConditions[id];\n\t\t\t\t\tdelete sourceSideConditions[id];\n\t\t\t\t\tsuccess = true;\n\t\t\t\t}\n\t\t\t\tfor (const id in targetSideConditions) {\n\t\t\t\t\tif (!sideConditions.includes(id)) continue;\n\t\t\t\t\ttargetTemp[id] = targetSideConditions[id];\n\t\t\t\t\tdelete targetSideConditions[id];\n\t\t\t\t\tsuccess = true;\n\t\t\t\t}\n\t\t\t\tfor (const id in sourceTemp) {\n\t\t\t\t\ttargetSideConditions[id] = sourceTemp[id];\n\t\t\t\t}\n\t\t\t\tfor (const id in targetTemp) {\n\t\t\t\t\tsourceSideConditions[id] = targetTemp[id];\n\t\t\t\t}\n\t\t\t\tthis.add('-swapsideconditions');\n\t\t\t}\n\t\t\tif (!success) return false;\n\t\t\tthis.add('-activate', source, 'move: Court Change');\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"all\",\n\t\ttype: \"Normal\",\n\t},\n\thealblock: {\n\t\tnum: 377,\n\t\taccuracy: 100,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tisNonstandard: \"Past\",\n\t\tname: \"Heal Block\",\n\t\tpp: 15,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, reflectable: 1, mirror: 1, metronome: 1},\n\t\tvolatileStatus: 'healblock',\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(target, source, effect) {\n\t\t\t\tif (source?.hasAbility('persistent')) {\n\t\t\t\t\tthis.add('-activate', source, 'ability: Persistent', '[move] Heal Block');\n\t\t\t\t\treturn 7;\n\t\t\t\t}\n\t\t\t\tif (effect && effect.id === 'deathaura') {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonStart(pokemon, source) {\n\t\t\t\tthis.add('-start', pokemon, 'move: Heal Block');\n\t\t\t\tsource.moveThisTurnResult = true;\n\t\t\t},\n\t\t\tonDisableMove(pokemon) {\n\t\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\t\tif (this.dex.moves.get(moveSlot.id).flags['heal']) {\n\t\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBeforeMovePriority: 6,\n\t\t\tonBeforeMove(pokemon, target, move) {\n\t\t\t\tif ((move.flags['heal'] || move.id === 'bitterblade') && !move.isZ && !move.isMax) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Heal Block', move);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonModifyMove(move, pokemon, target) {\n\t\t\t\tif ((move.flags['heal'] || move.id === 'bitterblade') && !move.isZ && !move.isMax) {\n\t\t\t\t\tthis.add('cant', pokemon, 'move: Heal Block', move);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonResidualOrder: 20,\n\t\t\tonEnd(pokemon) {\n\t\t\t\tthis.add('-end', pokemon, 'move: Heal Block');\n\t\t\t},\n\t\t\tonTryHeal(damage, target, source, effect) {\n\t\t\t\tif ((effect?.id === 'zpower') || this.effectState.isZ) return damage;\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tonRestart(target, source) {\n\t\t\t\tthis.add('-fail', target, 'move: Heal Block'); // Succeeds to supress downstream messages\n\t\t\t\tif (!source.moveThisTurnResult) {\n\t\t\t\t\tsource.moveThisTurnResult = false;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"allAdjacentFoes\",\n\t\ttype: \"Psychic\",\n\t\tzMove: {boost: {spa: 2}},\n\t\tcontestType: \"Clever\",\n\t},\n\telectricterrain: {\n\t\tnum: 604,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Electric Terrain\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {nonsky: 1, metronome: 1},\n\t\tterrain: 'electricterrain',\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(source, effect) {\n\t\t\t\tif (source?.hasItem('terrainextender')) {\n\t\t\t\t\treturn 8;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonSetStatus(status, target, source, effect) {\n\t\t\t\tif (status.id === 'slp' && target.isGrounded() && !target.isSemiInvulnerable()) {\n\t\t\t\t\tif (effect.id === 'yawn' || (effect.effectType === 'Move' && !effect.secondaries)) {\n\t\t\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.add('-activate', target, 'move: Electric Terrain');\n\t\t\t\t\t}\n\t\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\tthis.add('-message', `${active.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonTryAddVolatile(status, target) {\n\t\t\t\tif (!target.isGrounded() || target.isSemiInvulnerable()) return;\n\t\t\t\tif (status.id === 'yawn') {\n\t\t\t\t\tthis.add('-activate', target, 'move: Electric Terrain');\n\t\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\tthis.add('-message', `${active.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBasePowerPriority: 6,\n\t\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\t\tif (move.type === 'Electric' && attacker.isGrounded() && !attacker.isSemiInvulnerable()) {\n\t\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\tthis.add('-message', `${active.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.debug('electric terrain boost');\n\t\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldStart(field, source, effect) {\n\t\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Electric Terrain', '[from] ability: ' + effect.name, '[of] ' + source);\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Electric Terrain');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldResidualOrder: 27,\n\t\t\tonFieldResidualSubOrder: 7,\n\t\t\tonFieldEnd() {\n\t\t\t\tthis.add('-fieldend', 'move: Electric Terrain');\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"all\",\n\t\ttype: \"Electric\",\n\t\tzMove: {boost: {spe: 1}},\n\t\tcontestType: \"Clever\",\n\t},\n\tpsychicterrain: {\n\t\tnum: 678,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Psychic Terrain\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {nonsky: 1, metronome: 1},\n\t\tterrain: 'psychicterrain',\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(source, effect) {\n\t\t\t\tif (source?.hasItem('terrainextender')) {\n\t\t\t\t\treturn 8;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonTryHitPriority: 4,\n\t\t\tonTryHit(target, source, effect) {\n\t\t\t\tif (effect && (effect.priority <= 0.1 || effect.target === 'self')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target.isSemiInvulnerable() || target.isAlly(source)) return;\n\t\t\t\tif (!target.isGrounded()) {\n\t\t\t\t\tconst baseMove = this.dex.moves.get(effect.id);\n\t\t\t\t\tif (baseMove.priority > 0) {\n\t\t\t\t\t\tthis.hint(\"Psychic Terrain doesn't affect Pok\u00E9mon immune to Ground.\");\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\tthis.add('-message', `${active.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.add('-activate', target, 'move: Psychic Terrain');\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\tonBasePowerPriority: 6,\n\t\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\t\tif (move.type === 'Psychic' && attacker.isGrounded() && !attacker.isSemiInvulnerable()) {\n\t\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\tthis.add('-message', `${active.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.debug('psychic terrain boost');\n\t\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldStart(field, source, effect) {\n\t\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Psychic Terrain', '[from] ability: ' + effect.name, '[of] ' + source);\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Psychic Terrain');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldResidualOrder: 27,\n\t\t\tonFieldResidualSubOrder: 7,\n\t\t\tonFieldEnd() {\n\t\t\t\tthis.add('-fieldend', 'move: Psychic Terrain');\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"all\",\n\t\ttype: \"Psychic\",\n\t\tzMove: {boost: {spa: 1}},\n\t\tcontestType: \"Clever\",\n\t},\n\tgrassyterrain: {\n\t\tnum: 580,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Grassy Terrain\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {nonsky: 1, metronome: 1},\n\t\tterrain: 'grassyterrain',\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(source, effect) {\n\t\t\t\tif (source?.hasItem('terrainextender')) {\n\t\t\t\t\treturn 8;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonBasePowerPriority: 6,\n\t\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\t\tconst weakenedMoves = ['earthquake', 'bulldoze', 'magnitude'];\n\t\t\t\tif (weakenedMoves.includes(move.id) && defender.isGrounded() && !defender.isSemiInvulnerable()) {\n\t\t\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.debug('move weakened by grassy terrain');\n\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t}\n\t\t\t\tif (move.type === 'Grass' && attacker.isGrounded()) {\n\t\t\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.debug('grassy terrain boost');\n\t\t\t\t\treturn this.chainModify([5325, 4096]);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldStart(field, source, effect) {\n\t\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Grassy Terrain', '[from] ability: ' + effect.name, '[of] ' + source);\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Grassy Terrain');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonResidualOrder: 5,\n\t\t\tonResidualSubOrder: 2,\n\t\t\tonResidual(pokemon) {\n\t\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pokemon.isGrounded() && !pokemon.isSemiInvulnerable()) {\n\t\t\t\t\tthis.heal(pokemon.baseMaxhp / 16, pokemon, pokemon);\n\t\t\t\t} else {\n\t\t\t\t\tthis.debug(`Pokemon semi-invuln or not grounded; Grassy Terrain skipped`);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldResidualOrder: 27,\n\t\t\tonFieldResidualSubOrder: 7,\n\t\t\tonFieldEnd() {\n\t\t\t\tthis.add('-fieldend', 'move: Grassy Terrain');\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"all\",\n\t\ttype: \"Grass\",\n\t\tzMove: {boost: {def: 1}},\n\t\tcontestType: \"Beautiful\",\n\t},\n\tmistyterrain: {\n\t\tnum: 581,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Misty Terrain\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {nonsky: 1, metronome: 1},\n\t\tterrain: 'mistyterrain',\n\t\tcondition: {\n\t\t\tduration: 5,\n\t\t\tdurationCallback(source, effect) {\n\t\t\t\tif (source?.hasItem('terrainextender')) {\n\t\t\t\t\treturn 8;\n\t\t\t\t}\n\t\t\t\treturn 5;\n\t\t\t},\n\t\t\tonSetStatus(status, target, source, effect) {\n\t\t\t\tif (!target.isGrounded() || target.isSemiInvulnerable()) return;\n\t\t\t\tif (effect && ((effect as Move).status || effect.id === 'yawn')) {\n\t\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.add('-activate', target, 'move: Misty Terrain');\n\t\t\t\t}\n\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\tthis.add('-message', `${active.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tonTryAddVolatile(status, target, source, effect) {\n\t\t\t\tif (!target.isGrounded() || target.isSemiInvulnerable()) return;\n\t\t\t\tif (status.id === 'confusion') {\n\t\t\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\tthis.add('-message', `${active.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (effect.effectType === 'Move' && !effect.secondaries) this.add('-activate', target, 'move: Misty Terrain');\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBasePowerPriority: 6,\n\t\t\tonBasePower(basePower, attacker, defender, move) {\n\t\t\t\tif (move.type === 'Dragon' && defender.isGrounded() && !defender.isSemiInvulnerable()) {\n\t\t\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.debug('misty terrain weaken');\n\t\t\t\t\treturn this.chainModify(0.5);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldStart(field, source, effect) {\n\t\t\t\tif (effect?.effectType === 'Ability') {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Misty Terrain', '[from] ability: ' + effect.name, '[of] ' + source);\n\t\t\t\t} else {\n\t\t\t\t\tthis.add('-fieldstart', 'move: Misty Terrain');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFieldResidualOrder: 27,\n\t\t\tonFieldResidualSubOrder: 7,\n\t\t\tonFieldEnd() {\n\t\t\t\tthis.add('-fieldend', 'Misty Terrain');\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"all\",\n\t\ttype: \"Fairy\",\n\t\tzMove: {boost: {spd: 1}},\n\t\tcontestType: \"Beautiful\",\n\t},\n\tcamouflage: {\n\t\tinherit: true,\n\t\tonHit(target) {\n\t\t\tlet newType = 'Normal';\n\t\t\tif (this.field.isTerrain('electricterrain')) {\n\t\t\t\tnewType = 'Electric';\n\t\t\t} else if (this.field.isTerrain('grassyterrain')) {\n\t\t\t\tnewType = 'Grass';\n\t\t\t} else if (this.field.isTerrain('mistyterrain')) {\n\t\t\t\tnewType = 'Fairy';\n\t\t\t} else if (this.field.isTerrain('psychicterrain')) {\n\t\t\t\tnewType = 'Psychic';\n\t\t\t}\n\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\tnewType = 'Normal';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (target.getTypes().join() === newType || !target.setType(newType)) return false;\n\t\t\tthis.add('-start', target, 'typechange', newType);\n\t\t},\n\t},\n\texpandingforce: {\n\t\tinherit: true,\n\t\tonBasePower(basePower, source) {\n\t\t\tif (this.getAllActive().some(x => x.hasAbility('cloudnine'))) return;\n\t\t\tif (this.field.isTerrain('psychicterrain') && source.isGrounded()) {\n\t\t\t\tthis.debug('terrain buff');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t\tonModifyMove(move, source, target) {\n\t\t\tif (this.getAllActive().some(x => x.hasAbility('cloudnine'))) return;\n\t\t\tif (this.field.isTerrain('psychicterrain') && source.isGrounded()) {\n\t\t\t\tmove.target = 'allAdjacentFoes';\n\t\t\t}\n\t\t},\n\t},\n\tfloralhealing: {\n\t\tinherit: true,\n\t\tonHit(target, source) {\n\t\t\tlet success = false;\n\t\t\tif (this.field.isTerrain('grassyterrain')) {\n\t\t\t\tif (this.getAllActive().some(x => x.hasAbility('cloudnine'))) {\n\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\treturn success;\n\t\t\t\t}\n\t\t\t\tsuccess = !!this.heal(this.modify(target.baseMaxhp, 0.667));\n\t\t\t} else {\n\t\t\t\tsuccess = !!this.heal(Math.ceil(target.baseMaxhp * 0.5));\n\t\t\t}\n\t\t\tif (success && target.side !== source.side) {\n\t\t\t\ttarget.staleness = 'external';\n\t\t\t}\n\t\t\treturn success;\n\t\t},\n\t},\n\tgrassyglide: {\n\t\tinherit: true,\n\t\tonModifyPriority(priority, source, target, move) {\n\t\t\tif (this.getAllActive().some(x => x.hasAbility('cloudnine'))) return priority;\n\t\t\tif (this.field.isTerrain('grassyterrain') && source.isGrounded()) {\n\t\t\t\treturn priority + 1;\n\t\t\t}\n\t\t},\n\t},\n\tmistyexplosion: {\n\t\tinherit: true,\n\t\tonBasePower(basePower, source) {\n\t\t\tif (this.getAllActive().some(x => x.hasAbility('cloudnine'))) return;\n\t\t\tif (this.field.isTerrain('mistyterrain') && source.isGrounded()) {\n\t\t\t\tthis.debug('misty terrain boost');\n\t\t\t\treturn this.chainModify(1.5);\n\t\t\t}\n\t\t},\n\t},\n\tnaturepower: {\n\t\tinherit: true,\n\t\tonTryHit(target, pokemon) {\n\t\t\tlet move = 'triattack';\n\t\t\tif (this.field.isTerrain('electricterrain')) {\n\t\t\t\tmove = 'thunderbolt';\n\t\t\t} else if (this.field.isTerrain('grassyterrain')) {\n\t\t\t\tmove = 'energyball';\n\t\t\t} else if (this.field.isTerrain('mistyterrain')) {\n\t\t\t\tmove = 'moonblast';\n\t\t\t} else if (this.field.isTerrain('psychicterrain')) {\n\t\t\t\tmove = 'psychic';\n\t\t\t}\n\t\t\tfor (const active of this.getAllActive()) {\n\t\t\t\tif (active.hasAbility('cloudnine')) {\n\t\t\t\t\tthis.add('-message', `${active.name} suppresses the effects of the terrain!`);\n\t\t\t\t\tmove = 'triattack';\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.actions.useMove(move, pokemon, target);\n\t\t\treturn null;\n\t\t},\n\t},\n\trisingvoltage: {\n\t\tinherit: true,\n\t\tonBasePower(basePower, pokemon, target) {\n\t\t\tif (this.getAllActive().some(x => x.hasAbility('cloudnine'))) return;\n\t\t\tif (this.field.isTerrain('electricterrain') && target.isGrounded()) {\n\t\t\t\tthis.debug('terrain buff');\n\t\t\t\treturn this.chainModify(2);\n\t\t\t}\n\t\t},\n\t},\n\tsecretpower: {\n\t\tinherit: true,\n\t\tonModifyMove(move, pokemon) {\n\t\t\tif (this.field.isTerrain('')) return;\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmove.secondaries = [];\n\t\t\tif (this.field.isTerrain('electricterrain')) {\n\t\t\t\tmove.secondaries.push({\n\t\t\t\t\tchance: 30,\n\t\t\t\t\tstatus: 'par',\n\t\t\t\t});\n\t\t\t} else if (this.field.isTerrain('grassyterrain')) {\n\t\t\t\tmove.secondaries.push({\n\t\t\t\t\tchance: 30,\n\t\t\t\t\tstatus: 'slp',\n\t\t\t\t});\n\t\t\t} else if (this.field.isTerrain('mistyterrain')) {\n\t\t\t\tmove.secondaries.push({\n\t\t\t\t\tchance: 30,\n\t\t\t\t\tboosts: {\n\t\t\t\t\t\tspa: -1,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (this.field.isTerrain('psychicterrain')) {\n\t\t\t\tmove.secondaries.push({\n\t\t\t\t\tchance: 30,\n\t\t\t\t\tboosts: {\n\t\t\t\t\t\tspe: -1,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\tsteelroller: {\n\t\tinherit: true,\n\t\tonTryHit() {\n\t\t\tif (this.field.isTerrain('')) return false;\n\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tterrainpulse: {\n\t\tinherit: true,\n\t\tonModifyType(move, pokemon) {\n\t\t\tif (!pokemon.isGrounded()) return;\n\t\t\tif (this.getAllActive().some(x => x.hasAbility('cloudnine'))) return;\n\t\t\tswitch (this.field.terrain) {\n\t\t\tcase 'electricterrain':\n\t\t\t\tmove.type = 'Electric';\n\t\t\t\tbreak;\n\t\t\tcase 'grassyterrain':\n\t\t\t\tmove.type = 'Grass';\n\t\t\t\tbreak;\n\t\t\tcase 'mistyterrain':\n\t\t\t\tmove.type = 'Fairy';\n\t\t\t\tbreak;\n\t\t\tcase 'psychicterrain':\n\t\t\t\tmove.type = 'Psychic';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tonModifyMove(move, pokemon) {\n\t\t\tif (this.field.terrain && pokemon.isGrounded()) {\n\t\t\t\tfor (const target of this.getAllActive()) {\n\t\t\t\t\tif (target.hasAbility('cloudnine')) {\n\t\t\t\t\t\tthis.add('-message', `${target.name} suppresses the effects of the terrain!`);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmove.basePower *= 2;\n\t\t\t}\n\t\t},\n\t},\n\tbleakwindstorm: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tsandsearstorm: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tspringtidestorm: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\twildboltstorm: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\taircutter: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tfairywind: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tgust: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\theatwave: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\thurricane: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\ticywind: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tpetalblizzard: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tsandstorm: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\ttailwind: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\ttwister: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\twhirlwind: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tonHit(pokemon, source, move) {\n\t\t\t\tif (source.hasItem('airfreshener')) {\n\t\t\t\t\tthis.add('-activate', source, 'move: Aromatherapy');\n\t\t\t\t\tfor (const ally of source.side.pokemon) {\n\t\t\t\t\t\tif (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tally.cureStatus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tboomburst: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tbugbuzz: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tclangingscales: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tclangoroussoul: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tconfide: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tdisarmingvoice: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\techoedvoice: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\teeriespell: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tgrowl: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\thealbell: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\thypervoice: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tmetalsound: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\thowl: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tnobleroar: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\toverdrive: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tpartingshot: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tperishsong: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\trelicsong: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\troar: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tscreech: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tsing: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tsnarl: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tsnore: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tsparklingaria: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tchatter: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tsupersonic: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\ttorchsong: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t},\n\t},\n\tuproar: {\n\t\tinherit: true,\n\t\tself: {\n\t\t\tsideCondition: 'echochamber',\n\t\t\tvolatileStatus: 'uproar',\n\t\t},\n\t},\n\trevivalblessing: {\n\t\tinherit: true,\n\t\tflags: {snatch: 1},\n\t},\n\tshedtail: {\n\t\tinherit: true,\n\t\tflags: {snatch: 1},\n\t},\n\taromaticmist: {\n\t\tinherit: true,\n\t\tflags: {snatch: 1, bypasssub: 1, metronome: 1},\n\t},\n\tterablast: {\n\t\tnum: 851,\n\t\taccuracy: 100,\n\t\tbasePower: 80,\n\t\tcategory: \"Special\",\n\t\tname: \"Tera Blast\",\n\t\tpp: 10,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, metronome: 1, mustpressure: 1},\n\t\tonPrepareHit(target, source, move) {\n\t\t\tif (source.terastallized) {\n\t\t\t\tthis.attrLastMove('[anim] Tera Blast ' + source.teraType);\n\t\t\t}\n\t\t},\n\t\tonModifyType(move, pokemon, target) {\n\t\t\tif (pokemon.terastallized) {\n\t\t\t\tmove.type = pokemon.teraType;\n\t\t\t}\n\t\t},\n\t\tonModifyMove(move, pokemon) {\n\t\t\tif ((pokemon.terastallized || pokemon.hasItem('terashard')) &&\n\t\t\t\t pokemon.getStat('atk', false, true) > pokemon.getStat('spa', false, true)) {\n\t\t\t\tmove.category = 'Physical';\n\t\t\t}\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Normal\",\n\t},\n\tdoubleshock: {\n\t\tnum: 892,\n\t\taccuracy: 100,\n\t\tbasePower: 120,\n\t\tcategory: \"Physical\",\n\t\tname: \"Double Shock\",\n\t\tpp: 5,\n\t\tpriority: 0,\n\t\tflags: {contact: 1, protect: 1, mirror: 1},\n\t\tonTryMove(pokemon, target, move) {\n\t\t\tif (pokemon.hasType('Electric')) return;\n\t\t\tthis.add('-fail', pokemon, 'move: Double Shock');\n\t\t\tthis.attrLastMove('[still]');\n\t\t\treturn null;\n\t\t},\n\t\tself: {\n\t\t\tonHit(pokemon) {\n\t\t\t\tif (pokemon.hasItem('terashard') && pokemon.teraType === 'Electric') return;\n\t\t\t\tpokemon.setType(pokemon.getTypes(true).map(type => type === \"Electric\" ? \"???\" : type));\n\t\t\t\tthis.add('-start', pokemon, 'typechange', pokemon.getTypes().join('/'), '[from] move: Double Shock');\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Electric\",\n\t\tcontestType: \"Clever\",\n\t},\n\tburnup: {\n\t\tnum: 682,\n\t\taccuracy: 100,\n\t\tbasePower: 130,\n\t\tcategory: \"Special\",\n\t\tname: \"Burn Up\",\n\t\tpp: 5,\n\t\tpriority: 0,\n\t\tflags: {protect: 1, mirror: 1, defrost: 1, metronome: 1},\n\t\tonTryMove(pokemon, target, move) {\n\t\t\tif (pokemon.hasType('Fire')) return;\n\t\t\tthis.add('-fail', pokemon, 'move: Burn Up');\n\t\t\tthis.attrLastMove('[still]');\n\t\t\treturn null;\n\t\t},\n\t\tself: {\n\t\t\tonHit(pokemon) {\n\t\t\t\tif (pokemon.hasItem('terashard') && pokemon.teraType === 'Fire') return;\n\t\t\t\tpokemon.setType(pokemon.getTypes(true).map(type => type === \"Fire\" ? \"???\" : type));\n\t\t\t\tthis.add('-start', pokemon, 'typechange', pokemon.getTypes().join('/'), '[from] move: Burn Up');\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"normal\",\n\t\ttype: \"Fire\",\n\t\tcontestType: \"Clever\",\n\t},\n\troost: {\n\t\tnum: 355,\n\t\taccuracy: true,\n\t\tbasePower: 0,\n\t\tcategory: \"Status\",\n\t\tname: \"Roost\",\n\t\tpp: 5,\n\t\tpriority: 0,\n\t\tflags: {snatch: 1, heal: 1, metronome: 1},\n\t\theal: [1, 2],\n\t\tself: {\n\t\t\tvolatileStatus: 'roost',\n\t\t},\n\t\tcondition: {\n\t\t\tduration: 1,\n\t\t\tonResidualOrder: 25,\n\t\t\tonStart(target) {\n\t\t\t\tif (!target.terastallized && !target.hasItem('terashard')) {\n\t\t\t\t\tthis.add('-singleturn', target, 'move: Roost');\n\t\t\t\t} else if (target.terastallized === \"Flying\" || target.hasItem('terashard')) {\n\t\t\t\t\tthis.add('-hint', \"If a Flying Terastallized Pokemon uses Roost, it remains Flying-type.\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tonTypePriority: -1,\n\t\t\tonType(types, pokemon) {\n\t\t\t\tthis.effectState.typeWas = types;\n\t\t\t\treturn types.filter(type => type !== 'Flying');\n\t\t\t},\n\t\t},\n\t\tsecondary: null,\n\t\ttarget: \"self\",\n\t\ttype: \"Flying\",\n\t\tzMove: {effect: 'clearnegativeboost'},\n\t\tcontestType: \"Clever\",\n\t},\n};\n"], "mappings": "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", "names": [] }