Fixed some ME tests

This commit is contained in:
Wlowscha 2025-07-10 19:21:40 +02:00
parent 61cd122223
commit 175f2b74e9
No known key found for this signature in database
GPG Key ID: 3C8F1AD330565D04
3 changed files with 24 additions and 43 deletions

View File

@ -16,7 +16,6 @@ import {
} from "#test/mystery-encounter/encounter-test-utils"; } from "#test/mystery-encounter/encounter-test-utils";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import type BattleScene from "#app/battle-scene"; import type BattleScene from "#app/battle-scene";
import { AttackTypeBoosterModifier, PokemonHeldItemModifier } from "#app/modifier/modifier";
import { PokemonType } from "#enums/pokemon-type"; import { PokemonType } from "#enums/pokemon-type";
import { Status } from "#app/data/status-effect"; import { Status } from "#app/data/status-effect";
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; 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 { AbilityId } from "#enums/ability-id";
import i18next from "i18next"; import i18next from "i18next";
import { StatusEffect } from "#enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import { HeldItemCategoryId } from "#enums/held-item-id";
const namespace = "mysteryEncounters/fieryFallout"; const namespace = "mysteryEncounters/fieryFallout";
/** Arcanine and Ninetails for 2 Fire types. Lapras, Gengar, Abra for burnable mon. */ /** 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); await game.phaseInterceptor.to(SelectModifierPhase, false);
expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name);
const leadPokemonId = scene.getPlayerParty()?.[0].id; const hasAttackBooster = scene
const leadPokemonItems = scene.findModifiers( .getPlayerParty()?.[0]
m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === leadPokemonId, .heldItemManager.hasItemCategory(HeldItemCategoryId.TYPE_ATTACK_BOOSTER);
true, expect(hasAttackBooster).toBe(true);
) as PokemonHeldItemModifier[];
const item = leadPokemonItems.find(i => i instanceof AttackTypeBoosterModifier);
expect(item).toBeDefined;
}); });
}); });
@ -268,9 +265,10 @@ describe("Fiery Fallout - Mystery Encounter", () => {
await game.phaseInterceptor.to(SelectModifierPhase, false); await game.phaseInterceptor.to(SelectModifierPhase, false);
expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name);
const leadPokemonItems = scene.getPlayerParty()?.[0].getHeldItems() as PokemonHeldItemModifier[]; const hasAttackBooster = scene
const item = leadPokemonItems.find(i => i instanceof AttackTypeBoosterModifier); .getPlayerParty()?.[0]
expect(item).toBeDefined; .heldItemManager.hasItemCategory(HeldItemCategoryId.TYPE_ATTACK_BOOSTER);
expect(hasAttackBooster).toBe(true);
}); });
it("should leave encounter without battle", async () => { it("should leave encounter without battle", async () => {

View File

@ -9,9 +9,6 @@ import type BattleScene from "#app/battle-scene";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; 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 { GlobalTradeSystemEncounter } from "#app/data/mystery-encounters/encounters/global-trade-system-encounter";
import { CIVILIZATION_ENCOUNTER_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; import { CIVILIZATION_ENCOUNTER_BIOMES } from "#app/data/mystery-encounters/mystery-encounters";
import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; 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 ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler";
import { RewardTier } from "#enums/reward-tier"; import { RewardTier } from "#enums/reward-tier";
import * as Utils from "#app/utils/common"; import * as Utils from "#app/utils/common";
import { HeldItemId } from "#enums/held-item-id";
const namespace = "mysteryEncounters/globalTradeSystem"; const namespace = "mysteryEncounters/globalTradeSystem";
const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; 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); await game.runToMysteryEncounter(MysteryEncounterType.GLOBAL_TRADE_SYSTEM, defaultParty);
// Set 2 Soul Dew on party lead // Set 2 Soul Dew on party lead
scene.modifiers = []; scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW, 2);
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);
await scene.updateItems(true); await scene.updateItems(true);
await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 });
@ -235,8 +229,8 @@ describe("Global Trade System - Mystery Encounter", () => {
) as ModifierSelectUiHandler; ) as ModifierSelectUiHandler;
expect(modifierSelectHandler.options.length).toEqual(1); expect(modifierSelectHandler.options.length).toEqual(1);
expect(modifierSelectHandler.options[0].modifierTypeOption.type.tier).toBe(RewardTier.MASTER); expect(modifierSelectHandler.options[0].modifierTypeOption.type.tier).toBe(RewardTier.MASTER);
const soulDewAfter = scene.findModifier(m => m instanceof PokemonNatureWeightModifier); const soulDewAfter = scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SOUL_DEW);
expect(soulDewAfter?.stackCount).toBe(1); expect(soulDewAfter).toBe(1);
}); });
it("should leave encounter without battle", async () => { 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); await game.runToMysteryEncounter(MysteryEncounterType.GLOBAL_TRADE_SYSTEM, defaultParty);
// Set 1 Soul Dew on party lead // Set 1 Soul Dew on party lead
scene.modifiers = []; scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW, 1);
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);
await scene.updateItems(true); await scene.updateItems(true);
await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 });

View File

@ -15,12 +15,10 @@ import { MoveId } from "#enums/move-id";
import type BattleScene from "#app/battle-scene"; import type BattleScene from "#app/battle-scene";
import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter"; import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter";
import { Nature } from "#enums/nature"; import { Nature } from "#enums/nature";
import { BerryType } from "#enums/berry-type";
import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type";
import { PokemonMove } from "#app/data/moves/pokemon-move"; import { PokemonMove } from "#app/data/moves/pokemon-move";
import { UiMode } from "#enums/ui-mode"; import { UiMode } from "#enums/ui-mode";
import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; 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 { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; 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 { MovePhase } from "#app/phases/move-phase";
import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase";
import { AbilityId } from "#enums/ability-id"; 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 namespace = "mysteryEncounters/theStrongStuff";
const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA];
@ -113,7 +114,7 @@ describe("The Strong Stuff - Mystery Encounter", () => {
customPokemonData: new CustomPokemonData({ spriteScale: 1.25 }), customPokemonData: new CustomPokemonData({ spriteScale: 1.25 }),
nature: Nature.HARDY, nature: Nature.HARDY,
moveSet: [MoveId.INFESTATION, MoveId.SALT_CURE, MoveId.GASTRO_ACID, MoveId.HEAL_ORDER], 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], tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON],
mysteryEncounterBattleEffects: expect.any(Function), mysteryEncounterBattleEffects: expect.any(Function),
}, },
@ -149,7 +150,7 @@ describe("The Strong Stuff - Mystery Encounter", () => {
const bstsAfter = scene.getPlayerParty().map(p => { const bstsAfter = scene.getPlayerParty().map(p => {
const baseStats = p.getSpeciesForm().baseStats.slice(0); 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); 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]); expect(enemyField[0].summonData.statStages).toEqual([0, 1, 0, 1, 0, 0, 0]);
const shuckleItems = enemyField[0].getHeldItems(); const shuckleItems = enemyField[0].getHeldItems();
expect(shuckleItems.length).toBe(5); expect(shuckleItems.length).toBe(5);
expect(shuckleItems.find(m => m instanceof BerryModifier && m.berryType === BerryType.SITRUS)?.stackCount).toBe( expect(enemyField[0].heldItemManager.getStack(HeldItemId.SITRUS_BERRY)).toBe(1);
1, expect(enemyField[0].heldItemManager.getStack(HeldItemId.ENIGMA_BERRY)).toBe(1);
); expect(enemyField[0].heldItemManager.getStack(HeldItemId.GANLON_BERRY)).toBe(1);
expect(shuckleItems.find(m => m instanceof BerryModifier && m.berryType === BerryType.ENIGMA)?.stackCount).toBe( expect(enemyField[0].heldItemManager.getStack(HeldItemId.APICOT_BERRY)).toBe(1);
1, expect(enemyField[0].heldItemManager.getStack(HeldItemId.LUM_BERRY)).toBe(2);
);
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].moveset).toEqual([ expect(enemyField[0].moveset).toEqual([
new PokemonMove(MoveId.INFESTATION), new PokemonMove(MoveId.INFESTATION),
new PokemonMove(MoveId.SALT_CURE), new PokemonMove(MoveId.SALT_CURE),