Added tests for perish body when one mon already has the perish song tag, both ways

This commit is contained in:
Wlowscha 2025-02-01 14:38:55 +01:00
parent 63d91cd84d
commit ded3582f46
No known key found for this signature in database
GPG Key ID: 3C8F1AD330565D04

View File

@ -59,4 +59,58 @@ describe("Abilities - Perish Song", () => {
expect(magikarp?.summonData.tags[0].turnCount).toBe(3); expect(magikarp?.summonData.tags[0].turnCount).toBe(3);
}); });
it("should not activate if attacker already has perish song", async () => {
game.override.enemyMoveset([ Moves.PERISH_SONG, Moves.AQUA_JET, Moves.SPLASH ]);
await game.classicMode.startBattle([ Species.FEEBAS, Species.CURSOLA ]);
const feebas = game.scene.getPlayerPokemon();
const magikarp = game.scene.getEnemyPokemon();
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.PERISH_SONG);
await game.toNextTurn();
expect(feebas?.summonData.tags[0].turnCount).toBe(3);
expect(magikarp?.summonData.tags[0].turnCount).toBe(3);
game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const cursola = game.scene.getPlayerPokemon();
expect(cursola?.summonData.tags.length).toBe(0);
expect(magikarp?.summonData.tags[0].turnCount).toBe(2);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.AQUA_JET);
await game.toNextTurn();
expect(cursola?.summonData.tags.length).toBe(0);
expect(magikarp?.summonData.tags[0].turnCount).toBe(1);
});
it("should activate if cursola already has perish song, but not reset its counter", async () => {
game.override.enemyMoveset([ Moves.PERISH_SONG, Moves.AQUA_JET, Moves.SPLASH ]);
game.override.moveset([ Moves.WHIRLWIND, Moves.SPLASH ]);
game.override.startingWave(5);
await game.classicMode.startBattle([ Species.CURSOLA ]);
const cursola = game.scene.getPlayerPokemon();
game.move.select(Moves.WHIRLWIND);
await game.forceEnemyMove(Moves.PERISH_SONG);
await game.toNextTurn();
const magikarp = game.scene.getEnemyPokemon();
expect(cursola?.summonData.tags[0].turnCount).toBe(3);
expect(magikarp?.summonData.tags.length).toBe(0);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.AQUA_JET);
await game.toNextTurn();
expect(cursola?.summonData.tags[0].turnCount).toBe(2);
expect(magikarp?.summonData.tags.length).toBe(1);
expect(magikarp?.summonData.tags[0].turnCount).toBe(3);
});
}); });