[Bug] Fix game freeze from GTS infinite loop
This commit is contained in:
parent
35cd615363
commit
5a24435047
|
@ -431,14 +431,13 @@ function getPokemonTradeOptions(scene: BattleScene): Map<number, EnemyPokemon[]>
|
|||
|
||||
function generateTradeOption(alreadyUsedSpecies: PokemonSpecies[], originalBst?: number): PokemonSpecies {
|
||||
let newSpecies: PokemonSpecies | undefined;
|
||||
let bstCap = 9999;
|
||||
let bstMin = 0;
|
||||
if (originalBst) {
|
||||
bstCap = originalBst + 100;
|
||||
bstMin = originalBst - 100;
|
||||
}
|
||||
while (isNullOrUndefined(newSpecies)) {
|
||||
let bstCap = 9999;
|
||||
let bstMin = 0;
|
||||
if (originalBst) {
|
||||
bstCap = originalBst + 100;
|
||||
bstMin = originalBst - 100;
|
||||
}
|
||||
|
||||
// Get all non-legendary species that fall within the Bst range requirements
|
||||
let validSpecies = allSpecies
|
||||
.filter(s => {
|
||||
|
|
|
@ -69,6 +69,20 @@ describe("Global Trade System - Mystery Encounter", () => {
|
|||
expect(GlobalTradeSystemEncounter.options.length).toBe(4);
|
||||
});
|
||||
|
||||
it("should not freeze when generating trade options for extreme BST non-legendaries", async () => {
|
||||
const extremeBstTeam = [Species.SLAKING, Species.WISHIWASHI, Species.SUNKERN];
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.GLOBAL_TRADE_SYSTEM, extremeBstTeam);
|
||||
|
||||
expect(GlobalTradeSystemEncounter.encounterType).toBe(MysteryEncounterType.GLOBAL_TRADE_SYSTEM);
|
||||
expect(GlobalTradeSystemEncounter.encounterTier).toBe(MysteryEncounterTier.COMMON);
|
||||
expect(GlobalTradeSystemEncounter.dialogue).toBeDefined();
|
||||
expect(GlobalTradeSystemEncounter.dialogue.intro).toStrictEqual([{ text: `${namespace}.intro` }]);
|
||||
expect(GlobalTradeSystemEncounter.dialogue.encounterOptionsDialogue?.title).toBe(`${namespace}.title`);
|
||||
expect(GlobalTradeSystemEncounter.dialogue.encounterOptionsDialogue?.description).toBe(`${namespace}.description`);
|
||||
expect(GlobalTradeSystemEncounter.dialogue.encounterOptionsDialogue?.query).toBe(`${namespace}.query`);
|
||||
expect(GlobalTradeSystemEncounter.options.length).toBe(4);
|
||||
});
|
||||
|
||||
it("should not spawn outside of CIVILIZATION_ENCOUNTER_BIOMES", async () => {
|
||||
game.override.mysteryEncounterTier(MysteryEncounterTier.COMMON);
|
||||
game.override.startingBiome(Biome.VOLCANO);
|
||||
|
|
Loading…
Reference in New Issue