Slot3/4: Filter met level on generate

This commit is contained in:
Kurt 2024-11-18 21:05:21 -06:00
parent c30a335404
commit 8c37d9b4b5
3 changed files with 34 additions and 19 deletions

View file

@ -48,7 +48,12 @@ public static class GenerateMethodH
if (!criteria.IsGenderSatisfied(gender))
break; // try again
pk.MetLevel = pk.CurrentLevel = (byte)MethodH.GetRandomLevel(enc, lv, LeadRequired.None);
{
var level = (byte)MethodH.GetRandomLevel(enc, lv, LeadRequired.None);
if (criteria.IsSpecifiedLevelRange() && !criteria.IsLevelRangeSatisfied(level))
break; // try again
pk.MetLevel = pk.CurrentLevel = level;
}
SetPIDIVSequential(pk, pid, seed);
return;
}
@ -128,10 +133,10 @@ public static class GenerateMethodH
// always level rand
{
var lv = MethodH.SkipToLevelRand(enc, lead.Seed) >> 16;
var actual = MethodH.GetRandomLevel(enc, lv, lead.Lead);
if (pk.MetLevel != actual)
pk.MetLevel = pk.CurrentLevel = (byte)actual;
var rand16 = MethodH.SkipToLevelRand(enc, lead.Seed) >> 16;
var level = MethodH.GetRandomLevel(enc, rand16, lead.Lead);
if (pk.MetLevel != level)
pk.MetLevel = pk.CurrentLevel = (byte)level;
}
pk.PID = pid;
@ -165,10 +170,10 @@ public static class GenerateMethodH
// always level rand
{
var lv = MethodH.SkipToLevelRand(enc, lead.Seed) >> 16;
var actual = MethodH.GetRandomLevel(enc, lv, lead.Lead);
if (pk.MetLevel != actual)
pk.MetLevel = pk.CurrentLevel = (byte)actual;
var rand16 = MethodH.SkipToLevelRand(enc, lead.Seed) >> 16;
var level = MethodH.GetRandomLevel(enc, rand16, lead.Lead);
if (pk.MetLevel != level)
pk.MetLevel = pk.CurrentLevel = (byte)level;
}
pk.PID = pid;

View file

@ -59,7 +59,12 @@ public static class GenerateMethodJ
break; // try again
if (randLevel)
pk.MetLevel = pk.CurrentLevel = (byte)MethodJ.GetRandomLevel(enc, lv, LeadRequired.None);
{
var level = (byte)MethodJ.GetRandomLevel(enc, lv, LeadRequired.None);
if (criteria.IsSpecifiedLevelRange() && !criteria.IsLevelRangeSatisfied(level))
break; // try again
pk.MetLevel = pk.CurrentLevel = level;
}
pk.PID = pid;
var iv1 = LCRNG.Next16(ref seed);
var iv2 = LCRNG.Next16(ref seed);
@ -110,10 +115,10 @@ public static class GenerateMethodJ
if (MethodJ.IsLevelRand(enc))
{
var lv = MethodJ.SkipToLevelRand(enc, lead.Seed) >> 16;
var actual = MethodJ.GetRandomLevel(enc, lv, lead.Lead);
if (pk.MetLevel != actual)
pk.MetLevel = pk.CurrentLevel = (byte)actual;
var rand16 = MethodJ.SkipToLevelRand(enc, lead.Seed) >> 16;
var level = MethodJ.GetRandomLevel(enc, rand16, lead.Lead);
if (pk.MetLevel != level)
pk.MetLevel = pk.CurrentLevel = (byte)level;
}
pk.PID = pid;

View file

@ -60,7 +60,12 @@ public static class GenerateMethodK
break; // try again
if (randLevel)
pk.MetLevel = pk.CurrentLevel = (byte)MethodK.GetRandomLevel(enc, lv, LeadRequired.None);
{
var level = (byte)MethodK.GetRandomLevel(enc, lv, LeadRequired.None);
if (criteria.IsSpecifiedLevelRange() && !criteria.IsLevelRangeSatisfied(level))
break; // try again
pk.MetLevel = pk.CurrentLevel = level;
}
pk.PID = pid;
var iv1 = LCRNG.Next16(ref seed);
var iv2 = LCRNG.Next16(ref seed);
@ -114,10 +119,10 @@ public static class GenerateMethodK
if (MethodK.IsLevelRand(enc))
{
var lv = MethodK.SkipToLevelRand(enc, lead.Seed, lead.Lead) >> 16;
var actual = MethodK.GetRandomLevel(enc, lv, lead.Lead);
if (pk.MetLevel != actual)
pk.MetLevel = pk.CurrentLevel = (byte)actual;
var rand16 = MethodK.SkipToLevelRand(enc, lead.Seed, lead.Lead) >> 16;
var level = MethodK.GetRandomLevel(enc, rand16, lead.Lead);
if (pk.MetLevel != level)
pk.MetLevel = pk.CurrentLevel = (byte)level;
}
pk.PID = pid;