Spaces:
Running
Running
{ | |
"version": 3, | |
"sources": ["../../../../data/mods/fullpotential/scripts.ts"], | |
"sourcesContent": ["export const Scripts: ModdedBattleScriptsData = {\n\tgen: 9,\n\tactions: {\n\t\tgetDamage(source, target, move, suppressMessages) {\n\t\t\tif (typeof move === 'string') move = this.dex.getActiveMove(move);\n\n\t\t\tif (typeof move === 'number') {\n\t\t\t\tconst basePower = move;\n\t\t\t\tmove = new Dex.Move({\n\t\t\t\t\tbasePower,\n\t\t\t\t\ttype: '???',\n\t\t\t\t\tcategory: 'Physical',\n\t\t\t\t\twillCrit: false,\n\t\t\t\t}) as ActiveMove;\n\t\t\t\tmove.hit = 0;\n\t\t\t}\n\n\t\t\tif (!move.ignoreImmunity || (move.ignoreImmunity !== true && !move.ignoreImmunity[move.type])) {\n\t\t\t\tif (!target.runImmunity(move.type, !suppressMessages)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (move.ohko) return target.maxhp;\n\t\t\tif (move.damageCallback) return move.damageCallback.call(this.battle, source, target);\n\t\t\tif (move.damage === 'level') {\n\t\t\t\treturn source.level;\n\t\t\t} else if (move.damage) {\n\t\t\t\treturn move.damage;\n\t\t\t}\n\n\t\t\tlet basePower: number | false | null = move.basePower;\n\t\t\tif (move.basePowerCallback) {\n\t\t\t\tbasePower = move.basePowerCallback.call(this.battle, source, target, move);\n\t\t\t}\n\t\t\tif (!basePower) return basePower === 0 ? undefined : basePower;\n\t\t\tbasePower = this.battle.clampIntRange(basePower, 1);\n\n\t\t\tlet critMult;\n\t\t\tlet critRatio = this.battle.runEvent('ModifyCritRatio', source, target, move, move.critRatio || 0);\n\t\t\tif (this.battle.gen <= 5) {\n\t\t\t\tcritRatio = this.battle.clampIntRange(critRatio, 0, 5);\n\t\t\t\tcritMult = [0, 16, 8, 4, 3, 2];\n\t\t\t} else {\n\t\t\t\tcritRatio = this.battle.clampIntRange(critRatio, 0, 4);\n\t\t\t\tif (this.battle.gen === 6) {\n\t\t\t\t\tcritMult = [0, 16, 8, 2, 1];\n\t\t\t\t} else {\n\t\t\t\t\tcritMult = [0, 24, 8, 2, 1];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst moveHit = target.getMoveHitData(move);\n\t\t\tmoveHit.crit = move.willCrit || false;\n\t\t\tif (move.willCrit === undefined) {\n\t\t\t\tif (critRatio) {\n\t\t\t\t\tmoveHit.crit = this.battle.randomChance(1, critMult[critRatio]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (moveHit.crit) {\n\t\t\t\tmoveHit.crit = this.battle.runEvent('CriticalHit', target, null, move);\n\t\t\t}\n\n\t\t\t// happens after crit calculation\n\t\t\tbasePower = this.battle.runEvent('BasePower', source, target, move, basePower, true);\n\n\t\t\tif (!basePower) return 0;\n\t\t\tbasePower = this.battle.clampIntRange(basePower, 1);\n\t\t\t// Hacked Max Moves have 0 base power, even if you Dynamax\n\t\t\tif ((!source.volatiles['dynamax'] && move.isMax) || (move.isMax && this.dex.moves.get(move.baseMove).isMax)) {\n\t\t\t\tbasePower = 0;\n\t\t\t}\n\n\t\t\tconst level = source.level;\n\n\t\t\tconst attacker = move.overrideOffensivePokemon === 'target' ? target : source;\n\t\t\tconst defender = move.overrideDefensivePokemon === 'source' ? source : target;\n\n\t\t\tconst isPhysical = move.category === 'Physical';\n\t\t\tconst defenseStat: StatIDExceptHP = move.overrideDefensiveStat || (isPhysical ? 'def' : 'spd');\n\n\t\t\tconst statTable: { [k in StatIDExceptHP]: string } = { atk: 'Atk', def: 'Def', spa: 'SpA', spd: 'SpD', spe: 'Spe' };\n\n\t\t\tlet maxAttack = 0;\n\n\t\t\tlet defBoosts = defender.boosts[defenseStat];\n\n\t\t\tlet ignoreNegativeOffensive = !!move.ignoreNegativeOffensive;\n\t\t\tlet ignorePositiveDefensive = !!move.ignorePositiveDefensive;\n\n\t\t\tif (moveHit.crit) {\n\t\t\t\tignoreNegativeOffensive = true;\n\t\t\t\tignorePositiveDefensive = true;\n\t\t\t}\n\n\t\t\tconst ignoreDefensive = !!(move.ignoreDefensive || (ignorePositiveDefensive && defBoosts > 0));\n\t\t\tif (ignoreDefensive) {\n\t\t\t\tthis.battle.debug('Negating (sp)def boost/penalty.');\n\t\t\t\tdefBoosts = 0;\n\t\t\t}\n\n\t\t\tlet attack = 0;\n\n\t\t\tfor (const attackStat in statTable) {\n\t\t\t\tlet atkBoosts = attacker.boosts[attackStat as keyof BoostsTable];\n\t\t\t\tconst ignoreOffensive = !!(move.ignoreOffensive || (ignoreNegativeOffensive && atkBoosts < 0));\n\t\t\t\tif (ignoreOffensive) {\n\t\t\t\t\tthis.battle.debug('Negating (sp)atk boost/penalty.');\n\t\t\t\t\tatkBoosts = 0;\n\t\t\t\t}\n\t\t\t\tattack = attacker.calculateStat(attackStat as any, atkBoosts, 1, source);\n\t\t\t\tattack = this.battle.runEvent('Modify' + (statTable as any)[attackStat], source, target, move, attack);\n\t\t\t\tif (attack > maxAttack) maxAttack = attack;\n\t\t\t}\n\n\t\t\tlet defense = defender.calculateStat(defenseStat, defBoosts, 1, target);\n\n\t\t\t// Apply Stat Modifiers\n\t\t\tdefense = this.battle.runEvent('Modify' + statTable[defenseStat], target, source, move, defense);\n\n\t\t\tif (this.battle.gen <= 4 && ['explosion', 'selfdestruct'].includes(move.id) && defenseStat === 'def') {\n\t\t\t\tdefense = this.battle.clampIntRange(Math.floor(defense / 2), 1);\n\t\t\t}\n\n\t\t\tconst tr = this.battle.trunc;\n\n\t\t\t// int(int(int(2 * L / 5 + 2) * A * P / D) / 50);\n\t\t\tconst baseDamage = tr(tr(tr(tr(2 * level / 5 + 2) * basePower * maxAttack) / defense) / 50);\n\n\t\t\t// Calculate damage modifiers separately (order differs between generations)\n\t\t\treturn this.modifyDamage(baseDamage, source, target, move, suppressMessages);\n\t\t},\n\t},\n};\n"], | |
"mappings": "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", | |
"names": ["basePower"] | |
} | |