From 6d099cde96c3505036710895f6e38c6b58046dfa Mon Sep 17 00:00:00 2001 From: jatinkohli Date: Mon, 20 May 2024 22:43:59 -0700 Subject: [PATCH] Fix torment resetting between battles --- src/data/move.ts | 5 +++-- src/field/pokemon.ts | 3 ++- src/phases.ts | 5 ++++- src/system/pokemon-data.ts | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index cc66d16c876..309256e3012 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -3299,9 +3299,10 @@ export class TormentAttr extends MoveEffectAttr { return ret; } - // copied from disable + // modified from disable, score of -5 is target is not already tormented getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { - return -5; + const isTormented = target.summonData.tormented && (target.findTag(t => t instanceof TormentTag) !== undefined); + return isTormented ? 0 : -5; } } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 620a10a525e..4690cffade0 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -3388,6 +3388,7 @@ export class PokemonSummonData { public disabledMove: Moves = Moves.NONE; public disabledTurns: integer = 0; public tormented = false; + public prevMove: Moves = undefined; // for torment, carry over between battles while summoned public justTaunted: boolean = false; public taunted: boolean = false; public tauntedTurns: integer = 0; @@ -3477,7 +3478,7 @@ export class PokemonMove { const isMoveDisabledTaunt = this.moveId && pokemon.summonData.taunted && this.getMove().category === MoveCategory.STATUS; // for torment: check valid move, pokemon is tormented, pokemon has moved this summon, and selected move is the same as previous move - const isMoveDisabledTorment = this.moveId && pokemon.summonData.tormented && pokemon.getLastXMoves(1)[0] && pokemon.getLastXMoves(1)[0].move === this.moveId; + const isMoveDisabledTorment = this.moveId && pokemon.summonData.tormented && pokemon.summonData.prevMove === this.moveId; if (isMoveDisabled || isMoveDisabledTaunt || isMoveDisabledTorment) return false; diff --git a/src/phases.ts b/src/phases.ts index ca7bac3ed90..8c289df0bb0 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -1740,7 +1740,7 @@ export class CommandPhase extends FieldPhase { errorMessage = 'battle:moveDisabled'; else if (move.getName().endsWith(' (N)')) errorMessage = 'battle:moveNotImplemented'; - else if (playerPokemon.summonData.tormented && playerPokemon.getLastXMoves(1)[0] && playerPokemon.getLastXMoves(1)[0].move === move.moveId) { + else if (playerPokemon.summonData.tormented && playerPokemon.summonData.prevMove === move.moveId) { errorMessage = getPokemonMessage(playerPokemon, ' can\'t use the same move twice in a row due to the torment!'); canTranslate = false; } else if (playerPokemon.summonData.taunted && move.getMove().category === MoveCategory.STATUS) { @@ -2110,6 +2110,9 @@ export class TurnEndPhase extends FieldPhase { const handlePokemon = (pokemon: Pokemon) => { pokemon.lapseTags(BattlerTagLapseType.TURN_END); + // For torment, keep track of last used move. This remains between battles while the pokemon is still on the field. + pokemon.summonData.prevMove = pokemon.getLastXMoves(1)[0].move; + if (pokemon.summonData.justTaunted) { pokemon.summonData.justTaunted = false; } diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 67339d0020e..bdd0e89bc75 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -117,6 +117,7 @@ export default class PokemonData { this.summonData.disabledTurns = source.summonData.disabledTurns; this.summonData.abilitySuppressed = source.summonData.abilitySuppressed; this.summonData.tormented = source.summonData.tormented; + this.summonData.prevMove = source.summonData.prevMove; this.summonData.justTaunted = source.summonData.justTaunted; this.summonData.taunted = source.summonData.taunted; this.summonData.tauntedTurns = source.summonData.tauntedTurns;