Merge pull request #1 from kwsch/master

Update from upstream repo kwsch/PKHeX
This commit is contained in:
wwwwwwzx 2017-03-23 22:24:50 -07:00 committed by GitHub
commit 2e64df7b6e
6 changed files with 25 additions and 10 deletions

View file

@ -122,6 +122,7 @@ namespace PKHeX.Core
if (!pkm.IsOriginValid) if (!pkm.IsOriginValid)
{ AddLine(Severity.Invalid, V187, CheckIdentifier.None); return; } { AddLine(Severity.Invalid, V187, CheckIdentifier.None); return; }
verifyPreRelearn();
updateEncounterChain(); updateEncounterChain();
updateMoveLegality(); updateMoveLegality();
updateEncounterInfo(); updateEncounterInfo();
@ -134,6 +135,7 @@ namespace PKHeX.Core
if (!pkm.IsOriginValid) if (!pkm.IsOriginValid)
{ AddLine(Severity.Invalid, V187, CheckIdentifier.None); return; } { AddLine(Severity.Invalid, V187, CheckIdentifier.None); return; }
verifyPreRelearn();
updateEncounterChain(); updateEncounterChain();
updateMoveLegality(); updateMoveLegality();
updateEncounterInfo(); updateEncounterInfo();

View file

@ -241,7 +241,7 @@ namespace PKHeX.Core
{ {
// Can't have another language name if it hasn't evolved or wasn't a language-traded egg. // Can't have another language name if it hasn't evolved or wasn't a language-traded egg.
bool match = PKX.getSpeciesNameGeneration(pkm.Species, pkm.Language, pkm.Format) == nickname; bool match = PKX.getSpeciesNameGeneration(pkm.Species, pkm.Language, pkm.Format) == nickname;
match |= (pkm.WasTradedEgg || Legal.getHasEvolved(pkm)) && PKX.getIsNicknamedAnyLanguage(pkm.Species, nickname, pkm.Format); match |= (pkm.WasTradedEgg || Legal.getHasEvolved(pkm)) && !PKX.getIsNicknamedAnyLanguage(pkm.Species, nickname, pkm.Format);
if (!match) if (!match)
{ {
@ -1107,7 +1107,7 @@ namespace PKHeX.Core
if (3 <= pkm.Format && pkm.Format <= 5) // 3-5 if (3 <= pkm.Format && pkm.Format <= 5) // 3-5
{ {
if (pkm.Version != (int) GameVersion.CXD && abilities[0] != abilities[1] && pkm.PIDAbility != abilval) if (pkm.Version != (int) GameVersion.CXD && abilities[0] != abilities[1] && pkm.AbilityNumber != 1 << abilval)
{ {
AddLine(Severity.Invalid, V113, CheckIdentifier.Ability); AddLine(Severity.Invalid, V113, CheckIdentifier.Ability);
return; return;
@ -2149,6 +2149,16 @@ namespace PKHeX.Core
return res; return res;
} }
private void verifyPreRelearn()
{
// For origins prior to relearn moves, need to try to match a mystery gift if applicable.
if (pkm.WasEvent || pkm.WasEventEgg)
{
EventGiftMatch = new List<MysteryGift>(Legal.getValidGifts(pkm));
EncounterMatch = EventGiftMatch.FirstOrDefault();
}
}
private CheckResult[] verifyRelearn() private CheckResult[] verifyRelearn()
{ {
RelearnBase = null; RelearnBase = null;

View file

@ -1071,13 +1071,13 @@ namespace PKHeX.Core
{ {
if (pkm.Egg_Location == 0) // Not Egg if (pkm.Egg_Location == 0) // Not Egg
{ {
if (wc.CardID != pkm.SID) continue; if (wc.SID != pkm.SID) continue;
if (wc.TID != pkm.TID) continue; if (wc.TID != pkm.TID) continue;
if (wc.OT != pkm.OT_Name) continue; if (wc.OT != pkm.OT_Name) continue;
if (wc.OTGender != pkm.OT_Gender) continue; if (wc.OTGender != pkm.OT_Gender) continue;
if (wc.PIDType == 0 && pkm.PID != wc.PID) continue; if (wc.PID != 0 && pkm.PID != wc.PID) continue;
if (wc.PIDType == 0 && pkm.IsShiny) continue;
if (wc.PIDType == 2 && !pkm.IsShiny) continue; if (wc.PIDType == 2 && !pkm.IsShiny) continue;
if (wc.PIDType == 3 && pkm.IsShiny) continue;
if (wc.OriginGame != 0 && wc.OriginGame != pkm.Version) continue; if (wc.OriginGame != 0 && wc.OriginGame != pkm.Version) continue;
if (wc.Language != 0 && wc.Language != pkm.Language) continue; if (wc.Language != 0 && wc.Language != pkm.Language) continue;
} }

View file

@ -29,6 +29,7 @@ namespace PKHeX.Core
public override int Nature { get { return (int)(PID%25); } set { } } public override int Nature { get { return (int)(PID%25); } set { } }
public override int CurrentFriendship { get { return OT_Friendship; } set { OT_Friendship = value; } } public override int CurrentFriendship { get { return OT_Friendship; } set { OT_Friendship = value; } }
public override int CurrentHandler { get { return 0; } set { } } public override int CurrentHandler { get { return 0; } set { } }
public override int AbilityNumber { get { return 1 << PIDAbility; } set { } }
// Structure // Structure
public override uint PID { get { return BitConverter.ToUInt32(Data, 0x00); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x00); } } public override uint PID { get { return BitConverter.ToUInt32(Data, 0x00); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x00); } }

View file

@ -29,6 +29,7 @@ namespace PKHeX.Core
public override uint EncryptionConstant { get { return PID; } set { } } public override uint EncryptionConstant { get { return PID; } set { } }
public override int CurrentFriendship { get { return OT_Friendship; } set { OT_Friendship = value; } } public override int CurrentFriendship { get { return OT_Friendship; } set { OT_Friendship = value; } }
public override int CurrentHandler { get { return 0; } set { } } public override int CurrentHandler { get { return 0; } set { } }
public override int AbilityNumber { get { return HiddenAbility ? 4 : 1 << PIDAbility; } set { } }
// Structure // Structure
public override uint PID { get { return BitConverter.ToUInt32(Data, 0x00); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x00); } } public override uint PID { get { return BitConverter.ToUInt32(Data, 0x00); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x00); } }

View file

@ -360,9 +360,10 @@ namespace PKHeX.Core
{ {
if (GenNumber > 5 || Format > 5) if (GenNumber > 5 || Format > 5)
return -1; return -1;
if (GenNumber == 5)
return (int)((PID >> 16) & 1); if (Version == (int) GameVersion.CXD)
return (int)(PID & 1); return Array.IndexOf(PersonalInfo.Abilities, Ability);
return (int)((GenNumber == 5 ? PID >> 16 : PID) & 1);
} }
} }