mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-23 12:33:06 +00:00
Add gen1-4 EV check for untrained pkm
Rework some checks for eggs, closes #1248 GetEggHatchLevel uses Format instead of Generation; should only be used on IsEgg=true pkm
This commit is contained in:
parent
caa46455a8
commit
82c8bc01bd
6 changed files with 29 additions and 16 deletions
|
@ -343,9 +343,16 @@ namespace PKHeX.Core
|
|||
if (evs.Any(ev => ev > 100)) // EVs can only be increased by vitamins to a max of 100.
|
||||
AddLine(Severity.Invalid, V367, CheckIdentifier.EVs);
|
||||
}
|
||||
else if (pkm.Format < 6)
|
||||
{
|
||||
var maxEV = pkm.Format <= 2 ? 25600 : 100; // Vitamin Max
|
||||
// Cannot EV train above 100 without increasing EXP
|
||||
if (PKX.GetEXP(EncounterMatch.LevelMin, pkm.Species) == pkm.EXP && evs.Any(ev => ev > maxEV))
|
||||
AddLine(Severity.Invalid, string.Format(V418, maxEV), CheckIdentifier.EVs);
|
||||
}
|
||||
|
||||
// Only one of the following can be true: 0, 508, and x%6!=0
|
||||
if (sum == 0 && pkm.CurrentLevel - Math.Max(1, pkm.Met_Level) > 0)
|
||||
if (sum == 0 && pkm.CurrentLevel != EncounterMatch.LevelMin)
|
||||
AddLine(Severity.Fishy, V23, CheckIdentifier.EVs);
|
||||
else if (sum == 508)
|
||||
AddLine(Severity.Fishy, V24, CheckIdentifier.EVs);
|
||||
|
@ -600,31 +607,33 @@ namespace PKHeX.Core
|
|||
#endregion
|
||||
private void VerifyLevel()
|
||||
{
|
||||
MysteryGift MatchedGift = EncounterMatch as MysteryGift;
|
||||
if (MatchedGift != null && MatchedGift.Level != pkm.Met_Level)
|
||||
if (EncounterMatch is MysteryGift gift)
|
||||
{
|
||||
if (pkm.HasOriginalMetLocation && (!(MatchedGift is WC7) || ((WC7) MatchedGift).MetLevel != pkm.Met_Level))
|
||||
if (gift.Level != pkm.Met_Level)
|
||||
if (pkm.HasOriginalMetLocation && (!(gift is WC7 wc7) || wc7.MetLevel != pkm.Met_Level))
|
||||
{
|
||||
AddLine(new CheckResult(Severity.Invalid, V83, CheckIdentifier.Level));
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MatchedGift != null && MatchedGift.Level > pkm.CurrentLevel)
|
||||
if (gift.Level > pkm.CurrentLevel)
|
||||
{
|
||||
AddLine(new CheckResult(Severity.Invalid, V84, CheckIdentifier.Level));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int lvl = pkm.CurrentLevel;
|
||||
if (pkm.IsEgg)
|
||||
{
|
||||
int elvl = pkm.Format <= 3 ? 5 : 1;
|
||||
if (elvl != lvl)
|
||||
int elvl = Legal.GetEggHatchLevel(pkm);
|
||||
if (elvl != pkm.CurrentLevel)
|
||||
AddLine(Severity.Invalid, string.Format(V52, elvl), CheckIdentifier.Level);
|
||||
return;
|
||||
}
|
||||
else if (lvl < pkm.Met_Level)
|
||||
|
||||
int lvl = pkm.CurrentLevel;
|
||||
if (lvl < pkm.Met_Level)
|
||||
AddLine(Severity.Invalid, V85, CheckIdentifier.Level);
|
||||
else if (lvl > pkm.Met_Level && lvl > 1 && lvl != 100 && pkm.EXP == PKX.GetEXP(pkm.Stat_Level, pkm.Species))
|
||||
else if (EncounterMatch.LevelMin != lvl && lvl != 100 && pkm.EXP == PKX.GetEXP(lvl, pkm.Species))
|
||||
AddLine(Severity.Fishy, V87, CheckIdentifier.Level);
|
||||
else
|
||||
AddLine(Severity.Valid, V88, CheckIdentifier.Level);
|
||||
|
|
|
@ -1831,7 +1831,7 @@ namespace PKHeX.Core
|
|||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
internal static int GetEggHatchLevel(PKM pkm) => pkm.Format <= 3 ? 5 : 1;
|
||||
internal static int[] GetSplitBreedGeneration(PKM pkm)
|
||||
{
|
||||
return GetSplitBreedGeneration(pkm.GenNumber);
|
||||
|
|
|
@ -411,6 +411,7 @@ namespace PKHeX.Core
|
|||
public static string V415 {get; set;} = "Eggs cannot have Pokéathlon stats."; // Invalid
|
||||
public static string V416 {get; set;} = "Mystery Gift cannot be received by this version."; // Invalid
|
||||
public static string V417 {get; set;} = "Suspicious Original Trainer details.";
|
||||
public static string V418 {get; set;} = "Individual EV without changing EXP cannot be greater than {0}.";
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
|
|
@ -309,7 +309,7 @@ V360 = Unable to match an event Egg encounter from origin game.
|
|||
V363 = Incompatible moves. Learned at the same level in Red/Blue and Yellow.
|
||||
V365 = Incompatible evolution moves. {0} Move learned at a lower level than other {1} moves.
|
||||
V366 = Incompatible evolution moves. {1} Move learned at a higher level than other {0} moves.
|
||||
V367 = Individual EV for a level 100 encounter in Generation 4 cannot be greater than 100.public static string
|
||||
V367 = Individual EV for a level 100 encounter in Generation 4 cannot be greater than 100.
|
||||
V368 = Eggs can not be infected with Pokérus.
|
||||
V369 = Invalid E-Reader Berry.
|
||||
V370 = Japanese E-Reader Berry in international savegame.
|
||||
|
@ -348,3 +348,4 @@ V414 = Eggs cannot have Shiny Leaf/Crown.
|
|||
V415 = Eggs cannot have Pokéathlon stats.
|
||||
V416 = Mystery Gift cannot be received by this version.
|
||||
V417 = Suspicious Original Trainer details.
|
||||
V418 = Individual EV without changing EXP cannot be greater than {0}.
|
||||
|
|
|
@ -348,3 +348,4 @@ V414 = Eggs cannot have Shiny Leaf/Crown.
|
|||
V415 = Eggs cannot have Pokéathlon stats.
|
||||
V416 = Mystery Gift cannot be received by this version.
|
||||
V417 = Suspicious Original Trainer details.
|
||||
V418 = Individual EV without changing EXP cannot be greater than {0}.
|
||||
|
|
|
@ -348,3 +348,4 @@ V414 = Eggs cannot have Shiny Leaf/Crown.
|
|||
V415 = Eggs cannot have Pokéathlon stats.
|
||||
V416 = Mystery Gift cannot be received by this version.
|
||||
V417 = Suspicious Original Trainer details.
|
||||
V418 = Individual EV without changing EXP cannot be greater than {0}.
|
||||
|
|
Loading…
Reference in a new issue