From ba0265bfb6a2b82c8c6eb839381069f57e594658 Mon Sep 17 00:00:00 2001 From: frutescens Date: Thu, 7 Nov 2024 10:56:17 -0800 Subject: [PATCH] Added test + change to valid move finding conditional. --- src/data/move.ts | 2 +- src/test/moves/sketch.test.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/data/move.ts b/src/data/move.ts index 1896182699c..2eb2f792ef9 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -6748,7 +6748,7 @@ export class SketchAttr extends MoveEffectAttr { return false; } - const targetMove = target.getLastXMoves() + const targetMove = target.getLastXMoves(target.battleSummonData.turnCount) .find(m => m.move !== Moves.NONE && m.move !== Moves.STRUGGLE && !m.virtual); if (!targetMove) { return false; diff --git a/src/test/moves/sketch.test.ts b/src/test/moves/sketch.test.ts index 2e3eb97a76c..ee76f540a9d 100644 --- a/src/test/moves/sketch.test.ts +++ b/src/test/moves/sketch.test.ts @@ -5,6 +5,8 @@ import { MoveResult } from "#app/field/pokemon"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { StatusEffect } from "#app/enums/status-effect"; +import { BattlerIndex } from "#app/battle"; describe("Moves - Sketch", () => { let phaserGame: Phaser.Game; @@ -50,4 +52,28 @@ describe("Moves - Sketch", () => { expect(playerPokemon?.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); // Can't verify if the player Pokemon's moveset was successfully changed because of overrides. }); + + it("Sketch should retrieve the most recent valid move from its target history", async () => { + game.override + .moveset([ Moves.SKETCH, Moves.GROWL ]) + .enemyStatusEffect(StatusEffect.PARALYSIS); + + await game.classicMode.startBattle([ Species.REGIELEKI ]); + const playerPokemon = game.scene.getPlayerPokemon(); + const enemyPokemon = game.scene.getEnemyPokemon(); + + game.move.select(Moves.GROWL); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.move.forceStatusActivation(false); + await game.phaseInterceptor.to("TurnEndPhase"); + expect(enemyPokemon?.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + + await game.toNextTurn(); + game.move.select(Moves.SKETCH); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.move.forceStatusActivation(true); + await game.phaseInterceptor.to("TurnEndPhase"); + expect(playerPokemon?.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + // Can't verify if the player Pokemon's moveset was successfully changed because of overrides. + }); });