From 175f2b74e92b0efe574d24a49930c95e4e655a79 Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Thu, 10 Jul 2025 19:21:40 +0200 Subject: [PATCH] Fixed some ME tests --- .../fiery-fallout-encounter.test.ts | 20 +++++++------- .../global-trade-system-encounter.test.ts | 20 ++++---------- .../the-strong-stuff-encounter.test.ts | 27 +++++++------------ 3 files changed, 24 insertions(+), 43 deletions(-) diff --git a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts index 16adc47ff11..b5e54a23157 100644 --- a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts +++ b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts @@ -16,7 +16,6 @@ import { } from "#test/mystery-encounter/encounter-test-utils"; import { MoveId } from "#enums/move-id"; import type BattleScene from "#app/battle-scene"; -import { AttackTypeBoosterModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; import { PokemonType } from "#enums/pokemon-type"; import { Status } from "#app/data/status-effect"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; @@ -30,6 +29,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { AbilityId } from "#enums/ability-id"; import i18next from "i18next"; import { StatusEffect } from "#enums/status-effect"; +import { HeldItemCategoryId } from "#enums/held-item-id"; const namespace = "mysteryEncounters/fieryFallout"; /** Arcanine and Ninetails for 2 Fire types. Lapras, Gengar, Abra for burnable mon. */ @@ -179,13 +179,10 @@ describe("Fiery Fallout - Mystery Encounter", () => { await game.phaseInterceptor.to(SelectModifierPhase, false); expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); - const leadPokemonId = scene.getPlayerParty()?.[0].id; - const leadPokemonItems = scene.findModifiers( - m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === leadPokemonId, - true, - ) as PokemonHeldItemModifier[]; - const item = leadPokemonItems.find(i => i instanceof AttackTypeBoosterModifier); - expect(item).toBeDefined; + const hasAttackBooster = scene + .getPlayerParty()?.[0] + .heldItemManager.hasItemCategory(HeldItemCategoryId.TYPE_ATTACK_BOOSTER); + expect(hasAttackBooster).toBe(true); }); }); @@ -268,9 +265,10 @@ describe("Fiery Fallout - Mystery Encounter", () => { await game.phaseInterceptor.to(SelectModifierPhase, false); expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); - const leadPokemonItems = scene.getPlayerParty()?.[0].getHeldItems() as PokemonHeldItemModifier[]; - const item = leadPokemonItems.find(i => i instanceof AttackTypeBoosterModifier); - expect(item).toBeDefined; + const hasAttackBooster = scene + .getPlayerParty()?.[0] + .heldItemManager.hasItemCategory(HeldItemCategoryId.TYPE_ATTACK_BOOSTER); + expect(hasAttackBooster).toBe(true); }); it("should leave encounter without battle", async () => { diff --git a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts index 5dc3ba90bb0..8a878441e7e 100644 --- a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -9,9 +9,6 @@ import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { PokemonNatureWeightModifier } from "#app/modifier/modifier"; -import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { modifierTypes } from "#app/data/data-lists"; import { GlobalTradeSystemEncounter } from "#app/data/mystery-encounters/encounters/global-trade-system-encounter"; import { CIVILIZATION_ENCOUNTER_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; @@ -19,6 +16,7 @@ import { UiMode } from "#enums/ui-mode"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { RewardTier } from "#enums/reward-tier"; import * as Utils from "#app/utils/common"; +import { HeldItemId } from "#enums/held-item-id"; const namespace = "mysteryEncounters/globalTradeSystem"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; @@ -218,11 +216,7 @@ describe("Global Trade System - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.GLOBAL_TRADE_SYSTEM, defaultParty); // Set 2 Soul Dew on party lead - scene.modifiers = []; - const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; - const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; - modifier.stackCount = 2; - scene.addModifier(modifier, true, false, false, true); + scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW, 2); await scene.updateItems(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); @@ -235,8 +229,8 @@ describe("Global Trade System - Mystery Encounter", () => { ) as ModifierSelectUiHandler; expect(modifierSelectHandler.options.length).toEqual(1); expect(modifierSelectHandler.options[0].modifierTypeOption.type.tier).toBe(RewardTier.MASTER); - const soulDewAfter = scene.findModifier(m => m instanceof PokemonNatureWeightModifier); - expect(soulDewAfter?.stackCount).toBe(1); + const soulDewAfter = scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SOUL_DEW); + expect(soulDewAfter).toBe(1); }); it("should leave encounter without battle", async () => { @@ -245,11 +239,7 @@ describe("Global Trade System - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.GLOBAL_TRADE_SYSTEM, defaultParty); // Set 1 Soul Dew on party lead - scene.modifiers = []; - const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; - const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; - modifier.stackCount = 1; - scene.addModifier(modifier, true, false, false, true); + scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW, 1); await scene.updateItems(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); diff --git a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts index c1f13d61817..39aa4c41757 100644 --- a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts @@ -15,12 +15,10 @@ import { MoveId } from "#enums/move-id"; import type BattleScene from "#app/battle-scene"; import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter"; import { Nature } from "#enums/nature"; -import { BerryType } from "#enums/berry-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { PokemonMove } from "#app/data/moves/pokemon-move"; import { UiMode } from "#enums/ui-mode"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { BerryModifier, PokemonBaseStatTotalModifier } from "#app/modifier/modifier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; @@ -29,6 +27,9 @@ import { CommandPhase } from "#app/phases/command-phase"; import { MovePhase } from "#app/phases/move-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { AbilityId } from "#enums/ability-id"; +import { applyHeldItems } from "#app/items/all-held-items"; +import { HeldItemEffect } from "#app/items/held-item"; +import { HeldItemId } from "#enums/held-item-id"; const namespace = "mysteryEncounters/theStrongStuff"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; @@ -113,7 +114,7 @@ describe("The Strong Stuff - Mystery Encounter", () => { customPokemonData: new CustomPokemonData({ spriteScale: 1.25 }), nature: Nature.HARDY, moveSet: [MoveId.INFESTATION, MoveId.SALT_CURE, MoveId.GASTRO_ACID, MoveId.HEAL_ORDER], - modifierConfigs: expect.any(Array), + heldItemConfig: expect.any(Array), tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: expect.any(Function), }, @@ -149,7 +150,7 @@ describe("The Strong Stuff - Mystery Encounter", () => { const bstsAfter = scene.getPlayerParty().map(p => { const baseStats = p.getSpeciesForm().baseStats.slice(0); - scene.applyModifiers(PokemonBaseStatTotalModifier, true, p, baseStats); + applyHeldItems(HeldItemEffect.BASE_STAT_TOTAL, { pokemon: p, baseStats: baseStats }); return baseStats.reduce((a, b) => a + b); }); @@ -198,19 +199,11 @@ describe("The Strong Stuff - Mystery Encounter", () => { expect(enemyField[0].summonData.statStages).toEqual([0, 1, 0, 1, 0, 0, 0]); const shuckleItems = enemyField[0].getHeldItems(); expect(shuckleItems.length).toBe(5); - expect(shuckleItems.find(m => m instanceof BerryModifier && m.berryType === BerryType.SITRUS)?.stackCount).toBe( - 1, - ); - expect(shuckleItems.find(m => m instanceof BerryModifier && m.berryType === BerryType.ENIGMA)?.stackCount).toBe( - 1, - ); - expect(shuckleItems.find(m => m instanceof BerryModifier && m.berryType === BerryType.GANLON)?.stackCount).toBe( - 1, - ); - expect(shuckleItems.find(m => m instanceof BerryModifier && m.berryType === BerryType.APICOT)?.stackCount).toBe( - 1, - ); - expect(shuckleItems.find(m => m instanceof BerryModifier && m.berryType === BerryType.LUM)?.stackCount).toBe(2); + expect(enemyField[0].heldItemManager.getStack(HeldItemId.SITRUS_BERRY)).toBe(1); + expect(enemyField[0].heldItemManager.getStack(HeldItemId.ENIGMA_BERRY)).toBe(1); + expect(enemyField[0].heldItemManager.getStack(HeldItemId.GANLON_BERRY)).toBe(1); + expect(enemyField[0].heldItemManager.getStack(HeldItemId.APICOT_BERRY)).toBe(1); + expect(enemyField[0].heldItemManager.getStack(HeldItemId.LUM_BERRY)).toBe(2); expect(enemyField[0].moveset).toEqual([ new PokemonMove(MoveId.INFESTATION), new PokemonMove(MoveId.SALT_CURE),