From 29658c28f2aed4d388fc895c53d259614abcf784 Mon Sep 17 00:00:00 2001 From: Kurt Date: Tue, 10 Jan 2017 17:14:48 -0800 Subject: [PATCH] Fix event OT friendship check Should compare to the original species not to the current Added corresponding wc7 checks (and 4/5->6+ checks, unused). --- PKHeX/Legality/Checks.cs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index 340b97de5..7d833a18a 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -1082,16 +1082,34 @@ private CheckResult verifyHistory() if (pkm.HT_Gender > 1) return new CheckResult(Severity.Invalid, $"HT Gender invalid {pkm.HT_Gender}.", CheckIdentifier.History); + MysteryGift mg = EncounterMatch as MysteryGift; WC6 MatchedWC6 = EncounterMatch as WC6; + WC7 MatchedWC7 = EncounterMatch as WC7; if (MatchedWC6?.OT.Length > 0) // Has Event OT -- null propagation yields false if MatchedWC6=null { - if (pkm.OT_Friendship != pkm.PersonalInfo.BaseFriendship) + if (pkm.OT_Friendship != PersonalTable.AO[MatchedWC6.Species].BaseFriendship) return new CheckResult(Severity.Invalid, "Event OT Friendship does not match base friendship.", CheckIdentifier.History); if (pkm.OT_Affection != 0) return new CheckResult(Severity.Invalid, "Event OT Affection should be zero.", CheckIdentifier.History); if (pkm.CurrentHandler != 1) return new CheckResult(Severity.Invalid, "Current handler should not be Event OT.", CheckIdentifier.History); } + else if (MatchedWC7?.OT.Length > 0) // Has Event OT -- null propagation yields false if MatchedWC7=null + { + if (pkm.OT_Friendship != PersonalTable.SM[MatchedWC7.Species].BaseFriendship) + return new CheckResult(Severity.Invalid, "Event OT Friendship does not match base friendship.", CheckIdentifier.History); + if (pkm.OT_Affection != 0) + return new CheckResult(Severity.Invalid, "Event OT Affection should be zero.", CheckIdentifier.History); + if (pkm.CurrentHandler != 1) + return new CheckResult(Severity.Invalid, "Current handler should not be Event OT.", CheckIdentifier.History); + } + else if (mg != null && mg.Format < 6 && pkm.Format >= 6) + { + if (pkm.OT_Affection != 0) + return new CheckResult(Severity.Invalid, "Event OT Affection should be zero.", CheckIdentifier.History); + if (pkm.CurrentHandler != 1) + return new CheckResult(Severity.Invalid, "Current handler should not be Event OT.", CheckIdentifier.History); + } if (pkm.GenNumber >= 7) { var geo = new[]