diff --git a/PKHeX.Core/Legality/Breeding.cs b/PKHeX.Core/Legality/Breeding.cs
index 2cf9aee9b..78066378d 100644
--- a/PKHeX.Core/Legality/Breeding.cs
+++ b/PKHeX.Core/Legality/Breeding.cs
@@ -1,4 +1,3 @@
-using static PKHeX.Core.GameVersion;
using static PKHeX.Core.Species;
namespace PKHeX.Core;
@@ -8,25 +7,6 @@ namespace PKHeX.Core;
///
public static class Breeding
{
- ///
- /// Checks if the game has a Daycare, and returns true if it does.
- ///
- /// Version ID to check for.
- public static bool CanGameGenerateEggs(GameVersion game) => game switch
- {
- R or S or E or FR or LG => true,
- D or P or Pt or HG or SS => true,
- B or W or B2 or W2 => true,
- X or Y or OR or AS => true,
- SN or MN or US or UM => true,
- GD or SI or C => true,
- SW or SH or BD or SP => true,
- SL or VL => true,
-
- GS => true,
- _ => false,
- };
-
///
/// Species that have special handling for breeding.
///
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator1.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator1.cs
index ac06cc209..f132d71ba 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator1.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator1.cs
@@ -6,6 +6,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator1 : IEncounterGenerator
{
public static readonly EncounterGenerator1 Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator2.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator2.cs
index 612b628a8..3a99ced25 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator2.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator2.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator2 : IEncounterGenerator
{
public static readonly EncounterGenerator2 Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3.cs
index 6fcae19d6..825544e62 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator3 : IEncounterGenerator
{
public static readonly EncounterGenerator3 Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3GC.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3GC.cs
index 9a6827f7d..7221766de 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3GC.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3GC.cs
@@ -6,6 +6,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator3GC : IEncounterGenerator
{
public static readonly EncounterGenerator3GC Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion __, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator4.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator4.cs
index 13482648b..ffa9c43b9 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator4.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator4.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator4 : IEncounterGenerator
{
public static readonly EncounterGenerator4 Instance = new();
+ public bool CanGenerateEggs => true;
// Utility
internal static readonly PGT RangerManaphy = new() { Data = { [0] = 7, [8] = 1 } };
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator5.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator5.cs
index 831c14368..2500faf38 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator5.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator5.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator5 : IEncounterGenerator
{
public static readonly EncounterGenerator5 Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetEncounters(PKM pk, LegalInfo info)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator6.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator6.cs
index 008b588b6..b5ccc09d9 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator6.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator6.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator6 : IEncounterGenerator
{
public static readonly EncounterGenerator6 Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7.cs
index a8508e160..3f52c9d58 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator7 : IEncounterGenerator
{
public static readonly EncounterGenerator7 Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GG.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GG.cs
index 19da12437..bdc9321b2 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GG.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GG.cs
@@ -8,6 +8,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator7GG : IEncounterGenerator
{
public static readonly EncounterGenerator7GG Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GO.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GO.cs
index 06dc3b479..77e539fc0 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GO.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GO.cs
@@ -5,6 +5,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator7GO : IEncounterGenerator
{
public static readonly EncounterGenerator7GO Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion __, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8.cs
index 76cbd5fc2..86a84ae6b 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator8 : IEncounterGenerator
{
public static readonly EncounterGenerator8 Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8GO.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8GO.cs
index 18f5f4fea..340f13f26 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8GO.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8GO.cs
@@ -5,6 +5,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator8GO : IEncounterGenerator
{
public static readonly EncounterGenerator8GO Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion __, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8a.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8a.cs
index 81f7ce069..4db0c8ed2 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8a.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8a.cs
@@ -5,6 +5,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator8a : IEncounterGenerator
{
public static readonly EncounterGenerator8a Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion __, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8b.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8b.cs
index b624d7c71..1de24a392 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8b.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8b.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator8b : IEncounterGenerator
{
public static readonly EncounterGenerator8b Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator9.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator9.cs
index 2086fe620..6b887d4b1 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator9.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator9.cs
@@ -7,6 +7,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator9 : IEncounterGenerator
{
public static readonly EncounterGenerator9 Instance = new();
+ public bool CanGenerateEggs => true;
public IEnumerable GetEncounters(PKM pk, LegalInfo info)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator12.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator12.cs
index 4b13d73cd..611079546 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator12.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator12.cs
@@ -9,6 +9,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator12 : IEncounterGenerator
{
public static readonly EncounterGenerator12 Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetEncounters(PKM pk, LegalInfo info)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator7X.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator7X.cs
index d3d644383..c1a8f0ba9 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator7X.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator7X.cs
@@ -5,6 +5,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator7X : IEncounterGenerator
{
public static readonly EncounterGenerator7X Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) => pk.Version switch
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator8X.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator8X.cs
index 1066c9557..a56d9a1f5 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator8X.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator8X.cs
@@ -6,6 +6,7 @@ namespace PKHeX.Core;
public sealed class EncounterGenerator8X : IEncounterGenerator
{
public static readonly EncounterGenerator8X Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) => game switch
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorDummy.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorDummy.cs
index 74f1c2406..00588760b 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorDummy.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorDummy.cs
@@ -5,6 +5,7 @@ namespace PKHeX.Core;
internal sealed class EncounterGeneratorDummy : IEncounterGenerator
{
public static readonly EncounterGeneratorDummy Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) => [];
public IEnumerable GetEncounters(PKM pk, EvoCriteria[] chain, LegalInfo info) => [];
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorGO.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorGO.cs
index 61fa72a3f..b1563d2d6 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorGO.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorGO.cs
@@ -5,6 +5,7 @@ namespace PKHeX.Core;
public sealed class EncounterGeneratorGO : IEncounterGenerator
{
public static readonly EncounterGeneratorGO Instance = new();
+ public bool CanGenerateEggs => false;
public IEnumerable GetEncounters(PKM pk, EvoCriteria[] chain, LegalInfo info)
{
diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/IEncounterGenerator.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/IEncounterGenerator.cs
index f5765ba3b..9262e98ae 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/IEncounterGenerator.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/IEncounterGenerator.cs
@@ -7,4 +7,5 @@ public interface IEncounterGenerator
IEnumerable GetEncounters(PKM pk, EvoCriteria[] chain, LegalInfo info);
IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups);
+ bool CanGenerateEggs { get; }
}
diff --git a/PKHeX.Core/Legality/Encounters/Generator/Moveset/EncounterMovesetGenerator.cs b/PKHeX.Core/Legality/Encounters/Generator/Moveset/EncounterMovesetGenerator.cs
index a4ff8f229..16c18600a 100644
--- a/PKHeX.Core/Legality/Encounters/Generator/Moveset/EncounterMovesetGenerator.cs
+++ b/PKHeX.Core/Legality/Encounters/Generator/Moveset/EncounterMovesetGenerator.cs
@@ -259,11 +259,11 @@ private static IEnumerable GetPossibleOfType(PKM pk, ReadOnlyMem
/// Moves which cannot be taught by the player.
/// Origin possible evolution chain
/// Specific version to iterate for. Necessary for retrieving possible Egg Moves.
- ///
+ /// Encounter generator to use.
/// A consumable list of possible encounters.
private static IEnumerable GetEggs(PKM pk, ReadOnlyMemory needs, EvoCriteria[] chain, GameVersion version, IEncounterGenerator generator)
{
- if (!Breeding.CanGameGenerateEggs(version))
+ if (!generator.CanGenerateEggs)
yield break; // no eggs from these games
var eggs = generator.GetPossible(pk, chain, version, Egg);
@@ -303,7 +303,7 @@ private static IEnumerable GetGifts(PKM pk, ReadOnlyMemoryMoves which cannot be taught by the player.
/// Origin possible evolution chain
/// Specific version to iterate for.
- ///
+ /// Encounter generator to use.
/// A consumable list of possible encounters.
private static IEnumerable GetStatic(PKM pk, ReadOnlyMemory needs, EvoCriteria[] chain, GameVersion version, IEncounterGenerator generator)
{
@@ -325,7 +325,7 @@ private static IEnumerable GetStatic(PKM pk, ReadOnlyMemoryMoves which cannot be taught by the player.
/// Origin possible evolution chain
/// Specific version to iterate for.
- ///
+ /// Encounter generator to use.
/// A consumable list of possible encounters.
private static IEnumerable GetTrades(PKM pk, ReadOnlyMemory needs, EvoCriteria[] chain, GameVersion version, IEncounterGenerator generator)
{
@@ -347,7 +347,7 @@ private static IEnumerable GetTrades(PKM pk, ReadOnlyMemoryMoves which cannot be taught by the player.
/// Origin possible evolution chain
/// Origin version
- ///
+ /// Encounter generator to use.
/// A consumable list of possible encounters.
private static IEnumerable GetSlots(PKM pk, ReadOnlyMemory needs, EvoCriteria[] chain, GameVersion version, IEncounterGenerator generator)
{