From 9bc7ee40d62c61f205a651d41a34c779a9866fe2 Mon Sep 17 00:00:00 2001 From: javierhimura Date: Thu, 30 Mar 2017 13:18:05 +0200 Subject: [PATCH 1/7] Safari ball and sport ball checking --- PKHeX/Legality/Checks.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index 9737d4fc8..a8e535707 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -1352,8 +1352,17 @@ private void verifyBall() } if (EncounterType == typeof (EncounterSlot[])) { + EncounterSlot[] enc = EncounterMatch as EncounterSlot[]; + if (pkm.Met_Location == 30016 && pkm.Gen7) // Poké Pelago verifyBallEquals(4); // Pokeball + // For gen3/4 safari zones and BCC verify encounter already filter to not return + // mixed possible encounters between safari, BCC and other encounters + // That means is the first encounter is not safari then there is no safari encounter in the array + else if (3 <= pkm.GenNumber && pkm.GenNumber <= 4 && Legal.IsSafariSlot(enc.First().Type)) + verifyBallEquals(5); // Safariball + else if (pkm.GenNumber == 4 && pkm.HGSS && enc.First().Type == SlotType.BugContest) + verifyBallEquals(0x18); // Sportball else verifyBallEquals(Legal.getWildBalls(pkm)); return; From 70b3b22ab5f88f26c7ec470514db219ec1412140 Mon Sep 17 00:00:00 2001 From: javierhimura Date: Thu, 30 Mar 2017 13:24:38 +0200 Subject: [PATCH 2/7] Correction in the comments --- PKHeX/Legality/Checks.cs | 2 +- PKHeX/Legality/Tables4.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index a8e535707..868454e74 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -1356,7 +1356,7 @@ private void verifyBall() if (pkm.Met_Location == 30016 && pkm.Gen7) // Poké Pelago verifyBallEquals(4); // Pokeball - // For gen3/4 safari zones and BCC verify encounter already filter to not return + // For gen3/4 safari zones and BCC getValidWildEncounters already filter to not return // mixed possible encounters between safari, BCC and other encounters // That means is the first encounter is not safari then there is no safari encounter in the array else if (3 <= pkm.GenNumber && pkm.GenNumber <= 4 && Legal.IsSafariSlot(enc.First().Type)) diff --git a/PKHeX/Legality/Tables4.cs b/PKHeX/Legality/Tables4.cs index a034f6aaf..0fbdec590 100644 --- a/PKHeX/Legality/Tables4.cs +++ b/PKHeX/Legality/Tables4.cs @@ -507,7 +507,7 @@ public static partial class Legal new EncounterStatic { Gift = true, Species = 023, Level = 15, Location = 131, Version = GameVersion.HG }, // Ekans new EncounterStatic { Gift = true, Species = 027, Level = 15, Location = 131, Version = GameVersion.SS }, // Sandshrew new EncounterStatic { Gift = true, Species = 147, Level = 15, Location = 131 }, // Dratini - //Team_Rocket_HQ Trap Floor + // Team Rocket HQ Trap Floor // new EncounterStatic { Species = 101, Level = 23, Location = 213, }, // Electrode Overlaps stationary new EncounterStatic { Species = 100, Level = 23, Location = 213, }, // Voltorb new EncounterStatic { Species = 074, Level = 23, Location = 213, }, // Geodude From ab2d18eb8ad183555972962871c68a9880b04427 Mon Sep 17 00:00:00 2001 From: javierhimura Date: Thu, 30 Mar 2017 20:58:30 +0200 Subject: [PATCH 3/7] Fix for Manaphy Egg Gen 4 event encounter - changed trade egg location in mystery gift search - adapted getMinLevelEncounter to take into account gen 4 eggs in gen 4 games - remvoed manaphy for static encounters, is already included in event database - fix no hatching for an egg check for gen 4 manaphy --- PKHeX/Legality/Checks.cs | 15 ++++++++++++--- PKHeX/Legality/Core.cs | 8 ++++++-- PKHeX/Legality/Tables4.cs | 1 - 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index 868454e74..b1c1dc6c9 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -499,7 +499,7 @@ private CheckResult verifyEncounterEvent() private CheckResult verifyEncounterEgg() { // Check Species - if (Legal.NoHatchFromEgg.Contains(pkm.Species) && (pkm.GenNumber != 4 || pkm.Species == 490)) + if ((Legal.NoHatchFromEgg.Contains(pkm.Species) && pkm.Species != 490) || (pkm.GenNumber != 4 && pkm.Species == 490)) return new CheckResult(Severity.Invalid, V50, CheckIdentifier.Encounter); switch (pkm.GenNumber) @@ -1315,7 +1315,11 @@ private void verifyBall() if (EncounterIsMysteryGift) { - verifyBallEquals(((MysteryGift)EncounterMatch).Ball); + if (pkm.Species == 490 && pkm.Gen4 && ((MysteryGift)EncounterMatch).Ball == 0) + // there is no ball data in Manaphy Mystery Gift + verifyBallEquals(4); // Pokeball + else + verifyBallEquals(((MysteryGift)EncounterMatch).Ball); return; } if (EncounterType == typeof (EncounterLink)) @@ -2184,7 +2188,12 @@ private void verifyMisc() return; } if (pkm.FatefulEncounter) - AddLine(Severity.Invalid, V325, CheckIdentifier.Fateful); + { + if(pkm.Gen3 && (pkm.Species==386 || pkm.Species==151)) + AddLine(Severity.Invalid, V324, CheckIdentifier.Fateful); + else + AddLine(Severity.Invalid, V325, CheckIdentifier.Fateful); + } if (pkm.Format == 5) { var enc = EncounterMatch as EncounterStatic; diff --git a/PKHeX/Legality/Core.cs b/PKHeX/Legality/Core.cs index cb65c3c57..8ad207b3f 100644 --- a/PKHeX/Legality/Core.cs +++ b/PKHeX/Legality/Core.cs @@ -1215,7 +1215,7 @@ private static IEnumerable getMatchingPCD(PKM pkm, IEnumerable Date: Thu, 30 Mar 2017 21:13:38 +0200 Subject: [PATCH 4/7] Fix for deoxys encounter, also was needed for any other gen 3 transfer encounters. EncounterMatch was being overwritten, returns for gen3 the last valid encounter found --- PKHeX/Legality/Checks.cs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index b1c1dc6c9..05cdcce20 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -791,6 +791,7 @@ private CheckResult verifyEncounterG3Transfer() CheckResult InvalidTransferResult = null; CheckResult EggResult = null; CheckResult G3Result = null; + object G3Encounter = null; bool WasEgg = Legal.getWasEgg23(pkm) && !Legal.NoHatchFromEgg.Contains(pkm.Species); if (WasEgg) { @@ -804,20 +805,30 @@ private CheckResult verifyEncounterG3Transfer() InvalidTransferResult = new CheckResult(Severity.Invalid, V60, CheckIdentifier.Encounter); if (pkm.Format != 4 && pkm.Met_Location != 30001) InvalidTransferResult = new CheckResult(Severity.Invalid, V61, CheckIdentifier.Encounter); - + if (null != (EncounterMatch = Legal.getValidStaticEncounter(pkm))) { G3Result = verifyEncounterStatic(); + if (G3Result?.Valid ?? false) + G3Encounter = EncounterMatch; } - if (G3Result !=null) + if (G3Result != null) { EncounterMatch = null; // Reset Encounter Object, test for remaining encounters if (null != (EncounterMatch = Legal.getValidWildEncounters(pkm))) + { G3Result = verifyEncounterWild(); + if (G3Result?.Valid ?? false) + G3Encounter = EncounterMatch; + } if (null != (EncounterMatch = Legal.getValidIngameTrade(pkm))) + { G3Result = verifyEncounterTrade(); + if (G3Result?.Valid ?? false) + G3Encounter = EncounterMatch; + } } // Check events after static, to match Mew/Deoxys static encounters @@ -838,19 +849,25 @@ private CheckResult verifyEncounterG3Transfer() // Even if EggResult is not returned WasEgg is keep true to check in verifymoves first the // non egg encounter moves and after that egg encounter moves, because there is no way to tell // what of the two encounters was the real origin - if (EggResult != null && G3Result!=null) + if (EggResult != null && G3Result != null) { // keep the valid encounter, also if both are valid returns non egg information, because // there is more data in the pokemon to found normal encounter if (EggResult.Valid && !G3Result.Valid) + { G3Result = EggResult; + G3Encounter = null; + } } + if (G3Result?.Valid ?? false) + EncounterMatch = G3Encounter; + // No gen 3 result if (G3Result == null) { // Return both errors, invalid transfer and not a valid encounter found in G3 - return InvalidTransferResult != null? + return InvalidTransferResult != null ? new CheckResult(Severity.Invalid, V80 + Environment.NewLine + InvalidTransferResult.Comment, CheckIdentifier.Encounter) : new CheckResult(Severity.Invalid, V80, CheckIdentifier.Encounter); } From 9bac13ced94c2d1011d12f3be20a0707f6ec5338 Mon Sep 17 00:00:00 2001 From: javierhimura Date: Thu, 30 Mar 2017 21:34:48 +0200 Subject: [PATCH 5/7] Fix deoxys forms to get moves in gen3 format, there is no format info for deoxys in the gen 3 personal tables because deoxys have only 1 form available per game --- PKHeX/Legality/Core.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PKHeX/Legality/Core.cs b/PKHeX/Legality/Core.cs index 8ad207b3f..7a29aa521 100644 --- a/PKHeX/Legality/Core.cs +++ b/PKHeX/Legality/Core.cs @@ -2290,6 +2290,9 @@ private static IEnumerable getValidMoves(PKM pkm, GameVersion Version, DexL if (FormChangeMoves.Contains(species)) // Deoxys & Shaymin & Giratina (others don't have extra but whatever) { int formcount = pkm.PersonalInfo.FormeCount; + if (species == 386 && pkm.Format == 3) + // In gen 3 deoxys has different forms depending on the current game, in personal info there is no alter form info + formcount = 4; for (int i = 0; i < formcount; i++) r.AddRange(getMoves(pkm, species, vs.First().Level, i, moveTutor, Version, LVL, Tutor, Machine, MoveReminder, RemoveTransferHM, Generation)); if (Relearn) r.AddRange(pkm.RelearnMoves); From e93ebf838e2af8af6cb55060316e16b17b4b4490 Mon Sep 17 00:00:00 2001 From: javierhimura Date: Thu, 30 Mar 2017 22:25:08 +0200 Subject: [PATCH 6/7] Fix species in slots time replace for DPPt --- PKHeX/Legality/Structures/EncounterArea.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PKHeX/Legality/Structures/EncounterArea.cs b/PKHeX/Legality/Structures/EncounterArea.cs index ef4d76fe5..250efb7eb 100644 --- a/PKHeX/Legality/Structures/EncounterArea.cs +++ b/PKHeX/Legality/Structures/EncounterArea.cs @@ -408,7 +408,7 @@ private static IEnumerable getSlots4_G_TimeReplace(byte[] data, r continue; var slot = GrassSlots[slotnums[j]].Clone(); - slot.Species = j; + slot.Species = species; slot.Type = t; slots.Add(slot); } From fcaa2d8b18c9e83a5d0e9379d41873ecd4298681 Mon Sep 17 00:00:00 2001 From: javierhimura Date: Fri, 31 Mar 2017 00:14:52 +0200 Subject: [PATCH 7/7] Revert unnecessary change --- PKHeX/Legality/Checks.cs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index 05cdcce20..6832dfc1d 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -2205,12 +2205,8 @@ private void verifyMisc() return; } if (pkm.FatefulEncounter) - { - if(pkm.Gen3 && (pkm.Species==386 || pkm.Species==151)) - AddLine(Severity.Invalid, V324, CheckIdentifier.Fateful); - else - AddLine(Severity.Invalid, V325, CheckIdentifier.Fateful); - } + AddLine(Severity.Invalid, V325, CheckIdentifier.Fateful); + if (pkm.Format == 5) { var enc = EncounterMatch as EncounterStatic;