mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-23 12:33:06 +00:00
Consolidate encounterlink into mysterygift
use synthetic wondercards to match link gifts
This commit is contained in:
parent
ce11bda416
commit
41a3989b53
14 changed files with 16 additions and 216 deletions
|
@ -254,10 +254,11 @@ namespace PKHeX.Core
|
||||||
public static int[] GetSuggestedRelearnMoves(this PKM pk, LegalityAnalysis legal)
|
public static int[] GetSuggestedRelearnMoves(this PKM pk, LegalityAnalysis legal)
|
||||||
{
|
{
|
||||||
int[] m = legal.GetSuggestedRelearn();
|
int[] m = legal.GetSuggestedRelearn();
|
||||||
if (!m.All(z => z == 0))
|
if (m.Any(z => z != 0))
|
||||||
return m;
|
return m;
|
||||||
|
|
||||||
if (pk.WasEgg || pk.WasEvent || pk.WasEventEgg || pk.WasLink)
|
var enc = legal.EncounterMatch;
|
||||||
|
if (enc is MysteryGift || enc is EncounterEgg)
|
||||||
return m;
|
return m;
|
||||||
|
|
||||||
var encounter = legal.GetSuggestedMetInfo();
|
var encounter = legal.GetSuggestedMetInfo();
|
||||||
|
|
|
@ -401,23 +401,5 @@ namespace PKHeX.Core
|
||||||
new EncounterTrade { Species = 222, Level = 50, Ability = 4, Gender = 1, TID = 00325, Nature = Nature.Calm, IVs = new[] {31, -1, -1, -1, -1, 31}, }, // Corsola
|
new EncounterTrade { Species = 222, Level = 50, Ability = 4, Gender = 1, TID = 00325, Nature = Nature.Calm, IVs = new[] {31, -1, -1, -1, -1, 31}, }, // Corsola
|
||||||
};
|
};
|
||||||
#endregion
|
#endregion
|
||||||
#region Pokémon Link Gifts
|
|
||||||
|
|
||||||
internal static readonly EncounterLink[] LinkGifts6 =
|
|
||||||
{
|
|
||||||
new EncounterLink { Species = 154, Level = 50, Ability = 4, Moves = new[] {076, 241, 235, 034} }, // Meganium
|
|
||||||
new EncounterLink { Species = 157, Level = 50, Ability = 4, Moves = new[] {315, 172, 488, 129} }, // Typhlosion
|
|
||||||
new EncounterLink { Species = 160, Level = 50, Ability = 4, Moves = new[] {008, 242, 127, 103} }, // Feraligatr with Ice Punch (not relearn)
|
|
||||||
|
|
||||||
new EncounterLink { Species = 251, Level = 10, Ability = 1, Moves = new[] {105, 215, 610, 219}, RelearnMoves = new[] {610, 0, 0, 0}, Ball = 11, Version = GameVersion.XY }, // Celebi
|
|
||||||
|
|
||||||
new EncounterLink { Species = 377, Level = 50, Ability = 4, Moves = new[] {153, 008, 444, 359}, RelearnMoves = new[] {153, 008, 444, 359}, }, // Regirock
|
|
||||||
new EncounterLink { Species = 378, Level = 50, Ability = 4, Moves = new[] {085, 133, 058, 258}, RelearnMoves = new[] {085, 133, 058, 258}, }, // Regice
|
|
||||||
new EncounterLink { Species = 379, Level = 50, Ability = 4, Moves = new[] {442, 157, 356, 334}, RelearnMoves = new[] {442, 157, 356, 334}, }, // Registeel
|
|
||||||
|
|
||||||
new EncounterLink { Species = 208, Level = 40, Ability = 1, Moves = new[] {231, 242, 157, 103}, RibbonClassic = false, Version = GameVersion.ORAS, OT = false }, // Steelix
|
|
||||||
new EncounterLink { Species = 362, Level = 40, Ability = 1, Moves = new[] {423, 029, 182, 524}, RibbonClassic = false, Version = GameVersion.ORAS, OT = false }, // Glalie
|
|
||||||
};
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,97 +0,0 @@
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace PKHeX.Core
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Pokémon Link Encounter Data
|
|
||||||
/// </summary>
|
|
||||||
public sealed class EncounterLink : IEncounterable, IRibbonSetEvent4, IMoveset, ILocation, IVersion
|
|
||||||
{
|
|
||||||
public int Species { get; set; }
|
|
||||||
public int Level { get; set; }
|
|
||||||
public int LevelMin => Level;
|
|
||||||
public int LevelMax => Level;
|
|
||||||
public int Location { get; set; } = 30011;
|
|
||||||
public int Ability { get; set; } = 1;
|
|
||||||
public int Ball { get; set; } = 4; // Pokéball
|
|
||||||
public int[] RelearnMoves { get; set; } = Array.Empty<int>();
|
|
||||||
public bool OT { get; set; } = true; // Receiver is OT?
|
|
||||||
|
|
||||||
public bool EggEncounter => false;
|
|
||||||
public int EggLocation { get => 0; set { } }
|
|
||||||
public GameVersion Version { get; set; } = GameVersion.Gen6;
|
|
||||||
|
|
||||||
public int[] Moves { get; set; } = Array.Empty<int>();
|
|
||||||
|
|
||||||
public string Name => "Pokémon Link Gift";
|
|
||||||
|
|
||||||
public bool RibbonClassic { get; set; } = true;
|
|
||||||
|
|
||||||
// Unused
|
|
||||||
public bool RibbonWishing { get; set; }
|
|
||||||
public bool RibbonPremier { get; set; }
|
|
||||||
public bool RibbonEvent { get; set; }
|
|
||||||
public bool RibbonBirthday { get; set; }
|
|
||||||
public bool RibbonSpecial { get; set; }
|
|
||||||
public bool RibbonWorld { get; set; }
|
|
||||||
public bool RibbonChampionWorld { get; set; }
|
|
||||||
public bool RibbonSouvenir { get; set; }
|
|
||||||
|
|
||||||
public PKM ConvertToPKM(ITrainerInfo SAV) => ConvertToPKM(SAV, EncounterCriteria.Unrestricted);
|
|
||||||
|
|
||||||
public PKM ConvertToPKM(ITrainerInfo SAV, EncounterCriteria criteria)
|
|
||||||
{
|
|
||||||
const int gen = 6;
|
|
||||||
var version = this.GetCompatibleVersion((GameVersion)SAV.Game);
|
|
||||||
int lang = (int)Legal.GetSafeLanguage(6, (LanguageID)SAV.Language);
|
|
||||||
var pk = new PK6
|
|
||||||
{
|
|
||||||
EncryptionConstant = Util.Rand32(),
|
|
||||||
Species = Species,
|
|
||||||
Language = lang,
|
|
||||||
CurrentLevel = Level,
|
|
||||||
Version = (int)version,
|
|
||||||
PID = Util.Rand32(),
|
|
||||||
Nickname = PKX.GetSpeciesNameGeneration(Species, lang, gen),
|
|
||||||
Ball = Ball,
|
|
||||||
};
|
|
||||||
|
|
||||||
SAV.ApplyToPKM(pk);
|
|
||||||
SetMetData(pk);
|
|
||||||
SetNatureGender(pk, criteria);
|
|
||||||
pk.RefreshAbility(Ability >> 1);
|
|
||||||
pk.SetRandomIVs(flawless: 3);
|
|
||||||
|
|
||||||
pk.Version = (int)version;
|
|
||||||
pk.Language = lang;
|
|
||||||
|
|
||||||
pk.Moves = Moves;
|
|
||||||
pk.SetMaximumPPCurrent(Moves);
|
|
||||||
pk.OT_Friendship = pk.PersonalInfo.BaseFriendship;
|
|
||||||
|
|
||||||
if (RelearnMoves.Length > 0)
|
|
||||||
pk.RelearnMoves = RelearnMoves;
|
|
||||||
if (RibbonClassic)
|
|
||||||
pk.RibbonClassic = true;
|
|
||||||
|
|
||||||
pk.SetRandomMemory6();
|
|
||||||
if (!OT)
|
|
||||||
SAV.ApplyHandlingTrainerInfo(pk);
|
|
||||||
|
|
||||||
return pk;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void SetNatureGender(PKM pk, EncounterCriteria criteria)
|
|
||||||
{
|
|
||||||
pk.Nature = (int)criteria.GetNature(Nature.Random);
|
|
||||||
pk.Gender = criteria.GetGender(-1, pk.PersonalInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetMetData(PKM pk)
|
|
||||||
{
|
|
||||||
pk.MetDate = DateTime.Today;
|
|
||||||
pk.Met_Level = Level;
|
|
||||||
pk.Met_Location = Location;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -7,7 +7,6 @@ using static PKHeX.Core.MysteryGiftGenerator;
|
||||||
using static PKHeX.Core.EncounterTradeGenerator;
|
using static PKHeX.Core.EncounterTradeGenerator;
|
||||||
using static PKHeX.Core.EncounterSlotGenerator;
|
using static PKHeX.Core.EncounterSlotGenerator;
|
||||||
using static PKHeX.Core.EncounterStaticGenerator;
|
using static PKHeX.Core.EncounterStaticGenerator;
|
||||||
using static PKHeX.Core.EncounterLinkGenerator;
|
|
||||||
using static PKHeX.Core.EncounterEggGenerator;
|
using static PKHeX.Core.EncounterEggGenerator;
|
||||||
|
|
||||||
namespace PKHeX.Core
|
namespace PKHeX.Core
|
||||||
|
@ -305,14 +304,8 @@ namespace PKHeX.Core
|
||||||
private static IEnumerable<IEncounterable> GenerateRawEncounters(PKM pkm)
|
private static IEnumerable<IEncounterable> GenerateRawEncounters(PKM pkm)
|
||||||
{
|
{
|
||||||
int ctr = 0;
|
int ctr = 0;
|
||||||
if (pkm.WasLink)
|
|
||||||
{
|
|
||||||
foreach (var z in GetValidLinkGifts(pkm))
|
|
||||||
{ yield return z; ++ctr; }
|
|
||||||
if (ctr != 0) yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pkm.WasEvent || pkm.WasEventEgg)
|
if (pkm.WasEvent || pkm.WasEventEgg || pkm.WasLink)
|
||||||
{
|
{
|
||||||
foreach (var z in GetValidGifts(pkm))
|
foreach (var z in GetValidGifts(pkm))
|
||||||
{ yield return z; ++ctr; }
|
{ yield return z; ++ctr; }
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace PKHeX.Core
|
|
||||||
{
|
|
||||||
public static class EncounterLinkGenerator
|
|
||||||
{
|
|
||||||
public static IEnumerable<EncounterLink> GetPossible(PKM pkm)
|
|
||||||
{
|
|
||||||
if (!pkm.Gen6)
|
|
||||||
return Enumerable.Empty<EncounterLink>();
|
|
||||||
return Encounters6.LinkGifts6.Where(g => g.Species == pkm.Species);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IEnumerable<EncounterLink> GetPossible(PKM pkm, IReadOnlyList<DexLevel> vs)
|
|
||||||
{
|
|
||||||
if (!pkm.Gen6)
|
|
||||||
return Enumerable.Empty<EncounterLink>();
|
|
||||||
return Encounters6.LinkGifts6.Where(g => vs.Any(z => z.Species == g.Species));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IEnumerable<EncounterLink> GetValidLinkGifts(PKM pkm)
|
|
||||||
{
|
|
||||||
return GetPossible(pkm).Where(g => g.Level == pkm.Met_Level);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -133,7 +133,6 @@ namespace PKHeX.Core
|
||||||
{
|
{
|
||||||
case EncounterOrder.Egg: return GetEggs(pk, needs, version);
|
case EncounterOrder.Egg: return GetEggs(pk, needs, version);
|
||||||
case EncounterOrder.Mystery: return GetGifts(pk, needs);
|
case EncounterOrder.Mystery: return GetGifts(pk, needs);
|
||||||
case EncounterOrder.Link: return GetLink(pk, needs);
|
|
||||||
case EncounterOrder.Static: return GetStatic(pk, needs);
|
case EncounterOrder.Static: return GetStatic(pk, needs);
|
||||||
case EncounterOrder.Trade: return GetTrades(pk, needs);
|
case EncounterOrder.Trade: return GetTrades(pk, needs);
|
||||||
case EncounterOrder.Slot: return GetSlots(pk, needs);
|
case EncounterOrder.Slot: return GetSlots(pk, needs);
|
||||||
|
@ -195,28 +194,6 @@ namespace PKHeX.Core
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets possible encounters that allow all moves requested to be learned.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="pk">Rough Pokémon data which contains the requested species, gender, and form.</param>
|
|
||||||
/// <param name="needs">Moves which cannot be taught by the player.</param>
|
|
||||||
/// <returns>A consumable <see cref="IEncounterable"/> list of possible encounters.</returns>
|
|
||||||
private static IEnumerable<EncounterLink> GetLink(PKM pk, IReadOnlyCollection<int> needs)
|
|
||||||
{
|
|
||||||
var gifts = EncounterLinkGenerator.GetPossible(pk);
|
|
||||||
foreach (var gift in gifts)
|
|
||||||
{
|
|
||||||
if (needs.Count == 0)
|
|
||||||
{
|
|
||||||
yield return gift;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var em = gift.Moves;
|
|
||||||
if (!needs.Except(em).Any())
|
|
||||||
yield return gift;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets possible encounters that allow all moves requested to be learned.
|
/// Gets possible encounters that allow all moves requested to be learned.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -4,7 +4,6 @@ namespace PKHeX.Core
|
||||||
{
|
{
|
||||||
Egg,
|
Egg,
|
||||||
Mystery,
|
Mystery,
|
||||||
Link,
|
|
||||||
Static,
|
Static,
|
||||||
Trade,
|
Trade,
|
||||||
Slot,
|
Slot,
|
||||||
|
|
|
@ -29,7 +29,6 @@ namespace PKHeX.Core
|
||||||
switch (info.EncounterMatch)
|
switch (info.EncounterMatch)
|
||||||
{
|
{
|
||||||
case EncounterEgg _: return VerifyEncounterEgg(pkm);
|
case EncounterEgg _: return VerifyEncounterEgg(pkm);
|
||||||
case EncounterLink l: return VerifyEncounterLink(pkm, l);
|
|
||||||
case EncounterTrade t: return VerifyEncounterTrade(pkm, t);
|
case EncounterTrade t: return VerifyEncounterTrade(pkm, t);
|
||||||
case EncounterSlot w: return VerifyEncounterWild(pkm, w);
|
case EncounterSlot w: return VerifyEncounterWild(pkm, w);
|
||||||
case EncounterStatic s: return VerifyEncounterStatic(pkm, s);
|
case EncounterStatic s: return VerifyEncounterStatic(pkm, s);
|
||||||
|
@ -342,25 +341,6 @@ namespace PKHeX.Core
|
||||||
return new CheckResult(Severity.Valid, LEncTradeMatch, CheckIdentifier.Encounter);
|
return new CheckResult(Severity.Valid, LEncTradeMatch, CheckIdentifier.Encounter);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CheckResult VerifyEncounterLink(PKM pkm, EncounterLink enc)
|
|
||||||
{
|
|
||||||
// Should NOT be Fateful, and should be in Database
|
|
||||||
if (enc == null)
|
|
||||||
return new CheckResult(Severity.Invalid, LLinkNone, CheckIdentifier.Encounter);
|
|
||||||
|
|
||||||
if (pkm.XY && !enc.CanBeReceivedBy(GameVersion.XY))
|
|
||||||
return new CheckResult(Severity.Invalid, LLinkXY, CheckIdentifier.Encounter);
|
|
||||||
if (pkm.AO && !enc.CanBeReceivedBy(GameVersion.ORAS))
|
|
||||||
return new CheckResult(Severity.Invalid, LLinkAO, CheckIdentifier.Encounter);
|
|
||||||
|
|
||||||
if (pkm.IsShiny)
|
|
||||||
return new CheckResult(Severity.Invalid, LLinkShiny, CheckIdentifier.Encounter);
|
|
||||||
|
|
||||||
return pkm.FatefulEncounter
|
|
||||||
? new CheckResult(Severity.Invalid, LLinkFateful, CheckIdentifier.Encounter)
|
|
||||||
: new CheckResult(Severity.Valid, LLinkValid, CheckIdentifier.Encounter);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static CheckResult VerifyEncounterEvent(PKM pkm, MysteryGift MatchedGift)
|
private static CheckResult VerifyEncounterEvent(PKM pkm, MysteryGift MatchedGift)
|
||||||
{
|
{
|
||||||
switch (MatchedGift)
|
switch (MatchedGift)
|
||||||
|
|
|
@ -20,8 +20,6 @@ namespace PKHeX.Core
|
||||||
|
|
||||||
switch (info.EncounterMatch)
|
switch (info.EncounterMatch)
|
||||||
{
|
{
|
||||||
case EncounterLink l when l.RelearnMoves.Length > 0:
|
|
||||||
return VerifyRelearnSpecifiedMoveset(pkm, info, l.RelearnMoves);
|
|
||||||
case MysteryGift g:
|
case MysteryGift g:
|
||||||
return VerifyRelearnSpecifiedMoveset(pkm, info, g.RelearnMoves);
|
return VerifyRelearnSpecifiedMoveset(pkm, info, g.RelearnMoves);
|
||||||
case EncounterStatic s when s.Relearn.Length > 0:
|
case EncounterStatic s when s.Relearn.Length > 0:
|
||||||
|
|
|
@ -335,7 +335,6 @@ namespace PKHeX.Core
|
||||||
{
|
{
|
||||||
case EncounterStatic s: return s.Ability;
|
case EncounterStatic s: return s.Ability;
|
||||||
case EncounterTrade t: return t.Ability;
|
case EncounterTrade t: return t.Ability;
|
||||||
case EncounterLink l: return l.Ability;
|
|
||||||
default: return -1;
|
default: return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,8 +30,6 @@ namespace PKHeX.Core
|
||||||
{
|
{
|
||||||
case MysteryGift g:
|
case MysteryGift g:
|
||||||
return VerifyBallMysteryGift(data, g);
|
return VerifyBallMysteryGift(data, g);
|
||||||
case EncounterLink l:
|
|
||||||
return VerifyBallEquals(data, l.Ball);
|
|
||||||
case EncounterTrade t:
|
case EncounterTrade t:
|
||||||
return VerifyBallEquals(data, t.Ball);
|
return VerifyBallEquals(data, t.Ball);
|
||||||
case EncounterStatic s when s.Gift:
|
case EncounterStatic s when s.Gift:
|
||||||
|
|
|
@ -270,10 +270,10 @@ namespace PKHeX.Core
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case WC6 g when !g.IsEgg:
|
case WC6 g when !g.IsEgg && g.OTGender != 3:
|
||||||
VerifyOTMemoryIs(data, g.OT_Memory, g.OT_Intensity, g.OT_TextVar, g.OT_Feeling);
|
VerifyOTMemoryIs(data, g.OT_Memory, g.OT_Intensity, g.OT_TextVar, g.OT_Feeling);
|
||||||
return;
|
return;
|
||||||
case WC7 g when !g.IsEgg:
|
case WC7 g when !g.IsEgg && g.OTGender != 3:
|
||||||
VerifyOTMemoryIs(data, g.OT_Memory, g.OT_Intensity, g.OT_TextVar, g.OT_Feeling);
|
VerifyOTMemoryIs(data, g.OT_Memory, g.OT_Intensity, g.OT_TextVar, g.OT_Feeling);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -387,15 +387,10 @@ namespace PKHeX.Core
|
||||||
{
|
{
|
||||||
if (generation < 6)
|
if (generation < 6)
|
||||||
return false;
|
return false;
|
||||||
if (EncounterMatch is EncounterLink link && !link.OT)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
bool untraded = pkm.HT_Name.Length == 0 || (pkm is IGeoTrack g && g.Geo1_Country == 0);
|
bool untraded = pkm.HT_Name.Length == 0 || (pkm is IGeoTrack g && g.Geo1_Country == 0);
|
||||||
if (!(EncounterMatch is MysteryGift gift))
|
if (EncounterMatch is WC6 gift)
|
||||||
return untraded;
|
return gift.OTGender == 3 && untraded;
|
||||||
|
|
||||||
untraded |= !pkm.WasEventEgg;
|
|
||||||
untraded &= gift.IsEgg;
|
|
||||||
return untraded;
|
return untraded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -209,7 +209,7 @@ namespace PKHeX.Core
|
||||||
data.AddLine(GetInvalid(LPIDTypeMismatch, CheckIdentifier.PID));
|
data.AddLine(GetInvalid(LPIDTypeMismatch, CheckIdentifier.PID));
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = pkm.FatefulEncounter
|
var result = pkm.FatefulEncounter != pkm.WasLink
|
||||||
? GetValid(LFatefulMystery, CheckIdentifier.Fateful)
|
? GetValid(LFatefulMystery, CheckIdentifier.Fateful)
|
||||||
: GetInvalid(LFatefulMysteryMissing, CheckIdentifier.Fateful);
|
: GetInvalid(LFatefulMysteryMissing, CheckIdentifier.Fateful);
|
||||||
data.AddLine(result);
|
data.AddLine(result);
|
||||||
|
|
|
@ -352,7 +352,7 @@ namespace PKHeX.Core
|
||||||
OT_Memory = OT_Memory,
|
OT_Memory = OT_Memory,
|
||||||
OT_TextVar = OT_TextVar,
|
OT_TextVar = OT_TextVar,
|
||||||
OT_Feeling = OT_Feeling,
|
OT_Feeling = OT_Feeling,
|
||||||
FatefulEncounter = true,
|
FatefulEncounter = MetLocation != 30011, // Link gifts do not set fateful encounter
|
||||||
|
|
||||||
EVs = EVs,
|
EVs = EVs,
|
||||||
};
|
};
|
||||||
|
@ -457,10 +457,12 @@ namespace PKHeX.Core
|
||||||
{
|
{
|
||||||
if (pkm.Egg_Location == 0) // Not Egg
|
if (pkm.Egg_Location == 0) // Not Egg
|
||||||
{
|
{
|
||||||
if (CardID != pkm.SID) return false;
|
if (OTGender != 3)
|
||||||
if (TID != pkm.TID) return false;
|
{
|
||||||
if (OT_Name != pkm.OT_Name) return false;
|
if (SID != pkm.SID) return false;
|
||||||
if (OTGender != pkm.OT_Gender) return false;
|
if (TID != pkm.TID) return false;
|
||||||
|
if (OTGender != pkm.OT_Gender) return false;
|
||||||
|
}
|
||||||
if (PIDType == Shiny.FixedValue && pkm.PID != PID) return false;
|
if (PIDType == Shiny.FixedValue && pkm.PID != PID) return false;
|
||||||
if (!PIDType.IsValid(pkm)) return false;
|
if (!PIDType.IsValid(pkm)) return false;
|
||||||
if (OriginGame != 0 && OriginGame != pkm.Version) return false;
|
if (OriginGame != 0 && OriginGame != pkm.Version) return false;
|
||||||
|
|
Loading…
Reference in a new issue