From 7c794d24f6c342e530d9240988fadf42b7138078 Mon Sep 17 00:00:00 2001 From: Dean-Sussman Date: Mon, 24 Nov 2025 17:34:13 -0500 Subject: [PATCH] Implement Tar Shot modifier in damage calc. --- src/interfaces/calc/CalcdexPokemon.ts | 7 +++++++ src/utils/calc/calcMoveBasePower.ts | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/src/interfaces/calc/CalcdexPokemon.ts b/src/interfaces/calc/CalcdexPokemon.ts index 57b1c4b5..217a13d1 100644 --- a/src/interfaces/calc/CalcdexPokemon.ts +++ b/src/interfaces/calc/CalcdexPokemon.ts @@ -859,6 +859,13 @@ export interface CalcdexPokemon extends CalcdexLeanPokemon { */ criticalHit?: boolean; + /** + * Volatile status conditions Pokemon has. + * + * * Currently only useful for Tar Shot damage calculation, but could be useful for other moves like it in the future, too. + */ + volatileStatus?: Showdown.PokemonVolatile; + /** * User-modified non-volatile status condition. * diff --git a/src/utils/calc/calcMoveBasePower.ts b/src/utils/calc/calcMoveBasePower.ts index 0c784f3c..6a08d68e 100644 --- a/src/utils/calc/calcMoveBasePower.ts +++ b/src/utils/calc/calcMoveBasePower.ts @@ -242,6 +242,10 @@ export const calcMoveBasePower = ( basePowerMods.push(2); } + if ('tarshot' in opponentPokemon?.volatiles && moveType === 'Fire') { + basePowerMods.push(2); + } + if (basePowerMods.length) { basePower = basePowerMods.reduce((bp, mod) => Math.floor(bp * clamp(0, mod)), basePower); }