mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-08-20 04:35:02 -05:00
More explicit type checks for Encounter class
A little more explicit on what it is actually checking for
This commit is contained in:
@@ -12,8 +12,8 @@ public sealed class CXDVerifier : Verifier
|
||||
public override void Verify(LegalityAnalysis data)
|
||||
{
|
||||
var pkm = data.pkm;
|
||||
if (data.EncounterMatch is EncounterStatic)
|
||||
VerifyCXDStarterCorrelation(data);
|
||||
if (data.EncounterMatch is EncounterStatic3 s3)
|
||||
VerifyCXDStarterCorrelation(data, s3);
|
||||
else if (pkm.Egg_Location != 0) // can't obtain eggs in CXD
|
||||
data.AddLine(GetInvalid(LEncInvalid, CheckIdentifier.Encounter)); // invalid encounter
|
||||
|
||||
@@ -21,17 +21,17 @@ public override void Verify(LegalityAnalysis data)
|
||||
data.AddLine(GetInvalid(LG3OTGender, CheckIdentifier.Trainer));
|
||||
}
|
||||
|
||||
private static void VerifyCXDStarterCorrelation(LegalityAnalysis data)
|
||||
private static void VerifyCXDStarterCorrelation(LegalityAnalysis data, EncounterStatic3 enc)
|
||||
{
|
||||
var pidiv = data.Info.PIDIV;
|
||||
if (pidiv.Type is not (PIDType.CXD or PIDType.CXDAnti))
|
||||
var (type, seed) = data.Info.PIDIV;
|
||||
if (type is not (PIDType.CXD or PIDType.CXDAnti or PIDType.CXD_ColoStarter))
|
||||
return; // already flagged as invalid
|
||||
|
||||
var pkm = data.pkm;
|
||||
bool valid = data.EncounterMatch.Species switch
|
||||
bool valid = enc.Species switch
|
||||
{
|
||||
(int)Species.Eevee => LockFinder.IsXDStarterValid(pidiv.OriginSeed, pkm.TID, pkm.SID),
|
||||
(int)Species.Espeon or (int)Species.Umbreon => pidiv.Type == PIDType.CXD_ColoStarter,
|
||||
(int)Species.Eevee => LockFinder.IsXDStarterValid(seed, pkm.TID, pkm.SID),
|
||||
(int)Species.Espeon or (int)Species.Umbreon => type == PIDType.CXD_ColoStarter,
|
||||
_ => true,
|
||||
};
|
||||
if (!valid)
|
||||
|
||||
@@ -45,7 +45,7 @@ private CheckResult VerifyForm(LegalityAnalysis data)
|
||||
switch ((Species)species)
|
||||
{
|
||||
case Pikachu when Info.Generation == 6: // Cosplay
|
||||
bool isStatic = enc is EncounterStatic;
|
||||
bool isStatic = enc is EncounterStatic6;
|
||||
bool validCosplay = form == (isStatic ? enc.Form : 0);
|
||||
if (!validCosplay)
|
||||
return GetInvalid(isStatic ? LFormPikachuCosplayInvalid : LFormPikachuCosplay);
|
||||
|
||||
@@ -47,7 +47,7 @@ public override void Verify(LegalityAnalysis data)
|
||||
return;
|
||||
}
|
||||
|
||||
var reqEXP = enc is EncounterStatic {Version: GameVersion.C}
|
||||
var reqEXP = enc is EncounterStatic2Odd
|
||||
? 125 // Gen2 Dizzy Punch gifts always have 125 EXP, even if it's more than the Lv5 exp required.
|
||||
: Experience.GetEXP(elvl, pkm.PersonalInfo.EXPGrowth);
|
||||
if (reqEXP != pkm.EXP)
|
||||
|
||||
@@ -350,7 +350,7 @@ private static void VerifyTrade4(LegalityAnalysis data, EncounterTrade t)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (pkm.Version is (int)GameVersion.D or (int)GameVersion.P && t is EncounterTrade4PID) // mainline DP
|
||||
if (t is EncounterTrade4PID && pkm.Version is ((int)GameVersion.D or (int)GameVersion.P)) // mainline DP
|
||||
{
|
||||
// DP English origin are Japanese lang. Can't have LanguageID 2
|
||||
if (lang == 2)
|
||||
|
||||
@@ -223,7 +223,7 @@ public IEnumerable<CheckResult> VerifyVCEncounter(PKM pkm, IEncounterTemplate en
|
||||
yield return GetInvalid(LEggLocationNone);
|
||||
|
||||
// Flag Moves that cannot be transferred
|
||||
if (encounter is EncounterStatic2Odd {Version: GameVersion.C, EggLocation: 256}) // Dizzy Punch Gifts
|
||||
if (encounter is EncounterStatic2Odd) // Dizzy Punch Gifts
|
||||
FlagIncompatibleTransferMove(pkm, Moves, 146, 2); // can't have Dizzy Punch at all
|
||||
|
||||
bool checkShiny = pkm.VC2 || (pkm.VC1 && GBRestrictions.IsTimeCapsuleTransferred(pkm, Moves, encounter).WasTimeCapsuleTransferred());
|
||||
|
||||
Reference in New Issue
Block a user