From 2dc5b8a4702469da6687fdeaa0f60bc1fdeab74d Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sun, 2 Feb 2025 14:19:40 -0600 Subject: [PATCH] Add final set of tests for Magic Coat / Bounce --- src/test/abilities/magic_bounce.test.ts | 15 +++++++++++++-- src/test/moves/magic_coat.test.ts | 23 ----------------------- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/test/abilities/magic_bounce.test.ts b/src/test/abilities/magic_bounce.test.ts index 0e7dafa784d..502b4369cd8 100644 --- a/src/test/abilities/magic_bounce.test.ts +++ b/src/test/abilities/magic_bounce.test.ts @@ -139,6 +139,16 @@ describe("Abilities - Magic Bounce", () => { expect(game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.ENEMY)).toBeUndefined(); }); + it("should bounce spikes even when the target is protected", async () => { + game.override.moveset([ Moves.SPIKES ]); + game.override.enemyMoveset([ Moves.PROTECT ]); + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + game.move.select(Moves.SPIKES); + await game.phaseInterceptor.to("BerryPhase"); + expect(game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.PLAYER)!["layers"]).toBe(1); + }); + it("should not bounce back curse", async() => { game.override.starterSpecies(Species.GASTLY); await game.classicMode.startBattle([ Species.GASTLY ]); @@ -286,12 +296,13 @@ describe("Abilities - Magic Bounce", () => { expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); }); - it("should follow speed order, respecting trick room, when reflecting field effect moves", async () => { + it("should always apply the leftmost available target's magic bounce when bouncing moves like sticky webs in doubles", async () => { game.override.battleType("double"); game.override.moveset([ Moves.STICKY_WEB, Moves.SPLASH, Moves.TRICK_ROOM ]); await game.classicMode.startBattle([ Species.MAGIKARP, Species.MAGIKARP ]); const [ enemy_1, enemy_2 ] = game.scene.getEnemyField(); + // set speed just incase logic erroneously checks for speed order enemy_1.setStat(Stat.SPD, enemy_2.getStat(Stat.SPD) + 1); // turn 1 @@ -306,7 +317,7 @@ describe("Abilities - Magic Bounce", () => { game.move.select(Moves.STICKY_WEB, 0); game.move.select(Moves.TRICK_ROOM, 1); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.arena.getTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER)?.getSourcePokemon()?.getBattlerIndex()).toBe(BattlerIndex.ENEMY_2); + expect(game.scene.arena.getTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER)?.getSourcePokemon()?.getBattlerIndex()).toBe(BattlerIndex.ENEMY); }); }); diff --git a/src/test/moves/magic_coat.test.ts b/src/test/moves/magic_coat.test.ts index fb11ab533a4..7371c89d4ac 100644 --- a/src/test/moves/magic_coat.test.ts +++ b/src/test/moves/magic_coat.test.ts @@ -283,27 +283,4 @@ describe("Moves - Magic Coat", () => { await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); }); - - it("should follow speed order, respecting trick room, when reflecting field effect moves", async () => { - game.override.battleType("double"); - game.override.moveset([ Moves.STICKY_WEB, Moves.SPLASH, Moves.TRICK_ROOM ]); - - await game.classicMode.startBattle([ Species.MAGIKARP, Species.MAGIKARP ]); - const [ enemy_1, enemy_2 ] = game.scene.getEnemyField(); - enemy_1.setStat(Stat.SPD, enemy_2.getStat(Stat.SPD) + 1); - - // turn 1 - game.move.select(Moves.STICKY_WEB, 0); - game.move.select(Moves.TRICK_ROOM, 1); - await game.phaseInterceptor.to("TurnEndPhase"); - - expect(game.scene.arena.getTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER)?.getSourcePokemon()?.getBattlerIndex()).toBe(BattlerIndex.ENEMY); - game.scene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER, true); - - // turn 2 - game.move.select(Moves.STICKY_WEB, 0); - game.move.select(Moves.TRICK_ROOM, 1); - await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.arena.getTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER)?.getSourcePokemon()?.getBattlerIndex()).toBe(BattlerIndex.ENEMY_2); - }); });