From c27ff58592f6fdb5d0c987e4f2dd4ffa1864e5da Mon Sep 17 00:00:00 2001 From: Lylian Date: Sun, 11 Aug 2024 23:30:47 +0200 Subject: [PATCH] add retaliate test as draft --- src/data/move.ts | 11 +++--- src/test/moves/retaliate.test.ts | 62 ++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 src/test/moves/retaliate.test.ts diff --git a/src/data/move.ts b/src/data/move.ts index ab272dcf8f1..b57654d37cd 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -7564,10 +7564,13 @@ export function initMoves() { .attr(CopyTypeAttr), new AttackMove(Moves.RETALIATE, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, 0, 5) .attr(MovePowerMultiplierAttr, (user, target, move) => ( - user.scene.currentBattle.turn - user.scene.currentBattle.playerFaintsHistory.at(-1).turn === 1 && - user instanceof PlayerPokemon || - user.scene.currentBattle.turn - user.scene.currentBattle.enemyFaintsHistory.at(-1).turn === 1 && - user instanceof EnemyPokemon) ? 2 : 1), + user.scene.currentBattle.playerFaintsHistory.at(-1) !== undefined && + user.scene.currentBattle.turn - user.scene.currentBattle.playerFaintsHistory.at(-1)!.turn === 1 && + user.isPlayer() || + user.scene.currentBattle.enemyFaintsHistory.at(-1) !== undefined && + user.scene.currentBattle.turn - user.scene.currentBattle.enemyFaintsHistory.at(-1)!.turn === 1 && + !user.isPlayer() + ) ? 2 : 1), new AttackMove(Moves.FINAL_GAMBIT, Type.FIGHTING, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 5) .attr(UserHpDamageAttr) .attr(SacrificialAttrOnHit), diff --git a/src/test/moves/retaliate.test.ts b/src/test/moves/retaliate.test.ts new file mode 100644 index 00000000000..600de8c91ff --- /dev/null +++ b/src/test/moves/retaliate.test.ts @@ -0,0 +1,62 @@ +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import Phaser from "phaser"; +import GameManager from "#app/test/utils/gameManager"; +import { Species } from "#enums/species"; +import { Moves } from "#enums/moves"; +import { getMovePosition } from "#app/test/utils/gameManagerUtils"; +import { allMoves } from "#app/data/move.js"; + +describe("Moves - Retaliate", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + const retaliate = allMoves[Moves.RETALIATE]; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override.battleType("single"); + game.override.enemySpecies(Species.SNORLAX); + game.override.enemyMoveset([Moves.RETALIATE, Moves.RETALIATE, Moves.RETALIATE, Moves.RETALIATE]); + game.override.enemyLevel(100); + + game.override.moveset([Moves.RETALIATE, Moves.SPLASH]); + game.override.startingHeldItems([{name: "WIDE_LENS", count: 3}]); + game.override.startingLevel(70); + game.override.disableCrits(); + }); + + it("increases power if ally died previous turn", async () => { + await game.startBattle([Species.ABRA, Species.COBALION]); + game.doAttack(getMovePosition(game.scene, 0, Moves.SPLASH)); + game.doSelectPartyPokemon(1); + + await game.toNextTurn(); + game.doAttack(getMovePosition(game.scene, 0, Moves.RETALIATE)); + //await game.phaseInterceptor.to(DamagePhase); + console.log("ALLO1"); + let snorlax = game.scene.getEnemyPokemon()!; + let cobalion = game.scene.getPlayerPokemon()!; + expect(cobalion.name).equals("Cobalion"); + expect(retaliate.calculateBattlePower(cobalion, snorlax)).equals(140); + expect(retaliate.calculateBattlePower(snorlax, cobalion)).equals(70); + console.log(game.scene.getEnemyPokemon()!.hp); + console.log(game.scene.getPlayerPokemon()!.hp); + //await game.toNextTurn(); + console.log("ALLO2"); + game.doAttack(getMovePosition(game.scene, 0, Moves.RETALIATE)); + snorlax = game.scene.getEnemyPokemon()!; + cobalion = game.scene.getPlayerPokemon()!; + expect(retaliate.calculateBattlePower(cobalion, snorlax)).equals(70); + expect(retaliate.calculateBattlePower(snorlax, cobalion)).equals(70); + }); +});