mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-09 00:49:27 +02:00
Partially fixed delibirdy test
This commit is contained in:
parent
6fc7db8939
commit
88634ca081
@ -2911,6 +2911,19 @@ export default class BattleScene extends SceneBase {
|
||||
this.updateUIPositions();
|
||||
}
|
||||
|
||||
clearAllItems(): void {
|
||||
this.trainerItems.clearItems();
|
||||
this.enemyTrainerItems.clearItems();
|
||||
for (const p of this.getPlayerParty()) {
|
||||
p.heldItemManager.clearItems();
|
||||
}
|
||||
for (const p of this.getEnemyParty()) {
|
||||
p.heldItemManager.clearItems();
|
||||
}
|
||||
this.updateItems(false);
|
||||
this.updateUIPositions();
|
||||
}
|
||||
|
||||
setModifiersVisible(visible: boolean) {
|
||||
[this.itemBar, this.enemyItemBar].map(m => m.setVisible(visible));
|
||||
}
|
||||
|
@ -14,20 +14,9 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { DelibirdyEncounter } from "#app/data/mystery-encounters/encounters/delibirdy-encounter";
|
||||
import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters";
|
||||
import type { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
||||
import {
|
||||
BerryModifier,
|
||||
HealingBoosterModifier,
|
||||
HitHealModifier,
|
||||
LevelIncrementBoosterModifier,
|
||||
MoneyMultiplierModifier,
|
||||
PokemonInstantReviveModifier,
|
||||
PokemonNatureWeightModifier,
|
||||
PreserveBerryModifier,
|
||||
} from "#app/modifier/modifier";
|
||||
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases";
|
||||
import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||
import { modifierTypes } from "#app/data/data-lists";
|
||||
import { BerryType } from "#enums/berry-type";
|
||||
import { TrainerItemId } from "#enums/trainer-item-id";
|
||||
import { HeldItemId } from "#enums/held-item-id";
|
||||
|
||||
const namespace = "mysteryEncounters/delibirdy";
|
||||
const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA];
|
||||
@ -119,10 +108,7 @@ describe("Delibird-y - Mystery Encounter", () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
await runMysteryEncounterToEnd(game, 1);
|
||||
|
||||
const itemModifier = scene.findModifier(m => m instanceof MoneyMultiplierModifier) as MoneyMultiplierModifier;
|
||||
|
||||
expect(itemModifier).toBeDefined();
|
||||
expect(itemModifier?.stackCount).toBe(1);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.AMULET_COIN)).toBe(1);
|
||||
});
|
||||
|
||||
it("Should give the player a Shell Bell if they have max stacks of Amulet Coins", async () => {
|
||||
@ -130,21 +116,14 @@ describe("Delibird-y - Mystery Encounter", () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// Max Amulet Coins
|
||||
scene.modifiers = [];
|
||||
const amuletCoin = generateModifierType(modifierTypes.AMULET_COIN)!.newModifier() as MoneyMultiplierModifier;
|
||||
amuletCoin.stackCount = 5;
|
||||
scene.addModifier(amuletCoin, true, false, false, true);
|
||||
await scene.updateItems(true);
|
||||
scene.clearAllItems();
|
||||
scene.trainerItems.add(TrainerItemId.AMULET_COIN, 5);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 1);
|
||||
|
||||
const amuletCoinAfter = scene.findModifier(m => m instanceof MoneyMultiplierModifier);
|
||||
const shellBellAfter = scene.findModifier(m => m instanceof HitHealModifier);
|
||||
|
||||
expect(amuletCoinAfter).toBeDefined();
|
||||
expect(amuletCoinAfter?.stackCount).toBe(5);
|
||||
expect(shellBellAfter).toBeDefined();
|
||||
expect(shellBellAfter?.stackCount).toBe(1);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.AMULET_COIN)).toBe(5);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SHELL_BELL)).toBe(1);
|
||||
});
|
||||
|
||||
it("should be disabled if player does not have enough money", async () => {
|
||||
@ -199,111 +178,73 @@ describe("Delibird-y - Mystery Encounter", () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// Set 2 Sitrus berries on party lead
|
||||
scene.modifiers = [];
|
||||
const sitrus = generateModifierType(modifierTypes.BERRY, [BerryType.SITRUS])!;
|
||||
const sitrusMod = sitrus.newModifier(scene.getPlayerParty()[0]) as BerryModifier;
|
||||
sitrusMod.stackCount = 2;
|
||||
scene.addModifier(sitrusMod, true, false, false, true);
|
||||
await scene.updateItems(true);
|
||||
scene.clearAllItems();
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SITRUS_BERRY, 2);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
const sitrusAfter = scene.findModifier(m => m instanceof BerryModifier);
|
||||
const candyJarAfter = scene.findModifier(m => m instanceof LevelIncrementBoosterModifier);
|
||||
|
||||
expect(sitrusAfter?.stackCount).toBe(1);
|
||||
expect(candyJarAfter).toBeDefined();
|
||||
expect(candyJarAfter?.stackCount).toBe(1);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SITRUS_BERRY)).toBe(1);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.CANDY_JAR)).toBe(1);
|
||||
});
|
||||
|
||||
it("Should remove Reviver Seed and give the player a Berry Pouch", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// Set 1 Reviver Seed on party lead
|
||||
scene.modifiers = [];
|
||||
const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!;
|
||||
const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier;
|
||||
modifier.stackCount = 1;
|
||||
scene.addModifier(modifier, true, false, false, true);
|
||||
await scene.updateItems(true);
|
||||
scene.clearAllItems();
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.REVIVER_SEED);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
const reviverSeedAfter = scene.findModifier(m => m instanceof PokemonInstantReviveModifier);
|
||||
const berryPouchAfter = scene.findModifier(m => m instanceof PreserveBerryModifier);
|
||||
|
||||
expect(reviverSeedAfter).toBeUndefined();
|
||||
expect(berryPouchAfter).toBeDefined();
|
||||
expect(berryPouchAfter?.stackCount).toBe(1);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.REVIVER_SEED)).toBe(0);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.BERRY_POUCH)).toBe(1);
|
||||
});
|
||||
|
||||
it("Should give the player a Shell Bell if they have max stacks of Candy Jars", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// 99 Candy Jars
|
||||
scene.modifiers = [];
|
||||
const candyJar = generateModifierType(modifierTypes.CANDY_JAR)!.newModifier() as LevelIncrementBoosterModifier;
|
||||
candyJar.stackCount = 99;
|
||||
scene.addModifier(candyJar, true, false, false, true);
|
||||
const sitrus = generateModifierType(modifierTypes.BERRY, [BerryType.SITRUS])!;
|
||||
scene.clearAllItems();
|
||||
scene.trainerItems.add(TrainerItemId.CANDY_JAR, 99);
|
||||
|
||||
// Sitrus berries on party
|
||||
const sitrusMod = sitrus.newModifier(scene.getPlayerParty()[0]) as BerryModifier;
|
||||
sitrusMod.stackCount = 2;
|
||||
scene.addModifier(sitrusMod, true, false, false, true);
|
||||
await scene.updateItems(true);
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SITRUS_BERRY, 2);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
const sitrusAfter = scene.findModifier(m => m instanceof BerryModifier);
|
||||
const candyJarAfter = scene.findModifier(m => m instanceof LevelIncrementBoosterModifier);
|
||||
const shellBellAfter = scene.findModifier(m => m instanceof HitHealModifier);
|
||||
|
||||
expect(sitrusAfter?.stackCount).toBe(1);
|
||||
expect(candyJarAfter).toBeDefined();
|
||||
expect(candyJarAfter?.stackCount).toBe(99);
|
||||
expect(shellBellAfter).toBeDefined();
|
||||
expect(shellBellAfter?.stackCount).toBe(1);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SITRUS_BERRY)).toBe(1);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.CANDY_JAR)).toBe(99);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SHELL_BELL)).toBe(1);
|
||||
});
|
||||
|
||||
it("Should give the player a Shell Bell if they have max stacks of Berry Pouches", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// 3 Berry Pouches
|
||||
scene.modifiers = [];
|
||||
const healingCharm = generateModifierType(modifierTypes.BERRY_POUCH)!.newModifier() as PreserveBerryModifier;
|
||||
healingCharm.stackCount = 3;
|
||||
scene.addModifier(healingCharm, true, false, false, true);
|
||||
scene.clearAllItems();
|
||||
scene.trainerItems.add(TrainerItemId.BERRY_POUCH, 3);
|
||||
|
||||
// Set 1 Reviver Seed on party lead
|
||||
const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!;
|
||||
const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier;
|
||||
modifier.stackCount = 1;
|
||||
scene.addModifier(modifier, true, false, false, true);
|
||||
await scene.updateItems(true);
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.REVIVER_SEED);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
const reviverSeedAfter = scene.findModifier(m => m instanceof PokemonInstantReviveModifier);
|
||||
const healingCharmAfter = scene.findModifier(m => m instanceof PreserveBerryModifier);
|
||||
const shellBellAfter = scene.findModifier(m => m instanceof HitHealModifier);
|
||||
|
||||
expect(reviverSeedAfter).toBeUndefined();
|
||||
expect(healingCharmAfter).toBeDefined();
|
||||
expect(healingCharmAfter?.stackCount).toBe(3);
|
||||
expect(shellBellAfter).toBeDefined();
|
||||
expect(shellBellAfter?.stackCount).toBe(1);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.REVIVER_SEED)).toBe(0);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.BERRY_POUCH)).toBe(3);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SHELL_BELL)).toBe(1);
|
||||
});
|
||||
|
||||
it("should be disabled if player does not have any proper items", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// Set 1 Soul Dew on party lead
|
||||
scene.modifiers = [];
|
||||
const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!;
|
||||
const modifier = soulDew.newModifier(scene.getPlayerParty()[0]);
|
||||
scene.addModifier(modifier, true, false, false, true);
|
||||
await scene.updateItems(true);
|
||||
scene.clearAllItems();
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW);
|
||||
scene.updateItems(true);
|
||||
|
||||
await game.phaseInterceptor.to(MysteryEncounterPhase, false);
|
||||
|
||||
@ -328,11 +269,8 @@ describe("Delibird-y - Mystery Encounter", () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// Set 1 Reviver Seed on party lead
|
||||
const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!;
|
||||
const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier;
|
||||
modifier.stackCount = 1;
|
||||
scene.addModifier(modifier, true, false, false, true);
|
||||
await scene.updateItems(true);
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.REVIVER_SEED);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
@ -361,82 +299,55 @@ describe("Delibird-y - Mystery Encounter", () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, 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);
|
||||
await scene.updateItems(true);
|
||||
scene.clearAllItems();
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW, 2);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
const soulDewAfter = scene.findModifier(m => m instanceof PokemonNatureWeightModifier);
|
||||
const healingCharmAfter = scene.findModifier(m => m instanceof HealingBoosterModifier);
|
||||
|
||||
expect(soulDewAfter?.stackCount).toBe(1);
|
||||
expect(healingCharmAfter).toBeDefined();
|
||||
expect(healingCharmAfter?.stackCount).toBe(1);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SOUL_DEW)).toBe(1);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.HEALING_CHARM)).toBe(1);
|
||||
});
|
||||
|
||||
it("Should remove held item and give the player a Healing Charm", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, 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);
|
||||
await scene.updateItems(true);
|
||||
scene.clearAllItems();
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
const soulDewAfter = scene.findModifier(m => m instanceof PokemonNatureWeightModifier);
|
||||
const healingCharmAfter = scene.findModifier(m => m instanceof HealingBoosterModifier);
|
||||
|
||||
expect(soulDewAfter).toBeUndefined();
|
||||
expect(healingCharmAfter).toBeDefined();
|
||||
expect(healingCharmAfter?.stackCount).toBe(1);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SOUL_DEW)).toBe(0);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.HEALING_CHARM)).toBe(1);
|
||||
});
|
||||
|
||||
it("Should give the player a Shell Bell if they have max stacks of Healing Charms", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// 5 Healing Charms
|
||||
scene.modifiers = [];
|
||||
const healingCharm = generateModifierType(modifierTypes.HEALING_CHARM)!.newModifier() as HealingBoosterModifier;
|
||||
healingCharm.stackCount = 5;
|
||||
scene.addModifier(healingCharm, true, false, false, true);
|
||||
scene.clearAllItems();
|
||||
scene.trainerItems.add(TrainerItemId.HEALING_CHARM, 5);
|
||||
|
||||
// Set 1 Soul Dew on party lead
|
||||
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);
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
const soulDewAfter = scene.findModifier(m => m instanceof PokemonNatureWeightModifier);
|
||||
const healingCharmAfter = scene.findModifier(m => m instanceof HealingBoosterModifier);
|
||||
const shellBellAfter = scene.findModifier(m => m instanceof HitHealModifier);
|
||||
|
||||
expect(soulDewAfter).toBeUndefined();
|
||||
expect(healingCharmAfter).toBeDefined();
|
||||
expect(healingCharmAfter?.stackCount).toBe(5);
|
||||
expect(shellBellAfter).toBeDefined();
|
||||
expect(shellBellAfter?.stackCount).toBe(1);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SOUL_DEW)).toBe(0);
|
||||
expect(scene.trainerItems.getStack(TrainerItemId.HEALING_CHARM)).toBe(5);
|
||||
expect(scene.getPlayerParty()[0].heldItemManager.getStack(HeldItemId.SHELL_BELL)).toBe(1);
|
||||
});
|
||||
|
||||
it("should be disabled if player does not have any proper items", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// Set 1 Reviver Seed on party lead
|
||||
scene.modifiers = [];
|
||||
const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!;
|
||||
const modifier = revSeed.newModifier(scene.getPlayerParty()[0]);
|
||||
scene.addModifier(modifier, true, false, false, true);
|
||||
await scene.updateItems(true);
|
||||
scene.clearAllItems();
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.REVIVER_SEED);
|
||||
scene.updateItems(true);
|
||||
|
||||
await game.phaseInterceptor.to(MysteryEncounterPhase, false);
|
||||
|
||||
@ -461,12 +372,9 @@ describe("Delibird-y - Mystery Encounter", () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, 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);
|
||||
await scene.updateItems(true);
|
||||
scene.clearAllItems();
|
||||
scene.getPlayerParty()[0].heldItemManager.add(HeldItemId.SOUL_DEW);
|
||||
scene.updateItems(true);
|
||||
|
||||
await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 });
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user