From ff180988082f965ff8553726999f14efbf0ae29b Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 8 Oct 2017 11:23:20 -0700 Subject: [PATCH] Add early exit for not-enough-species #204 item 4 --- pk3DS.Core/Randomizers/SpeciesRandomizer.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pk3DS.Core/Randomizers/SpeciesRandomizer.cs b/pk3DS.Core/Randomizers/SpeciesRandomizer.cs index e910bb1..429dfbc 100644 --- a/pk3DS.Core/Randomizers/SpeciesRandomizer.cs +++ b/pk3DS.Core/Randomizers/SpeciesRandomizer.cs @@ -83,7 +83,16 @@ public int GetRandomSpecies(int oldSpecies) loopctr = 0; // altering calculations to prevent infinite loops int newSpecies; while (!GetNewSpecies(oldSpecies, oldpkm, out newSpecies)) + { + if (loopctr > 0x0001_0000) + { + PersonalInfo pkm = SpeciesStat[newSpecies]; + if (IsSpeciesBSTBad(oldpkm, pkm) && loopctr > 0x0001_1000) // keep trying for at minimum BST + continue; + return newSpecies; // failed to find any match based on criteria, return random species that may or may not match criteria + } loopctr++; + } return newSpecies; }