Removed game.forceEnemyMove

This commit is contained in:
Bertie690 2025-05-30 18:22:36 -04:00
parent 89bbe03ebd
commit 3ae66b64ff
53 changed files with 271 additions and 304 deletions

View File

@ -40,7 +40,7 @@ describe("Moves - Aroma Veil", () => {
game.move.select(Moves.GROWL);
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.HEAL_BLOCK);
await game.move.selectEnemyMove(Moves.HEAL_BLOCK);
await game.toNextTurn();
party.forEach(p => {
expect(p.getTag(BattlerTagType.HEAL_BLOCK)).toBeUndefined();
@ -54,8 +54,8 @@ describe("Moves - Aroma Veil", () => {
game.move.select(Moves.GROWL);
game.move.select(Moves.GROWL, 1);
await game.forceEnemyMove(Moves.IMPRISON, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.IMPRISON, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeDefined();
party.forEach(p => {

View File

@ -59,8 +59,8 @@ describe("Abilities - Commander", () => {
expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy();
// Force both enemies to target the Tatsugiri
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.phaseInterceptor.to("BerryPhase", false);
game.scene.getEnemyField().forEach(enemy => expect(enemy.getLastXMoves(1)[0].result).toBe(MoveResult.MISS));
@ -100,8 +100,8 @@ describe("Abilities - Commander", () => {
expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy();
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]);
@ -183,8 +183,8 @@ describe("Abilities - Commander", () => {
expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy();
await game.forceEnemyMove(Moves.WHIRLWIND, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.WHIRLWIND, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
// Test may time out here if Whirlwind forced out a Pokemon
await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -76,7 +76,7 @@ describe("Abilities - Cud Chew", () => {
farigiraf.hp = farigiraf.getMaxHp() / 2 - 1;
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase");
// doesn't trigger since cud chew hasn't eaten berry yet
@ -86,7 +86,7 @@ describe("Abilities - Cud Chew", () => {
// get heal pulsed back to full before the cud chew proc
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.HEAL_PULSE);
await game.move.selectEnemyMove(Moves.HEAL_PULSE);
await game.phaseInterceptor.to("TurnEndPhase");
// globalScene.queueAbilityDisplay should be called twice:

View File

@ -77,8 +77,8 @@ describe("Abilities - Dancer", () => {
game.move.select(Moves.REVELATION_DANCE, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2);
game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.MIRROR_MOVE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.MIRROR_MOVE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to("MovePhase"); // Oricorio rev dance
await game.phaseInterceptor.to("MovePhase"); // Feebas fiery dance

View File

@ -50,8 +50,8 @@ describe("Abilities - Desolate Land", () => {
game.move.select(Moves.SPLASH, 0, 2);
game.move.select(Moves.SPLASH, 1, 2);
await game.forceEnemyMove(Moves.ROAR, 0);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.ROAR, 0);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("TurnEndPhase");
@ -66,8 +66,8 @@ describe("Abilities - Desolate Land", () => {
game.move.select(Moves.SPLASH, 0, 2);
game.move.select(Moves.SPLASH, 1, 2);
await game.forceEnemyMove(Moves.ROAR, 1);
await game.forceEnemyMove(Moves.SPLASH, 0);
await game.move.selectEnemyMove(Moves.ROAR, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 0);
await game.phaseInterceptor.to("TurnEndPhase");
@ -103,8 +103,8 @@ describe("Abilities - Desolate Land", () => {
game.move.select(Moves.SPLASH, 0, 2);
game.move.select(Moves.SPLASH, 1, 2);
await game.forceEnemyMove(Moves.MEMENTO, 0);
await game.forceEnemyMove(Moves.MEMENTO, 1);
await game.move.selectEnemyMove(Moves.MEMENTO, 0);
await game.move.selectEnemyMove(Moves.MEMENTO, 1);
await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -67,8 +67,8 @@ describe("Abilities - Flower Gift", () => {
// turn 1
game.move.select(Moves.SUNNY_DAY, 0);
game.move.select(ally_move, 1, ally_target);
await game.forceEnemyMove(enemy_move, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(enemy_move, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
// Ensure sunny day is used last.
await game.setTurnOrder([attacker_index, target_index, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to(TurnEndPhase);
@ -79,8 +79,8 @@ describe("Abilities - Flower Gift", () => {
// turn 2. Make target use recover to reset hp calculation.
game.move.select(Moves.SPLASH, 0, target_index);
game.move.select(ally_move, 1, ally_target);
await game.forceEnemyMove(enemy_move, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(enemy_move, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, target_index, attacker_index]);
await game.phaseInterceptor.to(TurnEndPhase);
const damageWithGift = initialHp - target.hp;

View File

@ -49,7 +49,7 @@ describe("Abilities - Flower Veil", () => {
await game.classicMode.startBattle([Species.BULBASAUR]);
const user = game.scene.getPlayerPokemon()!;
game.move.select(Moves.REST);
await game.forceEnemyMove(Moves.TACKLE);
await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn();
expect(user.status?.effect).toBe(StatusEffect.SLEEP);
@ -57,7 +57,7 @@ describe("Abilities - Flower Veil", () => {
// remove sleep status so we can get burn from the orb
user.resetStatus();
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(user.status?.effect).toBe(StatusEffect.BURN);
});
@ -71,8 +71,8 @@ describe("Abilities - Flower Veil", () => {
vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]);
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.YAWN, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.YAWN, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.YAWN, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.YAWN, BattlerIndex.PLAYER_2);
await game.phaseInterceptor.to("BerryPhase");
const user = game.scene.getPlayerPokemon()!;
@ -86,7 +86,7 @@ describe("Abilities - Flower Veil", () => {
await game.classicMode.startBattle([Species.BULBASAUR]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.THUNDER_WAVE);
await game.move.selectEnemyMove(Moves.THUNDER_WAVE);
await game.toNextTurn();
expect(game.scene.getPlayerPokemon()!.status).toBeUndefined();
vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockClear();
@ -101,8 +101,8 @@ describe("Abilities - Flower Veil", () => {
vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]);
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER_2);
await game.phaseInterceptor.to("BerryPhase");
expect(user.status?.effect).toBe(StatusEffect.PARALYSIS);
expect(ally.status?.effect).toBe(StatusEffect.PARALYSIS);

View File

@ -43,8 +43,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
// Get the last return value from `getAttackDamage`
@ -60,8 +60,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
// Get the last return value from `getAttackDamage`
@ -83,8 +83,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage;
@ -93,8 +93,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage;
@ -109,8 +109,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage;
@ -120,8 +120,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage;

View File

@ -74,8 +74,8 @@ describe("Abilities - Good As Gold", () => {
game.move.select(Moves.SWORDS_DANCE, 0);
game.move.select(Moves.SAFEGUARD, 1);
await game.forceEnemyMove(Moves.STEALTH_ROCK);
await game.forceEnemyMove(Moves.HAZE);
await game.move.selectEnemyMove(Moves.STEALTH_ROCK);
await game.move.selectEnemyMove(Moves.HAZE);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("BerryPhase");
expect(good_as_gold.getAbility().id).toBe(Abilities.GOOD_AS_GOLD);

View File

@ -39,7 +39,7 @@ describe("Abilities - Gorilla Tactics", () => {
const initialAtkStat = darmanitan.getStat(Stat.ATK);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase");
@ -57,13 +57,13 @@ describe("Abilities - Gorilla Tactics", () => {
// First turn, lock move to Growl
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
// Second turn, Growl is interrupted by Disable
await game.toNextTurn();
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.DISABLE);
await game.move.selectEnemyMove(Moves.DISABLE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -241,13 +241,13 @@ describe("Abilities - Gulp Missile", () => {
await game.classicMode.startBattle([Species.CRAMORANT]);
game.move.select(Moves.SURF);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(game.scene.getPlayerPokemon()!.formIndex).toBe(GULPING_FORM);
game.move.select(Moves.SUBSTITUTE);
await game.forceEnemyMove(Moves.POWER_TRIP);
await game.move.selectEnemyMove(Moves.POWER_TRIP);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.toNextTurn();

View File

@ -61,7 +61,7 @@ describe("Abilities - Harvest", () => {
await game.classicMode.startBattle([Species.FEEBAS]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.NUZZLE);
await game.move.selectEnemyMove(Moves.NUZZLE);
await game.phaseInterceptor.to("BerryPhase");
expect(getPlayerBerries()).toHaveLength(0);
expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toHaveLength(1);
@ -87,7 +87,7 @@ describe("Abilities - Harvest", () => {
// Chug a few berries without harvest (should get tracked)
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.NUZZLE);
await game.move.selectEnemyMove(Moves.NUZZLE);
await game.toNextTurn();
expect(milotic.battleData.berriesEaten).toEqual(expect.arrayContaining([BerryType.ENIGMA, BerryType.LUM]));
@ -98,7 +98,7 @@ describe("Abilities - Harvest", () => {
vi.spyOn(PostTurnRestoreBerryAbAttr.prototype, "canApplyPostTurn").mockReturnValueOnce(false);
game.override.ability(Abilities.HARVEST);
game.move.select(Moves.GASTRO_ACID);
await game.forceEnemyMove(Moves.NUZZLE);
await game.move.selectEnemyMove(Moves.NUZZLE);
await game.toNextTurn();
@ -109,7 +109,7 @@ describe("Abilities - Harvest", () => {
// proc a high roll and we _should_ get a berry back!
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(milotic.battleData.berriesEaten).toHaveLength(3);
@ -126,7 +126,7 @@ describe("Abilities - Harvest", () => {
regieleki.hp = 1;
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.doKillOpponents();
await game.phaseInterceptor.to("TurnEndPhase");
@ -154,7 +154,7 @@ describe("Abilities - Harvest", () => {
regieleki.hp = regieleki.getMaxHp() / 4 + 1;
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SUPER_FANG);
await game.move.selectEnemyMove(Moves.SUPER_FANG);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn();
@ -165,7 +165,7 @@ describe("Abilities - Harvest", () => {
// heal up so harvest doesn't proc and kill enemy
game.move.select(Moves.EARTHQUAKE);
await game.forceEnemyMove(Moves.HEAL_PULSE);
await game.move.selectEnemyMove(Moves.HEAL_PULSE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextWave();
@ -191,7 +191,7 @@ describe("Abilities - Harvest", () => {
feebas.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF];
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("BerryPhase");
// Force RNG roll to hit the first berry we find that matches.
@ -219,7 +219,7 @@ describe("Abilities - Harvest", () => {
player.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF];
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase");
expectBerriesContaining(...initBerries);
@ -231,7 +231,7 @@ describe("Abilities - Harvest", () => {
await game.classicMode.startBattle([Species.FEEBAS]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.INCINERATE);
await game.move.selectEnemyMove(Moves.INCINERATE);
await game.phaseInterceptor.to("TurnEndPhase");
expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]);
@ -242,7 +242,7 @@ describe("Abilities - Harvest", () => {
await game.classicMode.startBattle([Species.FEEBAS]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.KNOCK_OFF);
await game.move.selectEnemyMove(Moves.KNOCK_OFF);
await game.phaseInterceptor.to("TurnEndPhase");
expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]);
@ -308,7 +308,7 @@ describe("Abilities - Harvest", () => {
// steal a sitrus and immediately consume it
game.move.select(Moves.FALSE_SWIPE);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("BerryPhase");
expect(player.battleData.berriesEaten).toEqual([BerryType.SITRUS]);

View File

@ -52,7 +52,7 @@ describe("Abilities - Magic Bounce", () => {
game.override.enemyMoveset([Moves.FLY]);
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.FLY);
await game.move.selectEnemyMove(Moves.FLY);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("BerryPhase");
@ -183,7 +183,7 @@ describe("Abilities - Magic Bounce", () => {
// turn 1
game.move.select(Moves.ENCORE);
await game.forceEnemyMove(Moves.TACKLE);
await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn();
expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE);
@ -209,7 +209,7 @@ describe("Abilities - Magic Bounce", () => {
// turn 1
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.TACKLE);
await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn();
@ -218,7 +218,7 @@ describe("Abilities - Magic Bounce", () => {
// turn 2
game.move.select(Moves.ENCORE);
await game.forceEnemyMove(Moves.TACKLE);
await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to("BerryPhase");
expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE);
@ -254,7 +254,7 @@ describe("Abilities - Magic Bounce", () => {
vi.spyOn(stomping_tantrum, "calculateBattlePower");
game.move.select(Moves.SPORE);
await game.forceEnemyMove(Moves.CHARM);
await game.move.selectEnemyMove(Moves.CHARM);
await game.phaseInterceptor.to("TurnEndPhase");
expect(enemy.getLastXMoves(1)[0].result).toBe("success");
@ -346,7 +346,7 @@ describe("Abilities - Magic Bounce", () => {
game.override.moveset([Moves.TOXIC, Moves.CHARM]);
await game.classicMode.startBattle([Species.BULBASAUR]);
game.move.select(Moves.TOXIC);
await game.forceEnemyMove(Moves.FLY);
await game.move.selectEnemyMove(Moves.FLY);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC);

View File

@ -55,7 +55,7 @@ describe("Abilities - Mimicry", () => {
const playerPokemon = game.scene.getPlayerPokemon();
game.move.select(Moves.TRANSFORM);
await game.forceEnemyMove(Moves.PSYCHIC_TERRAIN);
await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN);
await game.toNextTurn();
expect(playerPokemon?.getTypes().includes(PokemonType.PSYCHIC)).toBe(true);
@ -64,7 +64,7 @@ describe("Abilities - Mimicry", () => {
}
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(playerPokemon?.getTypes().includes(PokemonType.ELECTRIC)).toBe(true);
});
@ -75,13 +75,13 @@ describe("Abilities - Mimicry", () => {
const playerPokemon = game.scene.getPlayerPokemon();
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.FORESTS_CURSE);
await game.move.selectEnemyMove(Moves.FORESTS_CURSE);
await game.toNextTurn();
expect(playerPokemon?.summonData.addedType).toBe(PokemonType.GRASS);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.GRASSY_TERRAIN);
await game.move.selectEnemyMove(Moves.GRASSY_TERRAIN);
await game.phaseInterceptor.to("TurnEndPhase");
expect(playerPokemon?.summonData.addedType).toBeNull();

View File

@ -46,7 +46,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate, enemy should lose -1 atk
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1);
@ -63,7 +63,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate, enemy should lose -1 atk
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1);
@ -82,8 +82,8 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate, enemy should lose -2 atk each
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.toNextTurn();
expect(enemy1.getStatStage(Stat.ATK)).toBe(-2);
@ -104,8 +104,8 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate, enemy should lose -1 atk
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.toNextTurn();
expect(enemy1.getStatStage(Stat.ATK)).toBe(0);
@ -124,7 +124,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-1);
@ -144,8 +144,8 @@ describe("Ability - Mirror Armor", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER_2);
await game.toNextTurn();
expect(player1.getStatStage(Stat.ATK)).toBe(0);
@ -168,7 +168,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense
game.move.select(Moves.TICKLE);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.DEF)).toBe(-1);
@ -187,7 +187,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0);
@ -206,7 +206,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats
game.move.select(Moves.TICKLE);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0);
@ -224,7 +224,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy uses octolock, player loses stats at end of turn
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.OCTOLOCK, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.OCTOLOCK, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0);
@ -242,7 +242,7 @@ describe("Ability - Mirror Armor", () => {
// Player uses octolock, enemy loses stats at end of turn
game.move.select(Moves.OCTOLOCK);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.DEF)).toBe(0);
@ -261,7 +261,7 @@ describe("Ability - Mirror Armor", () => {
const userPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1);
@ -276,11 +276,11 @@ describe("Ability - Mirror Armor", () => {
const userPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER);
await game.toNextTurn();
game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.SPD)).toBe(0);
@ -297,14 +297,14 @@ describe("Ability - Mirror Armor", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.toNextTurn();
game.doSwitchPokemon(2);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.toNextTurn();
expect(enemy1.getStatStage(Stat.SPD)).toBe(-1);

View File

@ -110,16 +110,16 @@ describe("Abilities - Neutralizing Gas", () => {
await game.classicMode.startBattle([Species.ACCELGOR, Species.ACCELGOR]);
game.move.select(Moves.SPLASH, 0);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); // Now one neut gas user is left
game.move.select(Moves.SPLASH, 0);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeUndefined(); // No neut gas users are left

View File

@ -64,14 +64,14 @@ describe("Abilities - Perish Song", () => {
const magikarp = game.scene.getEnemyPokemon();
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.PERISH_SONG);
await game.move.selectEnemyMove(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.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const cursola = game.scene.getPlayerPokemon();
@ -79,7 +79,7 @@ describe("Abilities - Perish Song", () => {
expect(magikarp?.summonData.tags[0].turnCount).toBe(2);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.AQUA_JET);
await game.move.selectEnemyMove(Moves.AQUA_JET);
await game.toNextTurn();
expect(cursola?.summonData.tags.length).toBe(0);
@ -94,7 +94,7 @@ describe("Abilities - Perish Song", () => {
const cursola = game.scene.getPlayerPokemon();
game.move.select(Moves.WHIRLWIND);
await game.forceEnemyMove(Moves.PERISH_SONG);
await game.move.selectEnemyMove(Moves.PERISH_SONG);
await game.toNextTurn();
const magikarp = game.scene.getEnemyPokemon();
@ -102,7 +102,7 @@ describe("Abilities - Perish Song", () => {
expect(magikarp?.summonData.tags.length).toBe(0);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.AQUA_JET);
await game.move.selectEnemyMove(Moves.AQUA_JET);
await game.toNextTurn();
expect(cursola?.summonData.tags[0].turnCount).toBe(2);

View File

@ -76,7 +76,7 @@ describe("Abilities - SHIELDS DOWN", () => {
await game.classicMode.startBattle([Species.MINIOR]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPORE);
await game.move.selectEnemyMove(Moves.SPORE);
await game.phaseInterceptor.to(TurnEndPhase);
expect(game.scene.getPlayerPokemon()!.status).toBe(undefined);
@ -115,12 +115,12 @@ describe("Abilities - SHIELDS DOWN", () => {
// turn 1
game.move.select(Moves.GRAVITY);
await game.forceEnemyMove(Moves.TOXIC_SPIKES);
await game.move.selectEnemyMove(Moves.TOXIC_SPIKES);
await game.toNextTurn();
// turn 2
game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.MINIOR);
@ -134,7 +134,7 @@ describe("Abilities - SHIELDS DOWN", () => {
await game.classicMode.startBattle([Species.MAGIKARP, Species.MINIOR]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.YAWN);
await game.move.selectEnemyMove(Moves.YAWN);
await game.phaseInterceptor.to(TurnEndPhase);
expect(game.scene.getPlayerPokemon()!.findTag(tag => tag.tagType === BattlerTagType.DROWSY)).toBe(undefined);
@ -146,7 +146,7 @@ describe("Abilities - SHIELDS DOWN", () => {
await game.classicMode.startBattle([Species.MINIOR]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.CONFUSE_RAY);
await game.move.selectEnemyMove(Moves.CONFUSE_RAY);
await game.phaseInterceptor.to(TurnEndPhase);
@ -162,7 +162,7 @@ describe("Abilities - SHIELDS DOWN", () => {
await game.classicMode.startBattle([Species.MINIOR]);
game.move.select(Moves.SPORE);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase);
expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.SLEEP);

View File

@ -42,7 +42,7 @@ describe("Abilities - Stakeout", () => {
const [enemy1] = game.scene.getEnemyParty();
game.move.select(Moves.SURF);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const damage1 = enemy1.getInverseHp();
enemy1.hp = enemy1.getMaxHp();
@ -65,17 +65,17 @@ describe("Abilities - Stakeout", () => {
const [enemy1] = game.scene.getEnemyParty();
game.move.select(Moves.SURF);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const damage1 = enemy1.getInverseHp();
enemy1.hp = enemy1.getMaxHp();
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.FLIP_TURN);
await game.move.selectEnemyMove(Moves.FLIP_TURN);
await game.toNextTurn();
game.move.select(Moves.SURF);
await game.forceEnemyMove(Moves.FLIP_TURN);
await game.move.selectEnemyMove(Moves.FLIP_TURN);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn();

View File

@ -244,8 +244,8 @@ describe("Abilities - Unburden", () => {
// Turn 1: Treecko gets hit by False Swipe and eats Sitrus Berry, activating Unburden
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.FALSE_SWIPE, 0);
await game.forceEnemyMove(Moves.FALSE_SWIPE, 0);
await game.move.selectEnemyMove(Moves.FALSE_SWIPE, 0);
await game.move.selectEnemyMove(Moves.FALSE_SWIPE, 0);
await game.phaseInterceptor.to("TurnEndPhase");
expect(getHeldItemCount(treecko)).toBeLessThan(playerHeldItems);
@ -302,7 +302,7 @@ describe("Abilities - Unburden", () => {
// Turn 1: Get hit by False Swipe and eat Sitrus Berry, activating Unburden
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.FALSE_SWIPE);
await game.move.selectEnemyMove(Moves.FALSE_SWIPE);
await game.toNextTurn();
expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems);
@ -310,7 +310,7 @@ describe("Abilities - Unburden", () => {
// Turn 2: Get hit by Worry Seed, deactivating Unburden
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WORRY_SEED);
await game.move.selectEnemyMove(Moves.WORRY_SEED);
await game.toNextTurn();
expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems);
@ -343,13 +343,13 @@ describe("Abilities - Unburden", () => {
const initialSpeed = treecko.getStat(Stat.SPD);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.THIEF);
await game.move.selectEnemyMove(Moves.THIEF);
game.doSelectPartyPokemon(1);
await game.toNextTurn();
game.doRevivePokemon(1);
game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(game.scene.getPlayerPokemon()!).toBe(treecko);
@ -372,8 +372,8 @@ describe("Abilities - Unburden", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.REVIVAL_BLESSING, 1);
await game.forceEnemyMove(Moves.THIEF, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.THIEF, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]);
game.doSelectPartyPokemon(0, "RevivalBlessingPhase");
await game.toNextTurn();

View File

@ -544,8 +544,8 @@ describe("Abilities - Wimp Out", () => {
// turn 1
game.move.select(Moves.DRAGON_ENERGY, 0);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.ENDURE);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.ENDURE);
await game.phaseInterceptor.to("SelectModifierPhase");
expect(game.scene.currentBattle.waveIndex).toBe(wave + 1);

View File

@ -77,7 +77,7 @@ describe("Moves - Chilly Reception", () => {
await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.TACKLE);
await game.move.selectEnemyMove(Moves.TACKLE);
await game.phaseInterceptor.to("BerryPhase", false);
expect(game.scene.arena.weather?.weatherType).toBe(undefined);

View File

@ -39,7 +39,7 @@ describe("Moves - Defog", () => {
const enemyPokemon = game.scene.getEnemyField();
game.move.select(Moves.SAFEGUARD);
await game.forceEnemyMove(Moves.DEFOG);
await game.move.selectEnemyMove(Moves.DEFOG);
await game.phaseInterceptor.to("BerryPhase");
expect(playerPokemon[0].isSafeguarded(enemyPokemon[0])).toBe(false);
@ -53,12 +53,12 @@ describe("Moves - Defog", () => {
const playerPokemon = game.scene.getPlayerField();
game.move.select(Moves.MIST);
await game.forceEnemyMove(Moves.DEFOG);
await game.move.selectEnemyMove(Moves.DEFOG);
await game.toNextTurn();
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.GROWL);
await game.move.selectEnemyMove(Moves.GROWL);
await game.phaseInterceptor.to("BerryPhase");

View File

@ -139,12 +139,12 @@ describe("Moves - Disable", () => {
const enemyMon = game.scene.getEnemyPokemon()!;
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn();
game.move.select(Moves.DISABLE);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn();

View File

@ -206,7 +206,7 @@ describe("Moves - Dragon Tail", () => {
return min;
});
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.DRAGON_TAIL);
await game.move.selectEnemyMove(Moves.DRAGON_TAIL);
await game.toNextTurn();
expect(bulbasaur.isOnField()).toBe(false);
@ -260,7 +260,7 @@ describe("Moves - Dragon Tail", () => {
eevee.status = new Status(StatusEffect.FAINT);
expect(eevee.isFainted()).toBe(true);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
// Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted
@ -268,7 +268,7 @@ describe("Moves - Dragon Tail", () => {
return min;
});
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.DRAGON_TAIL);
await game.move.selectEnemyMove(Moves.DRAGON_TAIL);
await game.toNextTurn();
expect(lapras.isOnField()).toBe(false);
@ -289,7 +289,7 @@ describe("Moves - Dragon Tail", () => {
eevee.status = new Status(StatusEffect.FAINT);
expect(eevee.isFainted()).toBe(true);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
// Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted
@ -297,7 +297,7 @@ describe("Moves - Dragon Tail", () => {
return min;
});
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.DRAGON_TAIL);
await game.move.selectEnemyMove(Moves.DRAGON_TAIL);
await game.toNextTurn();
expect(lapras.isOnField()).toBe(true);

View File

@ -42,7 +42,7 @@ describe("Moves - Encore", () => {
const enemyPokemon = game.scene.getEnemyPokemon()!;
game.move.select(Moves.ENCORE);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(enemyPokemon.getTag(BattlerTagType.ENCORE)).toBeDefined();

View File

@ -40,8 +40,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.FAIRY_LOCK);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined();
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined();
@ -50,8 +50,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase");
expect(playerPokemon[0].isTrapped()).toEqual(true);
expect(playerPokemon[1].isTrapped()).toEqual(true);
@ -70,8 +70,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.FAIRY_LOCK);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined();
@ -84,8 +84,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.SPLASH);
game.doSwitchPokemon(2);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase");
await game.toNextTurn();
@ -98,8 +98,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.FAIRY_LOCK);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined();
@ -108,9 +108,9 @@ describe("Moves - Fairy Lock", () => {
await game.toNextTurn();
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WHIRLWIND, 0);
await game.move.selectEnemyMove(Moves.WHIRLWIND, 0);
game.doSelectPartyPokemon(2);
await game.forceEnemyMove(Moves.WHIRLWIND, 1);
await game.move.selectEnemyMove(Moves.WHIRLWIND, 1);
game.doSelectPartyPokemon(2);
await game.phaseInterceptor.to("BerryPhase");
await game.toNextTurn();
@ -126,8 +126,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.FAIRY_LOCK);
game.move.select(Moves.MEMENTO, 1);
game.doSelectPartyPokemon(2);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined();
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined();
@ -135,8 +135,8 @@ describe("Moves - Fairy Lock", () => {
await game.toNextTurn();
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.getPlayerField()[0].isTrapped()).toEqual(true);
expect(game.scene.getPlayerField()[1].isTrapped()).toEqual(true);

View File

@ -104,10 +104,10 @@ describe("Moves - Fly", () => {
game.move.select(Moves.FLY);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
await game.forceEnemyMove(Moves.GRAVITY);
await game.move.selectEnemyMove(Moves.GRAVITY);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -43,8 +43,8 @@ describe("Moves - Follow Me", () => {
game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY);
// Force both enemies to target the player Pokemon that did not use Follow Me
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.phaseInterceptor.to(TurnEndPhase, false);
@ -61,8 +61,8 @@ describe("Moves - Follow Me", () => {
game.move.select(Moves.FOLLOW_ME, 1);
// Each player is targeted by an enemy
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.phaseInterceptor.to(TurnEndPhase, false);
@ -84,8 +84,8 @@ describe("Moves - Follow Me", () => {
game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2);
// Target doesn't need to be specified if the move is self-targeted
await game.forceEnemyMove(Moves.FOLLOW_ME);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.FOLLOW_ME);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase, false);
@ -104,8 +104,8 @@ describe("Moves - Follow Me", () => {
game.move.select(Moves.SNIPE_SHOT, 0, BattlerIndex.ENEMY);
game.move.select(Moves.SNIPE_SHOT, 1, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.FOLLOW_ME);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.FOLLOW_ME);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase, false);

View File

@ -37,7 +37,7 @@ describe("Moves - Grudge", () => {
const playerPokemon = game.scene.getPlayerPokemon();
game.move.select(Moves.EMBER);
await game.forceEnemyMove(Moves.GRUDGE);
await game.move.selectEnemyMove(Moves.GRUDGE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("BerryPhase");
@ -51,12 +51,12 @@ describe("Moves - Grudge", () => {
const playerPokemon = game.scene.getPlayerPokemon();
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.GRUDGE);
await game.move.selectEnemyMove(Moves.GRUDGE);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.toNextTurn();
game.move.select(Moves.EMBER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to("BerryPhase");
@ -78,7 +78,7 @@ describe("Moves - Grudge", () => {
const playerPokemon = game.scene.getPlayerPokemon();
game.move.select(Moves.FALSE_SWIPE);
await game.forceEnemyMove(Moves.GRUDGE);
await game.move.selectEnemyMove(Moves.GRUDGE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("BerryPhase");

View File

@ -36,7 +36,7 @@ describe("Moves - Imprison", () => {
const playerPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.TRANSFORM);
await game.forceEnemyMove(Moves.IMPRISON);
await game.move.selectEnemyMove(Moves.IMPRISON);
await game.toNextTurn();
const playerMoveset = playerPokemon.getMoveset().map(x => x?.moveId);
const enemyMoveset = game.scene
@ -51,7 +51,7 @@ describe("Moves - Imprison", () => {
// Second turn, Imprison forces Struggle to occur
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const move1 = playerPokemon.getLastXMoves(1)[0]!;
expect(move1.move).toBe(Moves.STRUGGLE);
@ -63,7 +63,7 @@ describe("Moves - Imprison", () => {
const playerPokemon1 = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.IMPRISON);
await game.move.selectEnemyMove(Moves.IMPRISON);
await game.toNextTurn();
const imprisonArenaTag = game.scene.arena.getTag(ArenaTagType.IMPRISON);
const imprisonBattlerTag1 = playerPokemon1.getTag(BattlerTagType.IMPRISON);
@ -72,7 +72,7 @@ describe("Moves - Imprison", () => {
// Second turn, Imprison forces Struggle to occur
game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const playerPokemon2 = game.scene.getPlayerPokemon()!;
const imprisonBattlerTag2 = playerPokemon2.getTag(BattlerTagType.IMPRISON);
@ -87,12 +87,12 @@ describe("Moves - Imprison", () => {
const playerPokemon = game.scene.getPlayerPokemon()!;
const enemyPokemon = game.scene.getEnemyPokemon()!;
game.move.select(Moves.IMPRISON);
await game.forceEnemyMove(Moves.GROWL);
await game.move.selectEnemyMove(Moves.GROWL);
await game.toNextTurn();
expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeDefined();
expect(enemyPokemon.getTag(BattlerTagType.IMPRISON)).toBeDefined();
game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(playerPokemon.isActive(true)).toBeFalsy();
expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeUndefined();

View File

@ -48,7 +48,7 @@ describe("Moves - Instruct", () => {
game.move.changeMoveset(enemy, Moves.SONIC_BOOM);
game.move.select(Moves.INSTRUCT);
await game.forceEnemyMove(Moves.SONIC_BOOM);
await game.move.selectEnemyMove(Moves.SONIC_BOOM);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("MovePhase"); // enemy attacks us
@ -75,12 +75,12 @@ describe("Moves - Instruct", () => {
game.move.changeMoveset(enemy, [Moves.SONIC_BOOM, Moves.SUBSTITUTE]);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SUBSTITUTE);
await game.move.selectEnemyMove(Moves.SUBSTITUTE);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.toNextTurn();
game.move.select(Moves.INSTRUCT);
await game.forceEnemyMove(Moves.SONIC_BOOM);
await game.move.selectEnemyMove(Moves.SONIC_BOOM);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("TurnEndPhase", false);
@ -169,7 +169,7 @@ describe("Moves - Instruct", () => {
moveUsed.ppUsed = moveUsed.getMovePp() - 1;
game.move.select(Moves.INSTRUCT);
await game.forceEnemyMove(Moves.HIDDEN_POWER);
await game.move.selectEnemyMove(Moves.HIDDEN_POWER);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("TurnEndPhase", false);
@ -210,8 +210,8 @@ describe("Moves - Instruct", () => {
game.move.select(Moves.SPLASH, BattlerIndex.PLAYER);
game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY);
await game.forceEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("BerryPhase");
@ -248,7 +248,7 @@ describe("Moves - Instruct", () => {
await game.classicMode.startBattle([Species.AMOONGUSS]);
game.move.select(Moves.INSTRUCT);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to("TurnEndPhase", false);
@ -265,7 +265,7 @@ describe("Moves - Instruct", () => {
game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY);
game.move.select(Moves.DISABLE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY);
await game.forceEnemyMove(Moves.SONIC_BOOM, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SONIC_BOOM, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("TurnEndPhase", false);
@ -311,7 +311,7 @@ describe("Moves - Instruct", () => {
];
game.move.select(Moves.INSTRUCT);
await game.forceEnemyMove(Moves.HYPER_BEAM);
await game.move.selectEnemyMove(Moves.HYPER_BEAM);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn();
@ -360,7 +360,7 @@ describe("Moves - Instruct", () => {
];
game.move.select(Moves.INSTRUCT);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase", false);
// lucario instructed enemy whirlwind at 0 priority to switch itself out
@ -379,8 +379,8 @@ describe("Moves - Instruct", () => {
game.move.select(Moves.QUICK_ATTACK, BattlerIndex.PLAYER, BattlerIndex.ENEMY); // succeeds due to terrain no
game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.PSYCHIC_TERRAIN);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN);
await game.toNextTurn();
game.move.select(Moves.SPLASH, BattlerIndex.PLAYER);
@ -404,8 +404,8 @@ describe("Moves - Instruct", () => {
game.move.select(Moves.VINE_WHIP, BattlerIndex.PLAYER, BattlerIndex.ENEMY);
game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.PSYCHIC_TERRAIN);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN);
await game.toNextTurn();
game.move.select(Moves.SPLASH, BattlerIndex.PLAYER);
@ -515,14 +515,14 @@ describe("Moves - Instruct", () => {
game.move.select(Moves.SPLASH, BattlerIndex.PLAYER);
game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY);
game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY);
await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("BerryPhase");
@ -531,8 +531,8 @@ describe("Moves - Instruct", () => {
await game.toNextTurn();
game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY);
game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY);
await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2]);
await game.phaseInterceptor.to("BerryPhase");

View File

@ -86,11 +86,11 @@ describe("Moves - Last Resort", () => {
// use mirror move normally to trigger absorb virtually
game.move.select(Moves.MIRROR_MOVE);
await game.forceEnemyMove(Moves.ABSORB);
await game.move.selectEnemyMove(Moves.ABSORB);
await game.toNextTurn();
game.move.select(Moves.LAST_RESORT);
await game.forceEnemyMove(Moves.SWORDS_DANCE); // goes first to proc dancer ahead of time
await game.move.selectEnemyMove(Moves.SWORDS_DANCE); // goes first to proc dancer ahead of time
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("TurnEndPhase");
expectLastResortFail();
@ -154,10 +154,10 @@ describe("Moves - Last Resort", () => {
// ensure enemy last resort succeeds
game.move.select(Moves.MIRROR_MOVE);
await game.forceEnemyMove(Moves.ABSORB);
await game.move.selectEnemyMove(Moves.ABSORB);
await game.phaseInterceptor.to("TurnEndPhase");
game.move.select(Moves.MIRROR_MOVE);
await game.forceEnemyMove(Moves.LAST_RESORT);
await game.move.selectEnemyMove(Moves.LAST_RESORT);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -62,12 +62,12 @@ describe("Moves - Magic Coat", () => {
// turn 1
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.MAGIC_COAT);
await game.move.selectEnemyMove(Moves.MAGIC_COAT);
await game.toNextTurn();
// turn 2
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1);
});
@ -102,8 +102,8 @@ describe("Moves - Magic Coat", () => {
game.move.select(Moves.GROWL, 0);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.MAGIC_COAT);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.MAGIC_COAT);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.getPlayerField().every(p => p.getStatStage(Stat.ATK) === -1)).toBeTruthy();
@ -129,8 +129,8 @@ describe("Moves - Magic Coat", () => {
game.move.select(Moves.MAGIC_COAT, 0);
game.move.select(Moves.GROWL, 1);
await game.forceEnemyMove(Moves.MAGIC_COAT);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.MAGIC_COAT);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.getEnemyField()[0].getStatStage(Stat.ATK)).toBe(0);
@ -192,12 +192,12 @@ describe("Moves - Magic Coat", () => {
// turn 1
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.MAGIC_COAT);
await game.move.selectEnemyMove(Moves.MAGIC_COAT);
await game.toNextTurn();
// turn 2
game.move.select(Moves.ENCORE);
await game.forceEnemyMove(Moves.TACKLE);
await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to("BerryPhase");
expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE);
@ -233,7 +233,7 @@ describe("Moves - Magic Coat", () => {
vi.spyOn(stomping_tantrum, "calculateBattlePower");
game.move.select(Moves.SPORE);
await game.forceEnemyMove(Moves.CHARM);
await game.move.selectEnemyMove(Moves.CHARM);
await game.phaseInterceptor.to("TurnEndPhase");
expect(enemy.getLastXMoves(1)[0].result).toBe("success");

View File

@ -42,8 +42,8 @@ describe("Moves - Metal Burst", () => {
game.move.select(Moves.METAL_BURST);
game.move.select(Moves.FISSURE, 1, BattlerIndex.ENEMY);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]);
@ -63,8 +63,8 @@ describe("Moves - Metal Burst", () => {
game.move.select(Moves.METAL_BURST);
game.move.select(Moves.PRECIPICE_BLADES, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]);

View File

@ -40,8 +40,8 @@ describe("Moves - Mirror Move", () => {
game.move.select(Moves.MIRROR_MOVE, 0, BattlerIndex.ENEMY); // target's last move is Tackle, enemy should receive damage from Mirror Move copying Tackle
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.GROWL, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.GROWL, BattlerIndex.PLAYER_2);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER]);
await game.toNextTurn();

View File

@ -42,8 +42,8 @@ describe("Moves - Plasma Fists", () => {
game.move.select(Moves.PLASMA_FISTS, 0, BattlerIndex.ENEMY);
game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);

View File

@ -256,8 +256,8 @@ describe("Moves - Pledge Moves", () => {
game.move.select(Moves.FIRE_PLEDGE, 0, BattlerIndex.ENEMY);
game.move.select(Moves.GRASS_PLEDGE, 1, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.SPORE, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPORE, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2]);
@ -290,8 +290,8 @@ describe("Moves - Pledge Moves", () => {
game.move.select(Moves.WATER_PLEDGE, 0, BattlerIndex.ENEMY);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.FOLLOW_ME);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.FOLLOW_ME);
await game.phaseInterceptor.to("BerryPhase", false);

View File

@ -233,8 +233,8 @@ describe("Moves - Powder", () => {
game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.GRASS_PLEDGE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.GRASS_PLEDGE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to(BerryPhase, false);
@ -250,8 +250,8 @@ describe("Moves - Powder", () => {
game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to(BerryPhase, false);
@ -267,8 +267,8 @@ describe("Moves - Powder", () => {
game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to(BerryPhase, false);

View File

@ -39,8 +39,8 @@ describe("Moves - Quash", () => {
game.move.select(Moves.QUASH, 0, BattlerIndex.PLAYER_2);
game.move.select(Moves.SUNNY_DAY, 1);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.RAIN_DANCE);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.RAIN_DANCE);
await game.phaseInterceptor.to("TurnEndPhase", false);
// will be sunny if player_2 moved last because of quash, rainy otherwise
@ -67,8 +67,8 @@ describe("Moves - Quash", () => {
game.move.select(Moves.RAIN_DANCE, 0);
game.move.select(Moves.SUNNY_DAY, 1);
await game.forceEnemyMove(Moves.QUASH, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2);
await game.phaseInterceptor.to("TurnEndPhase", false);
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SUNNY);
@ -81,15 +81,15 @@ describe("Moves - Quash", () => {
game.move.select(Moves.SPLASH, 0);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TRICK_ROOM);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.TRICK_ROOM);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnInitPhase");
// both users are quashed - accelgor should move last w/ TR so rain should be up at end of turn
game.move.select(Moves.RAIN_DANCE, 0);
game.move.select(Moves.SUNNY_DAY, 1);
await game.forceEnemyMove(Moves.QUASH, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2);
await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2);
await game.phaseInterceptor.to("TurnEndPhase", false);
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.RAIN);

View File

@ -75,7 +75,7 @@ describe("Moves - Rage Fist", () => {
await game.classicMode.startBattle([Species.REGIROCK]);
game.move.select(Moves.SUBSTITUTE);
await game.forceEnemyMove(Moves.DOUBLE_KICK);
await game.move.selectEnemyMove(Moves.DOUBLE_KICK);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.toNextTurn();
@ -84,12 +84,12 @@ describe("Moves - Rage Fist", () => {
// remove substitute and get confused
game.move.select(Moves.TIDY_UP);
await game.forceEnemyMove(Moves.CONFUSE_RAY);
await game.move.selectEnemyMove(Moves.CONFUSE_RAY);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.toNextTurn();
game.move.select(Moves.RAGE_FIST);
await game.forceEnemyMove(Moves.CONFUSE_RAY);
await game.move.selectEnemyMove(Moves.CONFUSE_RAY);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.move.forceConfusionActivation(true);
await game.toNextTurn();
@ -123,7 +123,7 @@ describe("Moves - Rage Fist", () => {
// beat up a magikarp
game.move.select(Moves.RAGE_FIST);
await game.forceEnemyMove(Moves.DOUBLE_KICK);
await game.move.selectEnemyMove(Moves.DOUBLE_KICK);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -38,8 +38,8 @@ describe("Moves - Rage Powder", () => {
game.move.select(Moves.QUICK_ATTACK, 0, BattlerIndex.ENEMY);
game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.RAGE_POWDER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.RAGE_POWDER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("BerryPhase", false);
@ -61,8 +61,8 @@ describe("Moves - Rage Powder", () => {
game.move.select(Moves.QUICK_ATTACK, 0, BattlerIndex.ENEMY);
game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.RAGE_POWDER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.RAGE_POWDER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("BerryPhase", false);

View File

@ -37,17 +37,17 @@ describe("Moves - Reflect Type", () => {
const enemyPokemon = game.scene.getEnemyPokemon();
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.BURN_UP);
await game.move.selectEnemyMove(Moves.BURN_UP);
await game.toNextTurn();
game.move.select(Moves.FORESTS_CURSE);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
expect(enemyPokemon?.getTypes().includes(PokemonType.UNKNOWN)).toBe(true);
expect(enemyPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true);
game.move.select(Moves.REFLECT_TYPE);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase");
expect(playerPokemon?.getTypes()[0]).toBe(PokemonType.NORMAL);
expect(playerPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true);

View File

@ -98,8 +98,8 @@ describe("Moves - Revival Blessing", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.REVIVAL_BLESSING, 1);
await game.forceEnemyMove(Moves.FISSURE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.FISSURE, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]);
await game.phaseInterceptor.to("MoveEndPhase");

View File

@ -45,8 +45,8 @@ describe("Moves - Round", () => {
game.move.select(Moves.ROUND, 0, BattlerIndex.ENEMY);
game.move.select(Moves.ROUND, 1, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.ROUND, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.ROUND, BattlerIndex.PLAYER);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]);

View File

@ -49,13 +49,13 @@ describe("Moves - Secret Power", () => {
// No Terrain + Biome.VOLCANO --> Burn
game.move.select(Moves.SECRET_POWER);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase");
expect(enemyPokemon.status?.effect).toBe(StatusEffect.BURN);
// Misty Terrain --> SpAtk -1
game.move.select(Moves.SECRET_POWER);
await game.forceEnemyMove(Moves.MISTY_TERRAIN);
await game.move.selectEnemyMove(Moves.MISTY_TERRAIN);
await game.phaseInterceptor.to("TurnEndPhase");
expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(-1);
});

View File

@ -39,8 +39,8 @@ describe("Moves - Spotlight", () => {
game.move.select(Moves.SPOTLIGHT, 0, BattlerIndex.ENEMY);
game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase, false);
@ -56,8 +56,8 @@ describe("Moves - Spotlight", () => {
game.move.select(Moves.SPOTLIGHT, 0, BattlerIndex.ENEMY);
game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.FOLLOW_ME);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.FOLLOW_ME);
await game.phaseInterceptor.to("BerryPhase", false);

View File

@ -37,7 +37,7 @@ describe("Moves - Taunt", () => {
// First turn, Player Pokemon succeeds using Growl without Taunt
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.TAUNT);
await game.move.selectEnemyMove(Moves.TAUNT);
await game.toNextTurn();
const move1 = playerPokemon.getLastXMoves(1)[0]!;
expect(move1.move).toBe(Moves.GROWL);
@ -46,7 +46,7 @@ describe("Moves - Taunt", () => {
// Second turn, Taunt forces Struggle to occur
game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const move2 = playerPokemon.getLastXMoves(1)[0]!;
expect(move2.move).toBe(Moves.STRUGGLE);

View File

@ -106,7 +106,7 @@ describe("Moves - Telekinesis", () => {
const enemyOpponent = game.scene.getEnemyPokemon()!;
game.move.select(Moves.TELEKINESIS);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase");
expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined();
expect(enemyOpponent.getTag(BattlerTagType.FLOATING)).toBeDefined();
@ -114,7 +114,7 @@ describe("Moves - Telekinesis", () => {
await game.toNextTurn();
vi.spyOn(allMoves[Moves.MUD_SHOT], "accuracy", "get").mockReturnValue(0);
game.move.select(Moves.MUD_SHOT);
await game.forceEnemyMove(Moves.INGRAIN);
await game.move.selectEnemyMove(Moves.INGRAIN);
await game.phaseInterceptor.to("TurnEndPhase");
expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined();
expect(enemyOpponent.getTag(BattlerTagType.INGRAIN)).toBeDefined();

View File

@ -40,7 +40,7 @@ describe("Moves - Torment", () => {
// First turn, Player Pokemon uses Tackle successfully
game.move.select(Moves.TACKLE);
await game.forceEnemyMove(Moves.TORMENT);
await game.move.selectEnemyMove(Moves.TORMENT);
await game.toNextTurn();
const move1 = playerPokemon.getLastXMoves(1)[0]!;
expect(move1.move).toBe(Moves.TACKLE);
@ -49,14 +49,14 @@ describe("Moves - Torment", () => {
// Second turn, Torment forces Struggle to occur
game.move.select(Moves.TACKLE);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
const move2 = playerPokemon.getLastXMoves(1)[0]!;
expect(move2.move).toBe(Moves.STRUGGLE);
// Third turn, Tackle can be used.
game.move.select(Moves.TACKLE);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase);
const move3 = playerPokemon.getLastXMoves(1)[0]!;
expect(move3.move).toBe(Moves.TACKLE);

View File

@ -51,7 +51,7 @@ describe("Moves - Whirlwind", () => {
const staraptor = game.scene.getPlayerPokemon()!;
game.move.select(move);
await game.forceEnemyMove(Moves.WHIRLWIND);
await game.move.selectEnemyMove(Moves.WHIRLWIND);
await game.phaseInterceptor.to("BerryPhase", false);
@ -69,7 +69,7 @@ describe("Moves - Whirlwind", () => {
return min;
});
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WHIRLWIND);
await game.move.selectEnemyMove(Moves.WHIRLWIND);
await game.toNextTurn();
expect(bulbasaur.isOnField()).toBe(false);
@ -81,7 +81,7 @@ describe("Moves - Whirlwind", () => {
return min + 1;
});
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WHIRLWIND);
await game.move.selectEnemyMove(Moves.WHIRLWIND);
await game.toNextTurn();
expect(bulbasaur.isOnField()).toBe(false);
@ -101,7 +101,7 @@ describe("Moves - Whirlwind", () => {
return min;
});
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WHIRLWIND);
await game.move.selectEnemyMove(Moves.WHIRLWIND);
await game.toNextTurn();
expect(lapras.isOnField()).toBe(false);
@ -120,7 +120,7 @@ describe("Moves - Whirlwind", () => {
eevee.status = new Status(StatusEffect.FAINT);
expect(eevee.isFainted()).toBe(true);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
// Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted
@ -128,7 +128,7 @@ describe("Moves - Whirlwind", () => {
return min;
});
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WHIRLWIND);
await game.move.selectEnemyMove(Moves.WHIRLWIND);
await game.toNextTurn();
expect(lapras.isOnField()).toBe(false);
@ -147,7 +147,7 @@ describe("Moves - Whirlwind", () => {
eevee.status = new Status(StatusEffect.FAINT);
expect(eevee.isFainted()).toBe(true);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
// Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted
@ -155,7 +155,7 @@ describe("Moves - Whirlwind", () => {
return min;
});
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WHIRLWIND);
await game.move.selectEnemyMove(Moves.WHIRLWIND);
await game.toNextTurn();
expect(lapras.isOnField()).toBe(true);
@ -184,7 +184,7 @@ describe("Moves - Whirlwind", () => {
// Player uses Whirlwind; opponent uses Splash
game.move.select(Moves.WHIRLWIND);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
// Verify that the failure message is displayed for Whirlwind
@ -214,8 +214,8 @@ describe("Moves - Whirlwind", () => {
game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.MEMENTO);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.MEMENTO);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();
// Get the enemy pokemon id so we can check if is the same after switch.
@ -225,8 +225,8 @@ describe("Moves - Whirlwind", () => {
game.move.select(Moves.WHIRLWIND, 0, BattlerIndex.ENEMY);
game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn();

View File

@ -1,7 +1,6 @@
import { updateUserInfo } from "#app/account";
import { BattlerIndex } from "#app/battle";
import BattleScene from "#app/battle-scene";
import { getMoveTargets } from "#app/data/moves/move";
import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon";
import Trainer from "#app/field/trainer";
import { GameModes, getGameMode } from "#app/game-mode";
@ -11,7 +10,6 @@ import overrides from "#app/overrides";
import { CheckSwitchPhase } from "#app/phases/check-switch-phase";
import { CommandPhase } from "#app/phases/command-phase";
import { EncounterPhase } from "#app/phases/encounter-phase";
import { EnemyCommandPhase } from "#app/phases/enemy-command-phase";
import { FaintPhase } from "#app/phases/faint-phase";
import { LoginPhase } from "#app/phases/login-phase";
import { MovePhase } from "#app/phases/move-phase";
@ -34,7 +32,6 @@ import { isNullOrUndefined } from "#app/utils/common";
import { Button } from "#enums/buttons";
import { ExpGainsSpeed } from "#enums/exp-gains-speed";
import { ExpNotification } from "#enums/exp-notification";
import type { Moves } from "#enums/moves";
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PlayerGender } from "#enums/player-gender";
import type { Species } from "#enums/species";
@ -343,36 +340,6 @@ export default class GameManager {
);
}
/**
* Forces the next enemy selecting a move to use the given move in its moveset against the
* given target (if applicable).
* @param moveId - The {@linkcode Moves | move} the enemy will use
* @param target - The {@linkcode BattlerIndex} of the target against which the enemy will use the given move;
* will use normal target selection priorities if omitted.
* @deprecated Use {@linkcode MoveHelper.forceEnemyMove} or {@linkcode MoveHelper.selectEnemyMove}
*/
async forceEnemyMove(moveId: Moves, target?: BattlerIndex) {
// Wait for the next EnemyCommandPhase to start
await this.phaseInterceptor.to(EnemyCommandPhase, false);
const enemy = this.scene.getEnemyField()[(this.scene.getCurrentPhase() as EnemyCommandPhase).getFieldIndex()];
const legalTargets = getMoveTargets(enemy, moveId);
vi.spyOn(enemy, "getNextMove").mockReturnValueOnce({
move: moveId,
targets:
target !== undefined && !legalTargets.multiple && legalTargets.targets.includes(target)
? [target]
: enemy.getNextTargets(moveId),
});
/**
* Run the EnemyCommandPhase to completion.
* This allows this function to be called consecutively to
* force a move for each enemy in a double battle.
*/
await this.phaseInterceptor.to(EnemyCommandPhase);
}
forceEnemyToSwitch() {
const originalMatchupScore = Trainer.prototype.getPartyMemberMatchupScores;
Trainer.prototype.getPartyMemberMatchupScores = () => {

View File

@ -99,8 +99,8 @@ describe("UI - Type Hints", () => {
// Use soak to change type of remaining abra to water
game.move.select(Moves.SOAK, 1);
await game.forceEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.TELEPORT);
await game.move.selectEnemyMove(Moves.SPLASH);
await game.move.selectEnemyMove(Moves.TELEPORT);
await game.toNextTurn();
game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => {