Spaces:
Running
Running
{ | |
"version": 3, | |
"sources": ["../../../../data/mods/gen1/conditions.ts"], | |
"sourcesContent": ["/**\n * Status worked very differently in Gen 1.\n * - Sleep lasted longer, had no reset on switch and took a whole turn to wake up.\n * - Frozen only thaws when hit by fire or Haze.\n *\n * Stat boosts (-speed, -atk) also worked differently, so they are\n * separated as volatile statuses that are applied on switch in, removed\n * under certain conditions and re-applied under other conditions.\n */\n\nexport const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = {\n\tbrn: {\n\t\tname: 'brn',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'brn');\n\t\t},\n\t\tonAfterMoveSelfPriority: 2,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tconst toxicCounter = pokemon.volatiles['residualdmg'] ? pokemon.volatiles['residualdmg'].counter : 1;\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1) * toxicCounter, pokemon);\n\t\t\tif (pokemon.volatiles['residualdmg']) {\n\t\t\t\tthis.hint(\"In Gen 1, Toxic's counter is retained after Rest and applies to PSN/BRN.\", true);\n\t\t\t}\n\t\t},\n\t\tonAfterSwitchInSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t},\n\tpar: {\n\t\tname: 'par',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'par');\n\t\t},\n\t\tonBeforeMovePriority: 2,\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (this.randomChance(63, 256)) {\n\t\t\t\tthis.add('cant', pokemon, 'par');\n\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t\tif (pokemon.removeVolatile('twoturnmove')) {\n\t\t\t\t\tif (pokemon.volatiles['invulnerability']) {\n\t\t\t\t\t\tthis.hint(`In Gen 1, when a Dig/Fly user is fully paralyzed while semi-invulnerable, ` +\n\t\t\t\t\t\t\t`it will remain semi-invulnerable until it switches out or fully executes Dig/Fly`, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpokemon.removeVolatile('partialtrappinglock');\n\t\t\t\tpokemon.removeVolatile('lockedmove');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t},\n\tslp: {\n\t\tname: 'slp',\n\t\teffectType: 'Status',\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tif (sourceEffect && sourceEffect.effectType === 'Move') {\n\t\t\t\tthis.add('-status', target, 'slp', `[from] move: ${sourceEffect.name}`);\n\t\t\t} else {\n\t\t\t\tthis.add('-status', target, 'slp');\n\t\t\t}\n\t\t\t// 1-7 turns\n\t\t\tthis.effectState.startTime = this.random(1, 8);\n\t\t\tthis.effectState.time = this.effectState.startTime;\n\n\t\t\tif (target.removeVolatile('nightmare')) {\n\t\t\t\tthis.add('-end', target, 'Nightmare', '[silent]');\n\t\t\t}\n\t\t},\n\t\tonBeforeMovePriority: 10,\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tpokemon.statusState.time--;\n\t\t\tif (pokemon.statusState.time > 0) {\n\t\t\t\tthis.add('cant', pokemon, 'slp');\n\t\t\t}\n\t\t\tpokemon.lastMove = null;\n\t\t\treturn false;\n\t\t},\n\t\tonAfterMoveSelfPriority: 3,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tif (pokemon.statusState.time <= 0) pokemon.cureStatus();\n\t\t},\n\t},\n\tfrz: {\n\t\tname: 'frz',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'frz');\n\t\t},\n\t\tonBeforeMovePriority: 12,\n\t\tonBeforeMove(pokemon, target, move) {\n\t\t\tthis.add('cant', pokemon, 'frz');\n\t\t\tpokemon.lastMove = null;\n\t\t\treturn false;\n\t\t},\n\t\tonAfterMoveSecondary(target, source, move) {\n\t\t\tif (move.secondary && move.secondary.status === 'brn') {\n\t\t\t\ttarget.cureStatus();\n\t\t\t}\n\t\t},\n\t},\n\tpsn: {\n\t\tname: 'psn',\n\t\teffectType: 'Status',\n\t\tonStart(target) {\n\t\t\tthis.add('-status', target, 'psn');\n\t\t},\n\t\tonAfterMoveSelfPriority: 2,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tconst toxicCounter = pokemon.volatiles['residualdmg'] ? pokemon.volatiles['residualdmg'].counter : 1;\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1) * toxicCounter, pokemon);\n\t\t\tif (pokemon.volatiles['residualdmg']) {\n\t\t\t\tthis.hint(\"In Gen 1, Toxic's counter is retained after Rest and applies to PSN/BRN.\", true);\n\t\t\t}\n\t\t},\n\t\tonAfterSwitchInSelf(pokemon) {\n\t\t\tthis.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1));\n\t\t},\n\t},\n\ttox: {\n\t\tinherit: true,\n\t\tonAfterMoveSelfPriority: 2,\n\t},\n\tconfusion: {\n\t\tname: 'confusion',\n\t\t// this is a volatile status\n\t\tonStart(target, source, sourceEffect) {\n\t\t\tif (sourceEffect && sourceEffect.id === 'lockedmove') {\n\t\t\t\tthis.add('-start', target, 'confusion', '[silent]');\n\t\t\t} else {\n\t\t\t\tthis.add('-start', target, 'confusion');\n\t\t\t}\n\t\t\tthis.effectState.time = this.random(2, 6);\n\t\t},\n\t\tonEnd(target) {\n\t\t\tthis.add('-end', target, 'confusion');\n\t\t},\n\t\tonBeforeMovePriority: 3,\n\t\tonBeforeMove(pokemon, target) {\n\t\t\tpokemon.volatiles['confusion'].time--;\n\t\t\tif (!pokemon.volatiles['confusion'].time) {\n\t\t\t\tpokemon.removeVolatile('confusion');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('-activate', pokemon, 'confusion');\n\t\t\tif (!this.randomChance(128, 256)) {\n\t\t\t\tconst damage = Math.floor(Math.floor((\n\t\t\t\t\t(Math.floor(2 * pokemon.level / 5) + 2) * pokemon.getStat('atk') * 40\n\t\t\t\t) / pokemon.getStat('def', false)) / 50) + 2;\n\t\t\t\tthis.directDamage(damage, pokemon, target);\n\t\t\t\tpokemon.removeVolatile('bide');\n\t\t\t\tpokemon.removeVolatile('twoturnmove');\n\t\t\t\tpokemon.removeVolatile('invulnerability');\n\t\t\t\tpokemon.removeVolatile('partialtrappinglock');\n\t\t\t\tpokemon.removeVolatile('lockedmove');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t},\n\tflinch: {\n\t\tname: 'flinch',\n\t\tduration: 1,\n\t\tonStart(target) {\n\t\t\ttarget.removeVolatile('mustrecharge');\n\t\t},\n\t\tonBeforeMovePriority: 8,\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (!this.runEvent('Flinch', pokemon)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('cant', pokemon, 'flinch');\n\t\t\treturn false;\n\t\t},\n\t},\n\ttrapped: {\n\t\tname: 'trapped',\n\t\tnoCopy: true,\n\t\tonTrapPokemon(pokemon) {\n\t\t\tif (!this.effectState.source?.isActive) {\n\t\t\t\tdelete pokemon.volatiles['trapped'];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpokemon.trapped = true;\n\t\t},\n\t},\n\tpartiallytrapped: {\n\t\tname: 'partiallytrapped',\n\t\tduration: 2,\n\t\tonBeforeMovePriority: 9,\n\t\tonBeforeMove(pokemon) {\n\t\t\tthis.add('cant', pokemon, 'partiallytrapped');\n\t\t\treturn false;\n\t\t},\n\t},\n\tpartialtrappinglock: {\n\t\tname: 'partialtrappinglock',\n\t\tdurationCallback() {\n\t\t\tconst duration = this.sample([2, 2, 2, 3, 3, 3, 4, 5]);\n\t\t\treturn duration;\n\t\t},\n\t\tonStart(target, source, effect) {\n\t\t\tthis.effectState.move = effect.id;\n\t\t},\n\t\tonDisableMove(pokemon) {\n\t\t\tif (!pokemon.hasMove(this.effectState.move)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const moveSlot of pokemon.moveSlots) {\n\t\t\t\tif (moveSlot.id !== this.effectState.move) {\n\t\t\t\t\tpokemon.disableMove(moveSlot.id);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tmustrecharge: {\n\t\tinherit: true,\n\t\tduration: 0,\n\t\tonBeforeMovePriority: 7,\n\t\tonStart() {},\n\t},\n\tlockedmove: {\n\t\t// Thrash and Petal Dance.\n\t\tname: 'lockedmove',\n\t\tonStart(target, source, effect) {\n\t\t\tthis.effectState.move = effect.id;\n\t\t\tthis.effectState.time = this.random(2, 4);\n\t\t\tthis.effectState.accuracy = 255;\n\t\t},\n\t\tonLockMove() {\n\t\t\treturn this.effectState.move;\n\t\t},\n\t\tonBeforeTurn(pokemon) {\n\t\t\tconst move = this.dex.moves.get(this.effectState.move);\n\t\t\tif (move.id) {\n\t\t\t\tthis.debug('Forcing into ' + move.id);\n\t\t\t\tthis.queue.changeAction(pokemon, { choice: 'move', moveid: move.id });\n\t\t\t}\n\t\t},\n\t},\n\ttwoturnmove: {\n\t\t// Skull Bash, Solar Beam, ...\n\t\tname: 'twoturnmove',\n\t\tonStart(attacker, defender, effect) {\n\t\t\t// (\"attacker\" is the Pokemon using the two turn move and the Pokemon this condition is being applied to)\n\t\t\tthis.effectState.move = effect.id;\n\t\t\tthis.effectState.sourceEffect = effect.sourceEffect;\n\t\t\tthis.attrLastMove('[still]');\n\t\t},\n\t\tonLockMove() {\n\t\t\treturn this.effectState.move;\n\t\t},\n\t},\n\tinvulnerability: {\n\t\t// Dig/Fly\n\t\tname: 'invulnerability',\n\t\tonInvulnerability(target, source, move) {\n\t\t\tif (target === source) return true;\n\t\t\tif (move.id === 'swift' || move.id === 'transform') return true;\n\t\t\tthis.add('-message', 'The foe ' + target.name + ' can\\'t be hit while invulnerable!');\n\t\t\treturn false;\n\t\t},\n\t},\n};\n"], | |
"mappings": "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", | |
"names": [] | |
} | |