mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2024-11-26 00:36:25 +00:00
[Test] Add helper function to modify the turn order for tests (#3374)
* Add helper function to modify the turn order for tests * Replace manual speed modification with new helper function * Replace `vi.spyOn()` instances with helper function
This commit is contained in:
parent
df9596a9dc
commit
0ef329e8eb
@ -11,6 +11,8 @@ import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
import { changeTurnOrder } from "../utils/testUtils";
|
||||
import { BattlerIndex } from "#app/battle.js";
|
||||
|
||||
|
||||
describe("Abilities - Serene Grace", () => {
|
||||
@ -45,7 +47,6 @@ describe("Abilities - Serene Grace", () => {
|
||||
|
||||
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPDEF] = 10000;
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPD] = 1;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
@ -56,6 +57,7 @@ describe("Abilities - Serene Grace", () => {
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
|
||||
await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
|
||||
// Check chance of Air Slash without Serene Grace
|
||||
@ -78,7 +80,6 @@ describe("Abilities - Serene Grace", () => {
|
||||
]);
|
||||
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPDEF] = 10000;
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPD] = 1;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
@ -89,6 +90,7 @@ describe("Abilities - Serene Grace", () => {
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
|
||||
await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
|
||||
// Check chance of Air Slash with Serene Grace
|
||||
|
@ -11,6 +11,8 @@ import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
import { changeTurnOrder } from "../utils/testUtils";
|
||||
import { BattlerIndex } from "#app/battle.js";
|
||||
|
||||
|
||||
describe("Abilities - Sheer Force", () => {
|
||||
@ -46,7 +48,6 @@ describe("Abilities - Sheer Force", () => {
|
||||
|
||||
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPDEF] = 10000;
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPD] = 1;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
@ -57,6 +58,7 @@ describe("Abilities - Sheer Force", () => {
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
|
||||
await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
|
||||
const phase = game.scene.getCurrentPhase() as MoveEffectPhase;
|
||||
@ -85,7 +87,6 @@ describe("Abilities - Sheer Force", () => {
|
||||
|
||||
|
||||
game.scene.getEnemyParty()[0].stats[Stat.DEF] = 10000;
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPD] = 1;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
@ -96,6 +97,7 @@ describe("Abilities - Sheer Force", () => {
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
|
||||
await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
|
||||
const phase = game.scene.getCurrentPhase() as MoveEffectPhase;
|
||||
@ -124,7 +126,6 @@ describe("Abilities - Sheer Force", () => {
|
||||
|
||||
|
||||
game.scene.getEnemyParty()[0].stats[Stat.DEF] = 10000;
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPD] = 1;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
@ -135,6 +136,7 @@ describe("Abilities - Sheer Force", () => {
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
|
||||
await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
|
||||
const phase = game.scene.getCurrentPhase() as MoveEffectPhase;
|
||||
@ -165,7 +167,6 @@ describe("Abilities - Sheer Force", () => {
|
||||
|
||||
|
||||
game.scene.getEnemyParty()[0].stats[Stat.DEF] = 10000;
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPD] = 1;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
@ -176,6 +177,7 @@ describe("Abilities - Sheer Force", () => {
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
|
||||
await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
|
||||
const phase = game.scene.getCurrentPhase() as MoveEffectPhase;
|
||||
|
@ -11,6 +11,8 @@ import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
import { BattlerIndex } from "#app/battle.js";
|
||||
import { changeTurnOrder } from "../utils/testUtils";
|
||||
|
||||
|
||||
describe("Abilities - Shield Dust", () => {
|
||||
@ -46,7 +48,6 @@ describe("Abilities - Shield Dust", () => {
|
||||
|
||||
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPDEF] = 10000;
|
||||
game.scene.getEnemyParty()[0].stats[Stat.SPD] = 1;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
@ -57,6 +58,7 @@ describe("Abilities - Shield Dust", () => {
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
|
||||
await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
|
||||
// Shield Dust negates secondary effect
|
||||
|
@ -11,6 +11,8 @@ import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest";
|
||||
import { BattlerIndex } from "#app/battle.js";
|
||||
import { changeTurnOrder } from "../utils/testUtils";
|
||||
|
||||
const TIMEOUT = 20 * 1000;
|
||||
|
||||
@ -45,7 +47,6 @@ describe("Abilities - ZEN MODE", () => {
|
||||
async () => {
|
||||
const moveToUse = Moves.SPLASH;
|
||||
await game.startBattle([Species.DARMANITAN]);
|
||||
game.scene.getParty()[0].stats[Stat.SPD] = 1;
|
||||
game.scene.getParty()[0].stats[Stat.HP] = 100;
|
||||
game.scene.getParty()[0].hp = 100;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
@ -57,7 +58,8 @@ describe("Abilities - ZEN MODE", () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, moveToUse);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(DamagePhase, false);
|
||||
await changeTurnOrder(game, [BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
|
||||
await game.phaseInterceptor.to(DamagePhase, false);
|
||||
// await game.phaseInterceptor.runFrom(DamagePhase).to(DamagePhase, false);
|
||||
const damagePhase = game.scene.getCurrentPhase() as DamagePhase;
|
||||
damagePhase.updateAmount(40);
|
||||
@ -73,7 +75,6 @@ describe("Abilities - ZEN MODE", () => {
|
||||
async () => {
|
||||
const moveToUse = Moves.SPLASH;
|
||||
await game.startBattle([Species.DARMANITAN]);
|
||||
game.scene.getParty()[0].stats[Stat.SPD] = 1;
|
||||
game.scene.getParty()[0].stats[Stat.HP] = 1000;
|
||||
game.scene.getParty()[0].hp = 100;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
@ -85,7 +86,8 @@ describe("Abilities - ZEN MODE", () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, moveToUse);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(QuietFormChangePhase);
|
||||
await changeTurnOrder(game, [BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
|
||||
await game.phaseInterceptor.to(QuietFormChangePhase);
|
||||
await game.phaseInterceptor.to(TurnInitPhase, false);
|
||||
expect(game.scene.getParty()[0].hp).not.toBe(100);
|
||||
expect(game.scene.getParty()[0].formIndex).not.toBe(0);
|
||||
@ -98,7 +100,6 @@ describe("Abilities - ZEN MODE", () => {
|
||||
async () => {
|
||||
const moveToUse = Moves.SPLASH;
|
||||
await game.startBattle([Species.DARMANITAN, Species.CHARIZARD]);
|
||||
game.scene.getParty()[0].stats[Stat.SPD] = 1;
|
||||
game.scene.getParty()[0].stats[Stat.HP] = 1000;
|
||||
game.scene.getParty()[0].hp = 100;
|
||||
expect(game.scene.getParty()[0].formIndex).toBe(0);
|
||||
@ -110,7 +111,8 @@ describe("Abilities - ZEN MODE", () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, moveToUse);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(DamagePhase, false);
|
||||
await changeTurnOrder(game, [BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
|
||||
await game.phaseInterceptor.to(DamagePhase, false);
|
||||
// await game.phaseInterceptor.runFrom(DamagePhase).to(DamagePhase, false);
|
||||
const damagePhase = game.scene.getCurrentPhase() as DamagePhase;
|
||||
damagePhase.updateAmount(80);
|
||||
|
@ -1,13 +1,14 @@
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import { CritBoosterModifier } from "#app/modifier/modifier";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { MoveEffectPhase, TurnStartPhase } from "#app/phases";
|
||||
import { MoveEffectPhase } from "#app/phases";
|
||||
import GameManager from "#test/utils/gameManager";
|
||||
import * as Utils from "#app/utils";
|
||||
import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
import Phase from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { changeTurnOrder } from "#test/utils/testUtils";
|
||||
|
||||
describe("Items - Leek", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
@ -43,9 +44,7 @@ describe("Items - Leek", () => {
|
||||
|
||||
game.doAttack(0);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]);
|
||||
await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase);
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import { CritBoosterModifier } from "#app/modifier/modifier";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { MoveEffectPhase, TurnStartPhase } from "#app/phases";
|
||||
import { MoveEffectPhase } from "#app/phases";
|
||||
import GameManager from "#test/utils/gameManager";
|
||||
import * as Utils from "#app/utils";
|
||||
import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
import Phase from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { changeTurnOrder } from "#test/utils/testUtils";
|
||||
|
||||
describe("Items - Scope Lens", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
@ -42,10 +43,7 @@ describe("Items - Scope Lens", () => {
|
||||
]);
|
||||
|
||||
game.doAttack(0);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]);
|
||||
await changeTurnOrder(game, [ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase);
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import Phaser from "phaser";
|
||||
import GameManager from "#test/utils/gameManager";
|
||||
import { MoveEffectPhase, MovePhase, MoveEndPhase, TurnStartPhase, DamagePhase } from "#app/phases";
|
||||
import { MoveEffectPhase, MovePhase, MoveEndPhase, DamagePhase } from "#app/phases";
|
||||
import { getMovePosition } from "#test/utils/gameManagerUtils";
|
||||
import { Stat } from "#app/data/pokemon-stat";
|
||||
import { allMoves } from "#app/data/move";
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import { Species } from "#enums/species";
|
||||
import { Moves } from "#enums/moves";
|
||||
import { changeTurnOrder } from "#test/utils/testUtils";
|
||||
|
||||
describe("Moves - Fusion Flare and Fusion Bolt", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
@ -54,10 +55,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => {
|
||||
game.doAttack(getMovePosition(game.scene, 0, fusionBolt.id));
|
||||
game.doSelectTarget(BattlerIndex.ENEMY);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
// Force user party to act before enemy party
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]);
|
||||
await changeTurnOrder(game, [ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.moveId).toBe(fusionFlare.id);
|
||||
@ -82,10 +81,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => {
|
||||
game.doAttack(getMovePosition(game.scene, 0, fusionFlare.id));
|
||||
game.doSelectTarget(BattlerIndex.ENEMY);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
// Force user party to act before enemy party
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]);
|
||||
await changeTurnOrder(game, [ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.moveId).toBe(fusionBolt.id);
|
||||
@ -110,10 +107,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => {
|
||||
game.doAttack(getMovePosition(game.scene, 0, fusionBolt.id));
|
||||
game.doSelectTarget(0);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
// Force first enemy to act (and fail) in between party
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY ]);
|
||||
await changeTurnOrder(game, [ BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY ]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.moveId).toBe(fusionFlare.id);
|
||||
@ -144,10 +139,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => {
|
||||
game.doAttack(getMovePosition(game.scene, 0, fusionBolt.id));
|
||||
game.doSelectTarget(BattlerIndex.ENEMY);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
// Force first enemy to act in between party
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY ]);
|
||||
await changeTurnOrder(game, [ BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY ]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.moveId).toBe(fusionFlare.id);
|
||||
@ -176,10 +169,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => {
|
||||
game.doAttack(getMovePosition(game.scene, 0, fusionFlare.id));
|
||||
game.doSelectTarget(BattlerIndex.PLAYER);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
// Force user party to act before enemy party
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]);
|
||||
await changeTurnOrder(game, [ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.moveId).toBe(fusionBolt.id);
|
||||
@ -230,10 +221,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => {
|
||||
game.doAttack(getMovePosition(game.scene, 0, fusionBolt.id));
|
||||
game.doSelectTarget(BattlerIndex.ENEMY);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
// Force first enemy to act in between party
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY ]);
|
||||
await changeTurnOrder(game, [ BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY ]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.moveId).toBe(fusionBolt.id);
|
||||
@ -294,10 +283,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => {
|
||||
game.doAttack(getMovePosition(game.scene, 0, fusionBolt.id));
|
||||
game.doSelectTarget(BattlerIndex.PLAYER);
|
||||
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
// Force first enemy to act in between party
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue([ BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY ]);
|
||||
await changeTurnOrder(game, [ BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY ]);
|
||||
|
||||
await game.phaseInterceptor.to(MoveEffectPhase, false);
|
||||
expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.moveId).toBe(fusionBolt.id);
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { BattlerIndex } from "#app/battle.js";
|
||||
import { Stat } from "#app/data/pokemon-stat.js";
|
||||
import { Abilities } from "#app/enums/abilities.js";
|
||||
import { Moves } from "#app/enums/moves.js";
|
||||
import { Species } from "#app/enums/species.js";
|
||||
@ -7,7 +6,7 @@ import { MoveResult } from "#app/field/pokemon.js";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
import GameManager from "#test/utils/gameManager";
|
||||
import { getMovePosition } from "#test/utils/gameManagerUtils";
|
||||
import { SPLASH_ONLY } from "#test/utils/testUtils";
|
||||
import { changeTurnOrder, SPLASH_ONLY } from "#test/utils/testUtils";
|
||||
|
||||
const TIMEOUT = 20 * 1000;
|
||||
|
||||
@ -74,11 +73,9 @@ describe("Moves - Gastro Acid", () => {
|
||||
|
||||
await game.startBattle();
|
||||
|
||||
// Force player to be slower to enable Core Enforcer to proc its suppression effect
|
||||
game.scene.getPlayerPokemon().stats[Stat.SPD] = 1;
|
||||
game.scene.getEnemyPokemon().stats[Stat.SPD] = 2;
|
||||
|
||||
game.doAttack(getMovePosition(game.scene, 0, Moves.CORE_ENFORCER));
|
||||
// Force player to be slower to enable Core Enforcer to proc its suppression effect
|
||||
await changeTurnOrder(game, [BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
|
||||
|
||||
await game.phaseInterceptor.to("TurnInitPhase");
|
||||
|
||||
|
@ -133,7 +133,7 @@ export default class GameManager {
|
||||
|
||||
await this.phaseInterceptor.run(EncounterPhase);
|
||||
if (overrides.OPP_HELD_ITEMS_OVERRIDE.length === 0) {
|
||||
removeEnemyHeldItems(this.scene);
|
||||
removeEnemyHeldItems(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,9 @@
|
||||
import BattleScene from "#app/battle-scene.js";
|
||||
import { Moves } from "#app/enums/moves.js";
|
||||
import i18next, { type ParseKeys } from "i18next";
|
||||
import { vi } from "vitest";
|
||||
import GameManager from "./gameManager";
|
||||
import { BattlerIndex } from "#app/battle.js";
|
||||
import { TurnStartPhase } from "#app/phases.js";
|
||||
|
||||
/** Ready to use array of Moves.SPLASH x4 */
|
||||
export const SPLASH_ONLY = [Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH];
|
||||
@ -29,10 +31,25 @@ export function arrayOfRange(start: integer, end: integer) {
|
||||
|
||||
/**
|
||||
* Removes all held items from enemy pokemon
|
||||
* @param scene `game.scene`
|
||||
* @param game The {@link GameManager} instance
|
||||
*/
|
||||
export function removeEnemyHeldItems(scene: BattleScene) {
|
||||
scene.clearEnemyHeldItemModifiers();
|
||||
scene.clearEnemyModifiers();
|
||||
export function removeEnemyHeldItems(game: GameManager): void {
|
||||
game.scene.clearEnemyHeldItemModifiers();
|
||||
game.scene.clearEnemyModifiers();
|
||||
console.log("Enemy held items removed");
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to modify the turn order. Will advance the turn to {@link TurnStartPhase}
|
||||
* @param game The {@link GameManager} instance
|
||||
* @param order The turn order to set
|
||||
* @example
|
||||
* ```ts
|
||||
* await changeTurnOrder(game, [BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]);
|
||||
* ```
|
||||
*/
|
||||
export async function changeTurnOrder(game: GameManager, order: BattlerIndex[]): Promise<void> {
|
||||
await game.phaseInterceptor.to(TurnStartPhase, false);
|
||||
|
||||
vi.spyOn(game.scene.getCurrentPhase() as TurnStartPhase, "getOrder").mockReturnValue(order);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user