From 566bdf6c89f902ded75c3b3ea7201dba7ce56c69 Mon Sep 17 00:00:00 2001 From: Bertie690 Date: Sun, 4 May 2025 11:10:23 -0400 Subject: [PATCH] Removed unneeded duplicate entries from movesets --- test/abilities/contrary.test.ts | 5 +- test/abilities/ice_face.test.ts | 11 +-- test/abilities/libero.test.ts | 14 +-- test/abilities/magic_guard.test.ts | 100 ++++++++++--------- test/abilities/mycelium_might.test.ts | 20 ++-- test/abilities/power_construct.test.ts | 9 +- test/abilities/protean.test.ts | 14 +-- test/abilities/sand_veil.test.ts | 16 +-- test/abilities/schooling.test.ts | 5 +- test/abilities/screen_cleaner.test.ts | 7 +- test/abilities/stall.test.ts | 13 +-- test/abilities/sweet_veil.test.ts | 15 +-- test/abilities/unseen_fist.test.ts | 16 +-- test/battle/battle.test.ts | 132 +++++++++++-------------- test/battle/inverse_battle.test.ts | 4 +- test/battle/special_battle.test.ts | 13 +-- test/items/leek.test.ts | 2 +- test/items/leftovers.test.ts | 17 ++-- test/moves/astonish.test.ts | 15 +-- test/moves/aurora_veil.test.ts | 17 ++-- test/moves/double_team.test.ts | 15 +-- test/moves/dynamax_cannon.test.ts | 10 +- test/moves/flower_shield.test.ts | 4 +- test/moves/freezy_frost.test.ts | 4 +- test/moves/fusion_bolt.test.ts | 19 ++-- test/moves/fusion_flare.test.ts | 17 ++-- test/moves/fusion_flare_bolt.test.ts | 23 +++-- test/moves/light_screen.test.ts | 15 +-- test/moves/magnet_rise.test.ts | 15 +-- test/moves/reflect.test.ts | 15 +-- test/moves/retaliate.test.ts | 2 +- test/moves/swallow.test.ts | 17 ++-- test/moves/tackle.test.ts | 15 +-- test/moves/tidy_up.test.ts | 15 +-- 34 files changed, 308 insertions(+), 323 deletions(-) diff --git a/test/abilities/contrary.test.ts b/test/abilities/contrary.test.ts index 929d620c232..99c5208f561 100644 --- a/test/abilities/contrary.test.ts +++ b/test/abilities/contrary.test.ts @@ -54,10 +54,7 @@ describe("Abilities - Contrary", () => { }); it("should block negative effects", async () => { - game.override - .enemyPassiveAbility(Abilities.CLEAR_BODY) - .enemyMoveset([Moves.HOWL, Moves.HOWL, Moves.HOWL, Moves.HOWL]) - .moveset([Moves.SPLASH]); + game.override.enemyPassiveAbility(Abilities.CLEAR_BODY).enemyMoveset(Moves.HOWL).moveset([Moves.SPLASH]); await game.classicMode.startBattle([Species.SLOWBRO]); const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/ice_face.test.ts b/test/abilities/ice_face.test.ts index 38269c29af1..cb9530fe355 100644 --- a/test/abilities/ice_face.test.ts +++ b/test/abilities/ice_face.test.ts @@ -106,8 +106,7 @@ describe("Abilities - Ice Face", () => { }); it("transforms to Ice Face when Hail or Snow starts", async () => { - game.override.moveset([Moves.QUICK_ATTACK]); - game.override.enemyMoveset([Moves.HAIL, Moves.HAIL, Moves.HAIL, Moves.HAIL]); + game.override.moveset([Moves.QUICK_ATTACK]).enemyMoveset(Moves.HAIL); await game.classicMode.startBattle([Species.MAGIKARP]); @@ -128,8 +127,7 @@ describe("Abilities - Ice Face", () => { }); it("transforms to Ice Face when summoned on arena with active Snow or Hail", async () => { - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - game.override.moveset([Moves.SNOWSCAPE]); + game.override.enemyMoveset(Moves.TACKLE).moveset([Moves.SNOWSCAPE]); await game.classicMode.startBattle([Species.EISCUE, Species.NINJASK]); @@ -155,8 +153,7 @@ describe("Abilities - Ice Face", () => { }); it("will not revert to its Ice Face if there is already Hail when it changes into Noice", async () => { - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override.enemySpecies(Species.SHUCKLE).enemyMoveset(Moves.TACKLE); await game.classicMode.startBattle([Species.EISCUE]); @@ -175,7 +172,7 @@ describe("Abilities - Ice Face", () => { }); it("persists form change when switched out", async () => { - game.override.enemyMoveset([Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK]); + game.override.enemyMoveset(Moves.QUICK_ATTACK); await game.classicMode.startBattle([Species.EISCUE, Species.MAGIKARP]); diff --git a/test/abilities/libero.test.ts b/test/abilities/libero.test.ts index a6942b18aad..e7f7489b661 100644 --- a/test/abilities/libero.test.ts +++ b/test/abilities/libero.test.ts @@ -29,11 +29,12 @@ describe("Abilities - Libero", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.ability(Abilities.LIBERO); - game.override.startingLevel(100); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset([Moves.ENDURE, Moves.ENDURE, Moves.ENDURE, Moves.ENDURE]); + game.override + .battleStyle("single") + .ability(Abilities.LIBERO) + .startingLevel(100) + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.ENDURE); }); test("ability applies and changes a pokemon's type", async () => { @@ -173,8 +174,7 @@ describe("Abilities - Libero", () => { }); test("ability applies correctly even if the pokemon's move is protected against", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); + game.override.moveset([Moves.TACKLE]).enemyMoveset(Moves.PROTECT); await game.startBattle([Species.MAGIKARP]); diff --git a/test/abilities/magic_guard.test.ts b/test/abilities/magic_guard.test.ts index 96a9f4dab74..fc650b87459 100644 --- a/test/abilities/magic_guard.test.ts +++ b/test/abilities/magic_guard.test.ts @@ -1,11 +1,12 @@ +import { BattlerIndex } from "#app/battle"; import { ArenaTagSide, getArenaTag } from "#app/data/arena-tag"; import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; +import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; @@ -55,7 +56,7 @@ describe("Abilities - Magic Guard", () => { game.move.select(Moves.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -66,30 +67,36 @@ describe("Abilities - Magic Guard", () => { expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); }); - it("ability should prevent damage caused by status effects but other non-damage effects still apply", async () => { - //Toxic keeps track of the turn counters -> important that Magic Guard keeps track of post-Toxic turns - game.override.statusEffect(StatusEffect.POISON); - - await game.startBattle([Species.MAGIKARP]); + it("should retain catch boost, toxic turn count and burn attack drops", async () => { + game.override.statusEffect(StatusEffect.TOXIC); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; game.move.select(Moves.SPLASH); + await game.phaseInterceptor.to("TurnEndPhase"); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has not taken damage from poison - * - The Pokemon's CatchRateMultiplier should be 1.5 - */ expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); + expect(leadPokemon.status).toBeTruthy(); + expect(leadPokemon.status!.toxicTurnCount).toBeGreaterThan(0); expect(getStatusEffectCatchRateMultiplier(leadPokemon.status!.effect)).toBe(1.5); + + await game.toNextTurn(); + + // give ourselves burn and ensure our attack indeed dropped + + const prevAtk = leadPokemon.getEffectiveStat(Stat.ATK); + leadPokemon.resetStatus(); + expect(leadPokemon.status).toBeFalsy(); + + leadPokemon.trySetStatus(StatusEffect.BURN); + expect(leadPokemon.status).toBeTruthy(); + const burntAtk = leadPokemon.getEffectiveStat(Stat.ATK); + expect(burntAtk).toBeCloseTo(prevAtk / 2, 1); }); it("ability effect should not persist when the ability is replaced", async () => { - game.override.enemyMoveset([Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED]); - game.override.statusEffect(StatusEffect.POISON); + game.override.enemyMoveset(Moves.WORRY_SEED).statusEffect(StatusEffect.POISON); await game.startBattle([Species.MAGIKARP]); @@ -97,7 +104,7 @@ describe("Abilities - Magic Guard", () => { game.move.select(Moves.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -116,7 +123,7 @@ describe("Abilities - Magic Guard", () => { const enemyPokemon = game.scene.getEnemyPokemon()!; - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -141,7 +148,7 @@ describe("Abilities - Magic Guard", () => { const toxicStartCounter = enemyPokemon.status!.toxicTurnCount; //should be 0 - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -166,7 +173,7 @@ describe("Abilities - Magic Guard", () => { const enemyPokemon = game.scene.getEnemyPokemon()!; - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -191,7 +198,7 @@ describe("Abilities - Magic Guard", () => { const enemyPokemon = game.scene.getEnemyPokemon()!; - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -216,7 +223,7 @@ describe("Abilities - Magic Guard", () => { const enemyPokemon = game.scene.getEnemyPokemon()!; - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -238,7 +245,7 @@ describe("Abilities - Magic Guard", () => { game.move.select(Moves.HIGH_JUMP_KICK); await game.move.forceMiss(); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -255,7 +262,7 @@ describe("Abilities - Magic Guard", () => { game.move.select(Moves.TAKE_DOWN); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -272,7 +279,7 @@ describe("Abilities - Magic Guard", () => { game.move.select(Moves.STRUGGLE); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -281,8 +288,7 @@ describe("Abilities - Magic Guard", () => { expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); }); - //This tests different move attributes than the recoil tests above - it("Magic Guard prevents self-damage from attacking moves", async () => { + it("should prevent self-damage from attacking moves", async () => { game.override.moveset([Moves.STEEL_BEAM]); await game.startBattle([Species.MAGIKARP]); @@ -290,7 +296,7 @@ describe("Abilities - Magic Guard", () => { game.move.select(Moves.STEEL_BEAM); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -299,17 +305,19 @@ describe("Abilities - Magic Guard", () => { expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); }); - /* - it("Magic Guard does not prevent self-damage from confusion", async () => { - await game.startBattle([Species.MAGIKARP]); + it("should not prevent self-damage from confusion", async () => { + game.override.enemyMoveset(Moves.CONFUSE_RAY).confusionActivation(true); + await game.classicMode.startBattle([Species.MAGIKARP]); game.move.select(Moves.CHARM); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(game.scene.getPlayerPokemon()!.isFullHp()).toBe(false); }); -*/ - it("Magic Guard does not prevent self-damage from non-attacking moves", async () => { + it("should not prevent self-damage from non-attacking moves", async () => { game.override.moveset([Moves.BELLY_DRUM]); await game.startBattle([Species.MAGIKARP]); @@ -317,7 +325,7 @@ describe("Abilities - Magic Guard", () => { game.move.select(Moves.BELLY_DRUM); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -327,11 +335,7 @@ describe("Abilities - Magic Guard", () => { }); it("Magic Guard prevents damage from abilities with PostTurnHurtIfSleepingAbAttr", async () => { - //Tests the ability Bad Dreams - game.override.statusEffect(StatusEffect.SLEEP); - //enemy pokemon is given Spore just in case player pokemon somehow awakens during test - game.override.enemyMoveset([Moves.SPORE, Moves.SPORE, Moves.SPORE, Moves.SPORE]); - game.override.enemyAbility(Abilities.BAD_DREAMS); + game.override.statusEffect(StatusEffect.SLEEP).enemyMoveset(Moves.SPORE).enemyAbility(Abilities.BAD_DREAMS); await game.startBattle([Species.MAGIKARP]); @@ -339,7 +343,7 @@ describe("Abilities - Magic Guard", () => { game.move.select(Moves.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -350,10 +354,8 @@ describe("Abilities - Magic Guard", () => { expect(leadPokemon.status!.effect).toBe(StatusEffect.SLEEP); }); - it("Magic Guard prevents damage from abilities with PostFaintContactDamageAbAttr", async () => { - //Tests the abilities Innards Out/Aftermath - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.AFTERMATH); + it("should prevent damage from abilities with PostFaintContactDamageAbAttr", async () => { + game.override.moveset([Moves.TACKLE]).enemyAbility(Abilities.AFTERMATH); await game.startBattle([Species.MAGIKARP]); @@ -363,7 +365,7 @@ describe("Abilities - Magic Guard", () => { enemyPokemon.hp = 1; game.move.select(Moves.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -386,7 +388,7 @@ describe("Abilities - Magic Guard", () => { const enemyPokemon = game.scene.getEnemyPokemon()!; game.move.select(Moves.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -409,7 +411,7 @@ describe("Abilities - Magic Guard", () => { const enemyPokemon = game.scene.getEnemyPokemon()!; game.move.select(Moves.ABSORB); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: @@ -428,7 +430,7 @@ describe("Abilities - Magic Guard", () => { await game.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; game.move.select(Moves.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); + await game.phaseInterceptor.to("TurnEndPhase"); /** * Expect: diff --git a/test/abilities/mycelium_might.test.ts b/test/abilities/mycelium_might.test.ts index 4a5700045fa..28603784f1b 100644 --- a/test/abilities/mycelium_might.test.ts +++ b/test/abilities/mycelium_might.test.ts @@ -24,13 +24,15 @@ describe("Abilities - Mycelium Might", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.disableCrits(); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.CLEAR_BODY); - game.override.enemyMoveset([Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK]); - game.override.ability(Abilities.MYCELIUM_MIGHT); - game.override.moveset([Moves.QUICK_ATTACK, Moves.BABY_DOLL_EYES]); + game.override + .battleStyle("single") + .disableCrits() + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.CLEAR_BODY) + + .enemyMoveset(Moves.QUICK_ATTACK) + .ability(Abilities.MYCELIUM_MIGHT) + .moveset([Moves.QUICK_ATTACK, Moves.BABY_DOLL_EYES]); }); /** @@ -64,8 +66,8 @@ describe("Abilities - Mycelium Might", () => { }, 20000); it("will still go first if a status move that is in a higher priority bracket than the opponent's move is used", async () => { - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.startBattle([Species.REGIELEKI]); + game.override.enemyMoveset(Moves.TACKLE); + await game.classicMode.startBattle([Species.REGIELEKI]); const enemyPokemon = game.scene.getEnemyPokemon(); const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); diff --git a/test/abilities/power_construct.test.ts b/test/abilities/power_construct.test.ts index 0ff90a2c0df..67005f5c87e 100644 --- a/test/abilities/power_construct.test.ts +++ b/test/abilities/power_construct.test.ts @@ -25,10 +25,11 @@ describe("Abilities - POWER CONSTRUCT", () => { beforeEach(() => { game = new GameManager(phaserGame); const moveToUse = Moves.SPLASH; - game.override.battleStyle("single"); - game.override.ability(Abilities.POWER_CONSTRUCT); - game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override + .battleStyle("single") + .ability(Abilities.POWER_CONSTRUCT) + .moveset([moveToUse]) + .enemyMoveset(Moves.TACKLE); }); test("check if fainted 50% Power Construct Pokemon switches to base form on arena reset", async () => { diff --git a/test/abilities/protean.test.ts b/test/abilities/protean.test.ts index 8e6b69dabd6..5d910ecfb1f 100644 --- a/test/abilities/protean.test.ts +++ b/test/abilities/protean.test.ts @@ -29,11 +29,12 @@ describe("Abilities - Protean", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.ability(Abilities.PROTEAN); - game.override.startingLevel(100); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset([Moves.ENDURE, Moves.ENDURE, Moves.ENDURE, Moves.ENDURE]); + game.override + .battleStyle("single") + .ability(Abilities.PROTEAN) + .startingLevel(100) + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.ENDURE); }); test("ability applies and changes a pokemon's type", async () => { @@ -173,8 +174,7 @@ describe("Abilities - Protean", () => { }); test("ability applies correctly even if the pokemon's move is protected against", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); + game.override.moveset([Moves.TACKLE]).enemyMoveset(Moves.PROTECT); await game.startBattle([Species.MAGIKARP]); diff --git a/test/abilities/sand_veil.test.ts b/test/abilities/sand_veil.test.ts index b82c79c681b..b7741cc4b84 100644 --- a/test/abilities/sand_veil.test.ts +++ b/test/abilities/sand_veil.test.ts @@ -28,13 +28,15 @@ describe("Abilities - Sand Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.moveset([Moves.SPLASH]); - game.override.enemySpecies(Species.MEOWSCARADA); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.enemyMoveset([Moves.TWISTER, Moves.TWISTER, Moves.TWISTER, Moves.TWISTER]); - game.override.startingLevel(100); - game.override.enemyLevel(100); - game.override.weather(WeatherType.SANDSTORM).battleStyle("double"); + game.override + .moveset([Moves.SPLASH]) + .enemySpecies(Species.MEOWSCARADA) + .enemyAbility(Abilities.INSOMNIA) + .enemyMoveset(Moves.TWISTER) + .startingLevel(100) + .enemyLevel(100) + .weather(WeatherType.SANDSTORM) + .battleStyle("double"); }); test("ability should increase the evasiveness of the source", async () => { diff --git a/test/abilities/schooling.test.ts b/test/abilities/schooling.test.ts index 803b4d2062a..1bb5c794a49 100644 --- a/test/abilities/schooling.test.ts +++ b/test/abilities/schooling.test.ts @@ -25,10 +25,7 @@ describe("Abilities - SCHOOLING", () => { beforeEach(() => { game = new GameManager(phaserGame); const moveToUse = Moves.SPLASH; - game.override.battleStyle("single"); - game.override.ability(Abilities.SCHOOLING); - game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override.battleStyle("single").ability(Abilities.SCHOOLING).moveset([moveToUse]).enemyMoveset(Moves.TACKLE); }); test("check if fainted pokemon switches to base form on arena reset", async () => { diff --git a/test/abilities/screen_cleaner.test.ts b/test/abilities/screen_cleaner.test.ts index 840291f6420..1f45b44614f 100644 --- a/test/abilities/screen_cleaner.test.ts +++ b/test/abilities/screen_cleaner.test.ts @@ -30,8 +30,7 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Aurora Veil", async () => { - game.override.moveset([Moves.HAIL]); - game.override.enemyMoveset([Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL]); + game.override.moveset([Moves.HAIL]).enemyMoveset(Moves.AURORA_VEIL); await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); @@ -48,7 +47,7 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Light Screen", async () => { - game.override.enemyMoveset([Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN]); + game.override.enemyMoveset(Moves.LIGHT_SCREEN); await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); @@ -65,7 +64,7 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Reflect", async () => { - game.override.enemyMoveset([Moves.REFLECT, Moves.REFLECT, Moves.REFLECT, Moves.REFLECT]); + game.override.enemyMoveset(Moves.REFLECT); await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); diff --git a/test/abilities/stall.test.ts b/test/abilities/stall.test.ts index 68b3fdedcd8..15533f973ae 100644 --- a/test/abilities/stall.test.ts +++ b/test/abilities/stall.test.ts @@ -22,12 +22,13 @@ describe("Abilities - Stall", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.disableCrits(); - game.override.enemySpecies(Species.REGIELEKI); - game.override.enemyAbility(Abilities.STALL); - game.override.enemyMoveset([Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK]); - game.override.moveset([Moves.QUICK_ATTACK, Moves.TACKLE]); + game.override + .battleStyle("single") + .disableCrits() + .enemySpecies(Species.REGIELEKI) + .enemyAbility(Abilities.STALL) + .enemyMoveset(Moves.QUICK_ATTACK) + .moveset([Moves.QUICK_ATTACK, Moves.TACKLE]); }); /** diff --git a/test/abilities/sweet_veil.test.ts b/test/abilities/sweet_veil.test.ts index e609aa6e7d2..dcce824d3ba 100644 --- a/test/abilities/sweet_veil.test.ts +++ b/test/abilities/sweet_veil.test.ts @@ -25,11 +25,12 @@ describe("Abilities - Sweet Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("double"); - game.override.moveset([Moves.SPLASH, Moves.REST, Moves.YAWN]); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset([Moves.POWDER, Moves.POWDER, Moves.POWDER, Moves.POWDER]); + game.override + .battleStyle("double") + .moveset([Moves.SPLASH, Moves.REST, Moves.YAWN]) + .enemySpecies(Species.MAGIKARP) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.POWDER); }); it("prevents the user and its allies from falling asleep", async () => { @@ -56,8 +57,8 @@ describe("Abilities - Sweet Veil", () => { }); it("causes Yawn to fail if used on the user or its allies", async () => { - game.override.enemyMoveset([Moves.YAWN, Moves.YAWN, Moves.YAWN, Moves.YAWN]); - await game.startBattle([Species.SWIRLIX, Species.MAGIKARP]); + game.override.enemyMoveset(Moves.YAWN); + await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]); game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); diff --git a/test/abilities/unseen_fist.test.ts b/test/abilities/unseen_fist.test.ts index 6c14e82fc39..d78ce8c5bbf 100644 --- a/test/abilities/unseen_fist.test.ts +++ b/test/abilities/unseen_fist.test.ts @@ -24,12 +24,13 @@ describe("Abilities - Unseen Fist", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.starterSpecies(Species.URSHIFU); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); - game.override.startingLevel(100); - game.override.enemyLevel(100); + game.override + .battleStyle("single") + .starterSpecies(Species.URSHIFU) + .enemySpecies(Species.SNORLAX) + .enemyMoveset(Moves.PROTECT) + .startingLevel(100) + .enemyLevel(100); }); it("should cause a contact move to ignore Protect", async () => @@ -73,8 +74,7 @@ async function testUnseenFistHitResult( protectMove: Moves, shouldSucceed = true, ): Promise { - game.override.moveset([attackMove]); - game.override.enemyMoveset([protectMove, protectMove, protectMove, protectMove]); + game.override.moveset([attackMove]).enemyMoveset(protectMove); await game.classicMode.startBattle(); diff --git a/test/battle/battle.test.ts b/test/battle/battle.test.ts index e980984580e..27ac8401e50 100644 --- a/test/battle/battle.test.ts +++ b/test/battle/battle.test.ts @@ -27,7 +27,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { Biome } from "#app/enums/biome"; -describe("Test Battle Phase", () => { +describe("Test - Battle Phase", () => { let phaserGame: Phaser.Game; let game: GameManager; @@ -91,28 +91,27 @@ describe("Test Battle Phase", () => { }, 20000); it("do attack wave 3 - single battle - regular - OHKO", async () => { - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); - game.override.startingLevel(2000); - game.override.startingWave(3).battleStyle("single"); - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.startBattle(); + game.override + .enemySpecies(Species.RATTATA) + .startingLevel(2000) + .startingWave(3) + .battleStyle("single") + .enemyMoveset(Moves.TACKLE); + await game.classicMode.startBattle([Species.MEWTWO]); game.move.select(Moves.TACKLE); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(SelectModifierPhase, false); }, 20000); it("do attack wave 3 - single battle - regular - NO OHKO with opponent using non damage attack", async () => { - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); - game.override.startingLevel(5); - game.override.startingWave(3); - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.enemyMoveset([Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP]); - game.override.battleStyle("single"); - await game.startBattle(); + game.override + .enemySpecies(Species.RATTATA) + .startingLevel(5) + .startingWave(3) + .moveset([Moves.TACKLE]) + .enemyAbility(Abilities.HYDRATION) + .enemyMoveset(Moves.TAIL_WHIP) + .battleStyle("single"); + await game.classicMode.startBattle([Species.MEWTWO]); game.move.select(Moves.TACKLE); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(TurnInitPhase, false); }, 20000); @@ -200,7 +199,23 @@ describe("Test Battle Phase", () => { selectStarterPhase.initBattle(starters); }); await game.phaseInterceptor.runFrom(SelectGenderPhase).to(SummonPhase); - }, 20000); + }); + + it.each([ + { name: "1v1", double: false, qty: 1 }, + { name: "2v1", double: false, qty: 2 }, + { name: "2v2", double: true, qty: 2 }, + { name: "4v2", double: true, qty: 4 }, + ])("should not crash when starting $name battle", async ({ double, qty }) => { + game.override + .battleStyle(double ? "double" : "single") + .enemySpecies(Species.MIGHTYENA) + .enemyAbility(Abilities.HYDRATION) + .ability(Abilities.HYDRATION); + + await game.classicMode.startBattle( + [Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE].slice(0, qty), + ); it("2vs1", async () => { game.override.battleStyle("single"); @@ -210,52 +225,21 @@ describe("Test Battle Phase", () => { await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); - - it("1vs1", async () => { - game.override.battleStyle("single"); - game.override.enemySpecies(Species.MIGHTYENA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); - await game.startBattle([Species.BLASTOISE]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); - - it("2vs2", async () => { - game.override.battleStyle("double"); - game.override.enemySpecies(Species.MIGHTYENA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); - game.override.startingWave(3); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); - - it("4vs2", async () => { - game.override.battleStyle("double"); - game.override.enemySpecies(Species.MIGHTYENA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); - game.override.startingWave(3); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); + }); it("kill opponent pokemon", async () => { const moveToUse = Moves.SPLASH; - game.override.battleStyle("single"); - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.ZEN_MODE); - game.override.startingLevel(2000); - game.override.startingWave(3); - game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.startBattle([Species.DARMANITAN, Species.CHARIZARD]); + game.override + .battleStyle("single") + .starterSpecies(Species.MEWTWO) + .enemySpecies(Species.RATTATA) + .enemyAbility(Abilities.HYDRATION) + .ability(Abilities.ZEN_MODE) + .startingLevel(2000) + .startingWave(3) + .moveset([moveToUse]) + .enemyMoveset(Moves.TACKLE); + await game.classicMode.startBattle([Species.DARMANITAN, Species.CHARIZARD]); game.move.select(moveToUse); await game.phaseInterceptor.to(DamageAnimPhase, false); @@ -266,16 +250,16 @@ describe("Test Battle Phase", () => { it("to next turn", async () => { const moveToUse = Moves.SPLASH; - game.override.battleStyle("single"); - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.ZEN_MODE); - game.override.startingLevel(2000); - game.override.startingWave(3); - game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.startBattle(); + game.override + .battleStyle("single") + .enemySpecies(Species.RATTATA) + .enemyAbility(Abilities.HYDRATION) + .ability(Abilities.ZEN_MODE) + .startingLevel(2000) + .startingWave(3) + .moveset([moveToUse]) + .enemyMoveset(Moves.TACKLE); + await game.classicMode.startBattle([Species.MEWTWO]); const turn = game.scene.currentBattle.turn; game.move.select(moveToUse); await game.toNextTurn(); @@ -293,8 +277,8 @@ describe("Test Battle Phase", () => { .startingLevel(2000) .startingWave(3) .startingBiome(Biome.LAKE) - .moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + .moveset([moveToUse]) + .enemyMoveset(Moves.TACKLE); await game.classicMode.startBattle(); const waveIndex = game.scene.currentBattle.waveIndex; game.move.select(moveToUse); diff --git a/test/battle/inverse_battle.test.ts b/test/battle/inverse_battle.test.ts index 799442bb603..168df0b9505 100644 --- a/test/battle/inverse_battle.test.ts +++ b/test/battle/inverse_battle.test.ts @@ -188,9 +188,7 @@ describe("Inverse Battle", () => { }); it("Conversion 2 should change the type to the resistive type - Conversion 2 against Dragonite", async () => { - game.override - .moveset([Moves.CONVERSION_2]) - .enemyMoveset([Moves.DRAGON_CLAW, Moves.DRAGON_CLAW, Moves.DRAGON_CLAW, Moves.DRAGON_CLAW]); + game.override.moveset([Moves.CONVERSION_2]).enemyMoveset(Moves.DRAGON_CLAW); await game.challengeMode.startBattle(); diff --git a/test/battle/special_battle.test.ts b/test/battle/special_battle.test.ts index 163f23e488d..a8d2d8e4ff2 100644 --- a/test/battle/special_battle.test.ts +++ b/test/battle/special_battle.test.ts @@ -23,12 +23,13 @@ describe("Test Battle Phase", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.enemySpecies(Species.RATTATA); - game.override.startingLevel(2000); - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override + .enemySpecies(Species.RATTATA) + .startingLevel(2000) + .moveset([Moves.TACKLE]) + .enemyAbility(Abilities.HYDRATION) + .ability(Abilities.HYDRATION) + .enemyMoveset(Moves.TACKLE); }); it("startBattle 2vs1 boss", async () => { diff --git a/test/items/leek.test.ts b/test/items/leek.test.ts index 9bde2c86339..e0fd4b74fed 100644 --- a/test/items/leek.test.ts +++ b/test/items/leek.test.ts @@ -25,7 +25,7 @@ describe("Items - Leek", () => { game.override .enemySpecies(Species.MAGIKARP) - .enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]) + .enemyMoveset(Moves.SPLASH) .startingHeldItems([{ name: "LEEK" }]) .moveset([Moves.TACKLE]) .battleStyle("single"); diff --git a/test/items/leftovers.test.ts b/test/items/leftovers.test.ts index 19739703f19..8be12f2bdf4 100644 --- a/test/items/leftovers.test.ts +++ b/test/items/leftovers.test.ts @@ -23,14 +23,15 @@ describe("Items - Leftovers", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.startingLevel(2000); - game.override.ability(Abilities.UNNERVE); - game.override.moveset([Moves.SPLASH]); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.UNNERVE); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - game.override.startingHeldItems([{ name: "LEFTOVERS", count: 1 }]); + game.override + .battleStyle("single") + .startingLevel(2000) + .ability(Abilities.UNNERVE) + .moveset([Moves.SPLASH]) + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.UNNERVE) + .enemyMoveset(Moves.TACKLE) + .startingHeldItems([{ name: "LEFTOVERS", count: 1 }]); }); it("leftovers works", async () => { diff --git a/test/moves/astonish.test.ts b/test/moves/astonish.test.ts index accddcd545d..fd3b3aced3c 100644 --- a/test/moves/astonish.test.ts +++ b/test/moves/astonish.test.ts @@ -27,13 +27,14 @@ describe("Moves - Astonish", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.moveset([Moves.ASTONISH, Moves.SPLASH]); - game.override.enemySpecies(Species.BLASTOISE); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - game.override.startingLevel(100); - game.override.enemyLevel(100); + game.override + .battleStyle("single") + .moveset([Moves.ASTONISH, Moves.SPLASH]) + .enemySpecies(Species.BLASTOISE) + .enemyAbility(Abilities.INSOMNIA) + .enemyMoveset(Moves.TACKLE) + .startingLevel(100) + .enemyLevel(100); vi.spyOn(allMoves[Moves.ASTONISH], "chance", "get").mockReturnValue(100); }); diff --git a/test/moves/aurora_veil.test.ts b/test/moves/aurora_veil.test.ts index 96e74ec5a9e..76569ac4a0e 100644 --- a/test/moves/aurora_veil.test.ts +++ b/test/moves/aurora_veil.test.ts @@ -36,14 +36,15 @@ describe("Moves - Aurora Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); globalScene = game.scene; - game.override.battleStyle("single"); - game.override.ability(Abilities.NONE); - game.override.moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]); - game.override.enemyLevel(100); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL]); - game.override.disableCrits(); - game.override.weather(WeatherType.HAIL); + game.override + .battleStyle("single") + .ability(Abilities.BALL_FETCH) + .moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]) + .enemyLevel(100) + .enemySpecies(Species.MAGIKARP) + .enemyMoveset(Moves.AURORA_VEIL) + .disableCrits() + .weather(WeatherType.HAIL); }); it("reduces damage of physical attacks by half in a single battle", async () => { diff --git a/test/moves/double_team.test.ts b/test/moves/double_team.test.ts index 8eac6be11f4..dc7f78617b0 100644 --- a/test/moves/double_team.test.ts +++ b/test/moves/double_team.test.ts @@ -23,13 +23,14 @@ describe("Moves - Double Team", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.moveset([Moves.DOUBLE_TEAM]); - game.override.disableCrits(); - game.override.ability(Abilities.BALL_FETCH); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override + .battleStyle("single") + .moveset([Moves.DOUBLE_TEAM]) + .disableCrits() + .ability(Abilities.BALL_FETCH) + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.TACKLE); }); it("raises the user's EVA stat stage by 1", async () => { diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax_cannon.test.ts index 6c4f1a321e3..48d10461c14 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax_cannon.test.ts @@ -29,8 +29,14 @@ describe("Moves - Dynamax Cannon", () => { dynamaxCannon = allMoves[Moves.DYNAMAX_CANNON]; game = new GameManager(phaserGame); - game.override.moveset([dynamaxCannon.id]); - game.override.startingLevel(200); + game.override + .moveset(Moves.DYNAMAX_CANNON) + .startingLevel(200) + .levelCap(10) + .battleStyle("single") + .disableCrits() + .enemySpecies(Species.MAGIKARP) + .enemyMoveset(Moves.SPLASH); // Note that, for Waves 1-10, the level cap is 10 game.override.startingWave(1); diff --git a/test/moves/flower_shield.test.ts b/test/moves/flower_shield.test.ts index 4840c6f018f..d0761dc73c5 100644 --- a/test/moves/flower_shield.test.ts +++ b/test/moves/flower_shield.test.ts @@ -74,9 +74,7 @@ describe("Moves - Flower Shield", () => { * See semi-vulnerable state tags. {@linkcode SemiInvulnerableTag} */ it("does not raise DEF stat stage for a Pokemon in semi-vulnerable state", async () => { - game.override.enemySpecies(Species.PARAS); - game.override.enemyMoveset([Moves.DIG, Moves.DIG, Moves.DIG, Moves.DIG]); - game.override.enemyLevel(50); + game.override.enemySpecies(Species.PARAS).enemyMoveset(Moves.DIG).enemyLevel(50); await game.startBattle([Species.CHERRIM]); const paras = game.scene.getEnemyPokemon()!; diff --git a/test/moves/freezy_frost.test.ts b/test/moves/freezy_frost.test.ts index 7cee9bfb372..2b2e06bfe74 100644 --- a/test/moves/freezy_frost.test.ts +++ b/test/moves/freezy_frost.test.ts @@ -27,7 +27,7 @@ describe("Moves - Freezy Frost", () => { .battleStyle("single") .enemySpecies(Species.RATTATA) .enemyLevel(100) - .enemyMoveset([Moves.HOWL, Moves.HOWL, Moves.HOWL, Moves.HOWL]) + .enemyMoveset(Moves.HOWL) .enemyAbility(Abilities.BALL_FETCH) .startingLevel(100) .moveset([Moves.FREEZY_FROST, Moves.HOWL, Moves.SPLASH]) @@ -55,7 +55,7 @@ describe("Moves - Freezy Frost", () => { }); it("should clear all stat changes even when enemy uses the move", async () => { - game.override.enemyMoveset([Moves.FREEZY_FROST, Moves.FREEZY_FROST, Moves.FREEZY_FROST, Moves.FREEZY_FROST]); + game.override.enemyMoveset(Moves.FREEZY_FROST); await game.classicMode.startBattle([Species.SHUCKLE]); // Shuckle for slower Howl on first turn so Freezy Frost doesn't affect it. const user = game.scene.getPlayerPokemon()!; diff --git a/test/moves/fusion_bolt.test.ts b/test/moves/fusion_bolt.test.ts index 33498a857a9..f948639a950 100644 --- a/test/moves/fusion_bolt.test.ts +++ b/test/moves/fusion_bolt.test.ts @@ -23,16 +23,15 @@ describe("Moves - Fusion Bolt", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.moveset([fusionBolt]); - game.override.startingLevel(1); - - game.override.enemySpecies(Species.RESHIRAM); - game.override.enemyAbility(Abilities.ROUGH_SKIN); - game.override.enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]); - - game.override.battleStyle("single"); - game.override.startingWave(97); - game.override.disableCrits(); + game.override + .moveset([fusionBolt]) + .startingLevel(1) + .enemySpecies(Species.RESHIRAM) + .enemyAbility(Abilities.ROUGH_SKIN) + .enemyMoveset(Moves.SPLASH) + .battleStyle("single") + .startingWave(97) + .disableCrits(); }); it("should not make contact", async () => { diff --git a/test/moves/fusion_flare.test.ts b/test/moves/fusion_flare.test.ts index 61bb126a75a..4daeed4d276 100644 --- a/test/moves/fusion_flare.test.ts +++ b/test/moves/fusion_flare.test.ts @@ -24,15 +24,14 @@ describe("Moves - Fusion Flare", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.moveset([fusionFlare]); - game.override.startingLevel(1); - - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset([Moves.REST, Moves.REST, Moves.REST, Moves.REST]); - - game.override.battleStyle("single"); - game.override.startingWave(97); - game.override.disableCrits(); + game.override + .moveset([fusionFlare]) + .startingLevel(1) + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.REST) + .battleStyle("single") + .startingWave(97) + .disableCrits(); }); it("should thaw freeze status condition", async () => { diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion_flare_bolt.test.ts index da2d48a7cdb..4a512ac55ef 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion_flare_bolt.test.ts @@ -33,15 +33,14 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { fusionFlare = allMoves[Moves.FUSION_FLARE]; fusionBolt = allMoves[Moves.FUSION_BOLT]; game = new GameManager(phaserGame); - game.override.moveset([fusionFlare.id, fusionBolt.id]); - game.override.startingLevel(1); - - game.override.enemySpecies(Species.RESHIRAM); - game.override.enemyMoveset([Moves.REST, Moves.REST, Moves.REST, Moves.REST]); - - game.override.battleStyle("double"); - game.override.startingWave(97); - game.override.disableCrits(); + game.override + .moveset([fusionFlare.id, fusionBolt.id]) + .startingLevel(1) + .enemySpecies(Species.RESHIRAM) + .enemyMoveset(Moves.REST) + .battleStyle("double") + .startingWave(97) + .disableCrits(); vi.spyOn(fusionFlare, "calculateBattlePower"); vi.spyOn(fusionBolt, "calculateBattlePower"); @@ -113,7 +112,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE should not double power of subsequent FUSION_BOLT if a move succeeded in between", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]); + game.override.enemyMoveset(Moves.SPLASH); await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); game.move.select(fusionFlare.id, 0, BattlerIndex.ENEMY); @@ -158,7 +157,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE and FUSION_BOLT alternating throughout turn should double power of subsequent moves", async () => { - game.override.enemyMoveset([fusionFlare.id, fusionFlare.id, fusionFlare.id, fusionFlare.id]); + game.override.enemyMoveset(fusionFlare.id); await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); const party = game.scene.getPlayerParty(); @@ -212,7 +211,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE and FUSION_BOLT alternating throughout turn should double power of subsequent moves if moves are aimed at allies", async () => { - game.override.enemyMoveset([fusionFlare.id, fusionFlare.id, fusionFlare.id, fusionFlare.id]); + game.override.enemyMoveset(fusionFlare.id); await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); const party = game.scene.getPlayerParty(); diff --git a/test/moves/light_screen.test.ts b/test/moves/light_screen.test.ts index 93d51ad7372..6ce51da68cd 100644 --- a/test/moves/light_screen.test.ts +++ b/test/moves/light_screen.test.ts @@ -35,13 +35,14 @@ describe("Moves - Light Screen", () => { beforeEach(() => { game = new GameManager(phaserGame); globalScene = game.scene; - game.override.battleStyle("single"); - game.override.ability(Abilities.NONE); - game.override.moveset([Moves.ABSORB, Moves.DAZZLING_GLEAM, Moves.TACKLE]); - game.override.enemyLevel(100); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN]); - game.override.disableCrits(); + game.override + .battleStyle("single") + .ability(Abilities.BALL_FETCH) + .moveset([Moves.ABSORB, Moves.DAZZLING_GLEAM, Moves.TACKLE]) + .enemyLevel(100) + .enemySpecies(Species.MAGIKARP) + .enemyMoveset(Moves.LIGHT_SCREEN) + .disableCrits(); }); it("reduces damage of special attacks by half in a single battle", async () => { diff --git a/test/moves/magnet_rise.test.ts b/test/moves/magnet_rise.test.ts index 62ad0c88091..bee0a612d3a 100644 --- a/test/moves/magnet_rise.test.ts +++ b/test/moves/magnet_rise.test.ts @@ -23,13 +23,14 @@ describe("Moves - Magnet Rise", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.starterSpecies(Species.MAGNEZONE); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset([Moves.DRILL_RUN, Moves.DRILL_RUN, Moves.DRILL_RUN, Moves.DRILL_RUN]); - game.override.disableCrits(); - game.override.enemyLevel(1); - game.override.moveset([moveToUse, Moves.SPLASH, Moves.GRAVITY, Moves.BATON_PASS]); + game.override + .battleStyle("single") + .starterSpecies(Species.MAGNEZONE) + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.DRILL_RUN) + .disableCrits() + .enemyLevel(1) + .moveset([moveToUse, Moves.SPLASH, Moves.GRAVITY, Moves.BATON_PASS]); }); it("MAGNET RISE", async () => { diff --git a/test/moves/reflect.test.ts b/test/moves/reflect.test.ts index 268d9ebb71b..191a1a45a09 100644 --- a/test/moves/reflect.test.ts +++ b/test/moves/reflect.test.ts @@ -35,13 +35,14 @@ describe("Moves - Reflect", () => { beforeEach(() => { game = new GameManager(phaserGame); globalScene = game.scene; - game.override.battleStyle("single"); - game.override.ability(Abilities.NONE); - game.override.moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]); - game.override.enemyLevel(100); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.REFLECT, Moves.REFLECT, Moves.REFLECT, Moves.REFLECT]); - game.override.disableCrits(); + game.override + .battleStyle("single") + .ability(Abilities.NONE) + .moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]) + .enemyLevel(100) + .enemySpecies(Species.MAGIKARP) + .enemyMoveset(Moves.REFLECT) + .disableCrits(); }); it("reduces damage of physical attacks by half in a single battle", async () => { diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index 81ea353a120..7f7e5d8627c 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -28,7 +28,7 @@ describe("Moves - Retaliate", () => { game.override .battleStyle("single") .enemySpecies(Species.SNORLAX) - .enemyMoveset([Moves.RETALIATE, Moves.RETALIATE, Moves.RETALIATE, Moves.RETALIATE]) + .enemyMoveset(Moves.RETALIATE) .enemyLevel(100) .moveset([Moves.RETALIATE, Moves.SPLASH]) .startingLevel(80) diff --git a/test/moves/swallow.test.ts b/test/moves/swallow.test.ts index d548522068b..936a1ccba77 100644 --- a/test/moves/swallow.test.ts +++ b/test/moves/swallow.test.ts @@ -27,15 +27,14 @@ describe("Moves - Swallow", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.NONE); - game.override.enemyLevel(2000); - - game.override.moveset([Moves.SWALLOW, Moves.SWALLOW, Moves.SWALLOW, Moves.SWALLOW]); - game.override.ability(Abilities.NONE); + game.override + .battleStyle("single") + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.SPLASH) + .enemyAbility(Abilities.NONE) + .enemyLevel(2000) + .moveset(Moves.SWALLOW) + .ability(Abilities.NONE); }); describe("consumes all stockpile stacks to heal (scaling with stacks)", () => { diff --git a/test/moves/tackle.test.ts b/test/moves/tackle.test.ts index 162836cd181..0147b98a79e 100644 --- a/test/moves/tackle.test.ts +++ b/test/moves/tackle.test.ts @@ -24,13 +24,14 @@ describe("Moves - Tackle", () => { beforeEach(() => { game = new GameManager(phaserGame); const moveToUse = Moves.TACKLE; - game.override.battleStyle("single"); - game.override.enemySpecies(Species.MAGIKARP); - game.override.startingLevel(1); - game.override.startingWave(97); - game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.GROWTH, Moves.GROWTH, Moves.GROWTH, Moves.GROWTH]); - game.override.disableCrits(); + game.override + .battleStyle("single") + .enemySpecies(Species.MAGIKARP) + .startingLevel(1) + .startingWave(97) + .moveset([moveToUse]) + .enemyMoveset(Moves.GROWTH) + .disableCrits(); }); it("TACKLE against ghost", async () => { diff --git a/test/moves/tidy_up.test.ts b/test/moves/tidy_up.test.ts index ba7a1e07959..103b2d0a1c5 100644 --- a/test/moves/tidy_up.test.ts +++ b/test/moves/tidy_up.test.ts @@ -37,8 +37,7 @@ describe("Moves - Tidy Up", () => { }); it("spikes are cleared", async () => { - game.override.moveset([Moves.SPIKES, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.SPIKES, Moves.SPIKES, Moves.SPIKES, Moves.SPIKES]); + game.override.moveset([Moves.SPIKES, Moves.TIDY_UP]).enemyMoveset(Moves.SPIKES); await game.classicMode.startBattle(); game.move.select(Moves.SPIKES); @@ -49,8 +48,7 @@ describe("Moves - Tidy Up", () => { }, 20000); it("stealth rocks are cleared", async () => { - game.override.moveset([Moves.STEALTH_ROCK, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.STEALTH_ROCK, Moves.STEALTH_ROCK, Moves.STEALTH_ROCK, Moves.STEALTH_ROCK]); + game.override.moveset([Moves.STEALTH_ROCK, Moves.TIDY_UP]).enemyMoveset(Moves.STEALTH_ROCK); await game.classicMode.startBattle(); game.move.select(Moves.STEALTH_ROCK); @@ -61,8 +59,7 @@ describe("Moves - Tidy Up", () => { }, 20000); it("toxic spikes are cleared", async () => { - game.override.moveset([Moves.TOXIC_SPIKES, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.TOXIC_SPIKES, Moves.TOXIC_SPIKES, Moves.TOXIC_SPIKES, Moves.TOXIC_SPIKES]); + game.override.moveset([Moves.TOXIC_SPIKES, Moves.TIDY_UP]).enemyMoveset(Moves.TOXIC_SPIKES); await game.classicMode.startBattle(); game.move.select(Moves.TOXIC_SPIKES); @@ -73,8 +70,7 @@ describe("Moves - Tidy Up", () => { }, 20000); it("sticky webs are cleared", async () => { - game.override.moveset([Moves.STICKY_WEB, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.STICKY_WEB, Moves.STICKY_WEB, Moves.STICKY_WEB, Moves.STICKY_WEB]); + game.override.moveset([Moves.STICKY_WEB, Moves.TIDY_UP]).enemyMoveset(Moves.STICKY_WEB); await game.classicMode.startBattle(); @@ -86,8 +82,7 @@ describe("Moves - Tidy Up", () => { }, 20000); it("substitutes are cleared", async () => { - game.override.moveset([Moves.SUBSTITUTE, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.SUBSTITUTE, Moves.SUBSTITUTE, Moves.SUBSTITUTE, Moves.SUBSTITUTE]); + game.override.moveset([Moves.SUBSTITUTE, Moves.TIDY_UP]).enemyMoveset(Moves.SUBSTITUTE); await game.classicMode.startBattle();