Spaces:
Sleeping
Sleeping
{ | |
"version": 3, | |
"sources": ["../../../../data/mods/gen2stadium2/conditions.ts"], | |
"sourcesContent": ["/**\n * Since Stadium 2 ignores stat drops while recalculating stats due to boosting moves, haze,\n * or stat-lowering moves. The status conditions which affect a targets stats (brn and par) have\n * a volatile along with them to keep track of if their respective stat changes should be factored\n * in during stat calculations or not.\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\ttarget.addVolatile('brnattackdrop');\n\t\t},\n\t\tonAfterMoveSelfPriority: 3,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tresidualdmg(this, pokemon);\n\t\t},\n\t\tonSwitchIn(pokemon) {\n\t\t\tpokemon.addVolatile('brnattackdrop');\n\t\t},\n\t\tonAfterSwitchInSelf(pokemon) {\n\t\t\tresidualdmg(this, pokemon);\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\ttarget.addVolatile('parspeeddrop');\n\t\t},\n\t\tonBeforeMovePriority: 2,\n\t\tonBeforeMove(pokemon) {\n\t\t\tif (this.randomChance(1, 4)) {\n\t\t\t\tthis.add('cant', pokemon, 'par');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tonSwitchIn(pokemon) {\n\t\t\tpokemon.addVolatile('parspeeddrop');\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-4 turns, guaranteed 1 turn of sleep.\n\t\t\tthis.effectState.time = this.random(2, 5);\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\tpokemon.cureStatus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.add('cant', pokemon, 'slp');\n\t\t\tif (move.sleepUsable) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t},\n\tconfusion: {\n\t\tinherit: true,\n\t\t// Stadium 2 fixed Berserk Gene afflicting Confusion for 255 turns.\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\tonBeforeMove(pokemon, target, move) {\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(1, 2)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmove = {\n\t\t\t\tbasePower: 40,\n\t\t\t\ttype: '???',\n\t\t\t\tbaseMoveType: move.type,\n\t\t\t\tcategory: 'Physical',\n\t\t\t\twillCrit: false,\n\t\t\t\tisConfusionSelfHit: true,\n\t\t\t\tnoDamageVariance: true,\n\t\t\t\tflags: {},\n\t\t\t\tselfdestruct: move.selfdestruct,\n\t\t\t} as unknown as ActiveMove;\n\t\t\tconst damage = this.actions.getDamage(pokemon, pokemon, move);\n\t\t\tif (typeof damage !== 'number') throw new Error(\"Confusion damage not dealt\");\n\t\t\tthis.directDamage(damage);\n\t\t\treturn false;\n\t\t},\n\t},\n\tresidualdmg: {\n\t\tname: 'residualdmg',\n\t\tonStart(target) {\n\t\t\ttarget.volatiles['residualdmg'].counter = 0;\n\t\t},\n\t\tonAfterMoveSelfPriority: 100,\n\t\tonAfterMoveSelf(pokemon) {\n\t\t\tif (['brn', 'psn', 'tox'].includes(pokemon.status)) pokemon.volatiles['residualdmg'].counter++;\n\t\t},\n\t\tonAfterSwitchInSelf(pokemon) {\n\t\t\tif (['brn', 'psn', 'tox'].includes(pokemon.status)) pokemon.volatiles['residualdmg'].counter++;\n\t\t},\n\t},\n};\n\nfunction residualdmg(battle: Battle, pokemon: Pokemon) {\n\tif (pokemon.volatiles['residualdmg']) {\n\t\tconst residualDmg = battle.clampIntRange(\n\t\t\tMath.floor(pokemon.maxhp / 16) * pokemon.volatiles['residualdmg'].counter, 1\n\t\t);\n\t\tbattle.damage(residualDmg, pokemon);\n\t\tbattle.hint(\"In Gen 2, Toxic's counter is retained through Baton Pass/Heal Bell and applies to PSN/BRN.\", true);\n\t} else {\n\t\tbattle.damage(battle.clampIntRange(Math.floor(pokemon.maxhp / 8), 1), pokemon);\n\t}\n}\n"], | |
"mappings": "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", | |
"names": [] | |
} | |