From b341943ea8fd853696128a3f0f3e24c228627102 Mon Sep 17 00:00:00 2001 From: Bertie690 Date: Mon, 21 Apr 2025 23:34:59 -0400 Subject: [PATCH] huhjjjjjb --- test/abilities/harvest.test.ts | 40 +++++++++++++++++++++++++++++++-- test/moves/toxic_spikes.test.ts | 2 +- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/test/abilities/harvest.test.ts b/test/abilities/harvest.test.ts index d3db952c5be..de2318569b8 100644 --- a/test/abilities/harvest.test.ts +++ b/test/abilities/harvest.test.ts @@ -1,3 +1,4 @@ +import { BattlerIndex } from "#app/battle"; import type Pokemon from "#app/field/pokemon"; import { BerryModifier, PreserveBerryModifier } from "#app/modifier/modifier"; import type { ModifierOverride } from "#app/modifier/modifier-type"; @@ -115,8 +116,7 @@ describe("Abilities - Harvest", () => { expect(getPlayerBerries()).toHaveLength(1); }); - // TODO: Figure out why this is borking...??? - it("remembers berries eaten tracker across waves and save/reload", async () => { + it("remembers berries eaten array across waves and save/reload", async () => { game.override .startingHeldItems([{ name: "BERRY", type: BerryType.PETAYA, count: 2 }]) .ability(Abilities.BALL_FETCH); // don't actually need harvest for this test @@ -145,6 +145,42 @@ describe("Abilities - Harvest", () => { expect(regielekiReloaded.battleData.berriesEaten).toEqual([BerryType.PETAYA]); }); + it("keeps berries eaten across reloads", async () => { + game.override + .startingHeldItems([{ name: "BERRY", type: BerryType.PETAYA, count: 1 }]) + .moveset([Moves.SPLASH, Moves.EARTHQUAKE]) + .enemyMoveset([Moves.SUPER_FANG, Moves.HEAL_PULSE]) + .enemyAbility(Abilities.COMPOUND_EYES); + await game.classicMode.startBattle([Species.REGIELEKI]); + + const regieleki = game.scene.getPlayerPokemon()!; + regieleki.hp = regieleki.getMaxHp() / 4 + 1; + + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.SUPER_FANG); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toNextTurn(); + + // ate 1 berry and recovered it + expect(regieleki.battleData.berriesEaten).toEqual([]); + expect(getPlayerBerries()).toEqual([expect.objectContaining({ berryType: BerryType.PETAYA, stackCount: 1 })]); + expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.SPATK)).toBe(1); + + // heal up so harvest doesn't proc and kill enemy + game.move.select(Moves.EARTHQUAKE); + await game.forceEnemyMove(Moves.HEAL_PULSE); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toNextWave(); + + expect(getPlayerBerries()).toEqual([expect.objectContaining({ berryType: BerryType.PETAYA, stackCount: 1 })]); + expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.SPATK)).toBe(1); + + await game.reload.reloadSession(); + + expect(getPlayerBerries()).toEqual([expect.objectContaining({ berryType: BerryType.PETAYA, stackCount: 1 })]); + expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.SPATK)).toBe(1); + }); + it("cannot restore capped berries", async () => { const initBerries: ModifierOverride[] = [ { name: "BERRY", type: BerryType.LUM, count: 2 }, diff --git a/test/moves/toxic_spikes.test.ts b/test/moves/toxic_spikes.test.ts index 624db27bb92..b1fdc7f39c2 100644 --- a/test/moves/toxic_spikes.test.ts +++ b/test/moves/toxic_spikes.test.ts @@ -129,7 +129,7 @@ describe("Moves - Toxic Spikes", () => { await game.phaseInterceptor.to("BattleEndPhase"); await game.toNextWave(); - const sessionData: SessionSaveData = gameData["getSessionSaveData"](); + const sessionData: SessionSaveData = gameData.getSessionSaveData(); localStorage.setItem("sessionTestData", encrypt(JSON.stringify(sessionData), true)); const recoveredData: SessionSaveData = gameData.parseSessionData( decrypt(localStorage.getItem("sessionTestData")!, true),