From a099d18c9cb172e6ffe53fdcd93b80a716a00bc6 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 18 Mar 2017 16:50:34 -0700 Subject: [PATCH] Alpha 3-5 legality checking Incorporates files from #190 Skeleton added for future implementations; currently missing gifts, encounter info, and the fine tuning that follows. Basically sets up areas for future implementation... feel free to submit pull requests filling in the EncounterStatic/EncounterTrade blocks with the basic info. I'll probably focus on gen5->4->3 in terms of priority. Encounter slots need to be marked up for encounter slot legality (yay 32bit RNG), and will be used for PIDIV detection too. XD/C is not in this round of implementation. Pretty much every pkm 3-5 will show up as invalid until this round of dev is finished. --- PKHeX.WinForms/MainWindow/Main.cs | 4 + PKHeX.WinForms/Subforms/SAV_Database.cs | 8 +- PKHeX/Legality/Analysis.cs | 58 +- PKHeX/Legality/Core.cs | 668 +++++++++++++++++++----- PKHeX/Legality/Tables3.cs | 43 ++ PKHeX/Legality/Tables4.cs | 27 + PKHeX/Legality/Tables5.cs | 24 + PKHeX/PKHeX.Core.csproj | 18 +- PKHeX/PKM/PKM.cs | 4 +- PKHeX/PersonalInfo/PersonalInfo.cs | 11 +- PKHeX/Properties/Resources.Designer.cs | 178 ++++++- PKHeX/Properties/Resources.resx | 50 +- PKHeX/Resources/byte/eggmove_bw.pkl | Bin 0 -> 10496 bytes PKHeX/Resources/byte/eggmove_dppt.pkl | Bin 0 -> 6484 bytes PKHeX/Resources/byte/eggmove_hgss.pkl | Bin 0 -> 6756 bytes PKHeX/Resources/byte/eggmove_rs.pkl | Bin 0 -> 4276 bytes PKHeX/Resources/byte/hmtm_g3.pkl | Bin 0 -> 4652 bytes PKHeX/Resources/byte/lvlmove_b2w2.pkl | Bin 0 -> 45652 bytes PKHeX/Resources/byte/lvlmove_bw.pkl | Bin 0 -> 44188 bytes PKHeX/Resources/byte/lvlmove_dp.pkl | Bin 0 -> 28404 bytes PKHeX/Resources/byte/lvlmove_e.pkl | Bin 0 -> 17348 bytes PKHeX/Resources/byte/lvlmove_fr.pkl | Bin 0 -> 17604 bytes PKHeX/Resources/byte/lvlmove_hgss.pkl | Bin 0 -> 29100 bytes PKHeX/Resources/byte/lvlmove_lg.pkl | Bin 0 -> 17612 bytes PKHeX/Resources/byte/lvlmove_pt.pkl | Bin 0 -> 29056 bytes PKHeX/Resources/byte/lvlmove_rs.pkl | Bin 0 -> 17348 bytes PKHeX/Resources/byte/tutors_g3.pkl | Bin 0 -> 3104 bytes PKHeX/Resources/byte/tutors_g4.pkl | Bin 0 -> 6104 bytes PKHeX/Saves/SaveUtil.cs | 4 +- 29 files changed, 946 insertions(+), 151 deletions(-) create mode 100644 PKHeX/Resources/byte/eggmove_bw.pkl create mode 100644 PKHeX/Resources/byte/eggmove_dppt.pkl create mode 100644 PKHeX/Resources/byte/eggmove_hgss.pkl create mode 100644 PKHeX/Resources/byte/eggmove_rs.pkl create mode 100644 PKHeX/Resources/byte/hmtm_g3.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_b2w2.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_bw.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_dp.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_e.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_fr.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_hgss.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_lg.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_pt.pkl create mode 100644 PKHeX/Resources/byte/lvlmove_rs.pkl create mode 100644 PKHeX/Resources/byte/tutors_g3.pkl create mode 100644 PKHeX/Resources/byte/tutors_g4.pkl diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs index 1f90e5e5c..a75262358 100644 --- a/PKHeX.WinForms/MainWindow/Main.cs +++ b/PKHeX.WinForms/MainWindow/Main.cs @@ -715,8 +715,12 @@ private void openQuick(string path, bool force = false) byte[] input; try { input = File.ReadAllBytes(path); } catch (Exception e) { WinFormsUtil.Error("Unable to load file. It could be in use by another program.\nPath: " + path, e); return; } + #if DEBUG + openFile(input, path, ext); + #else try { openFile(input, path, ext); } catch (Exception e) { WinFormsUtil.Error("Unable to load file.\nPath: " + path, e); } + #endif } } private void openFile(byte[] input, string path, string ext) diff --git a/PKHeX.WinForms/Subforms/SAV_Database.cs b/PKHeX.WinForms/Subforms/SAV_Database.cs index 39b500abf..f62741eb8 100644 --- a/PKHeX.WinForms/Subforms/SAV_Database.cs +++ b/PKHeX.WinForms/Subforms/SAV_Database.cs @@ -481,10 +481,10 @@ private void B_Search_Click(object sender, EventArgs e) slotSelected = -1; // reset the slot last viewed - if (Menu_SearchLegal.Checked && !Menu_SearchIllegal.Checked) // Legal Only - res = res.Where(pk => pk.GenNumber >= 6 && new LegalityAnalysis(pk).Valid); - if (!Menu_SearchLegal.Checked && Menu_SearchIllegal.Checked) // Illegal Only - res = res.Where(pk => pk.GenNumber >= 6 && !new LegalityAnalysis(pk).Valid); + if (Menu_SearchLegal.Checked && !Menu_SearchIllegal.Checked) + res = res.Where(pk => new LegalityAnalysis(pk).ParsedValid); + if (!Menu_SearchLegal.Checked && Menu_SearchIllegal.Checked) + res = res.Where(pk => new LegalityAnalysis(pk).ParsedInvalid); if (RTB_Instructions.Lines.Any(line => line.Length > 0)) { diff --git a/PKHeX/Legality/Analysis.cs b/PKHeX/Legality/Analysis.cs index 2e1150a33..a715680f7 100644 --- a/PKHeX/Legality/Analysis.cs +++ b/PKHeX/Legality/Analysis.cs @@ -21,6 +21,8 @@ public partial class LegalityAnalysis public readonly bool Parsed; public readonly bool Valid; + public bool ParsedValid => Parsed && Valid; + public bool ParsedInvalid => Parsed && !Valid; public CheckResult[] vMoves = new CheckResult[4]; public CheckResult[] vRelearn = new CheckResult[4]; public string Report => getLegalityReport(); @@ -48,6 +50,9 @@ public LegalityAnalysis(PKM pk) if (!Parse.Any()) switch (pk.GenNumber) { + case 3: parsePK3(pk); break; + case 4: parsePK4(pk); break; + case 5: parsePK5(pk); break; case 6: parsePK6(pk); break; case 1: parsePK7(pk); break; @@ -59,7 +64,7 @@ public LegalityAnalysis(PKM pk) { if (Parse.Any(chk => !chk.Valid)) Valid = false; - if (vMoves.Any(m => m.Valid != true)) + else if (vMoves.Any(m => m.Valid != true)) Valid = false; else if (vRelearn.Any(m => m.Valid != true)) Valid = false; @@ -99,6 +104,39 @@ private void parsePK1(PKM pk) verifyG1OT(); verifyEggMoves(); } + private void parsePK3(PKM pk) + { + pkm = pk; + if (!pkm.IsOriginValid) + { AddLine(Severity.Invalid, "Species does not exist in origin game.", CheckIdentifier.None); return; } + + updateEncounterChain(); + updateMoveLegality(); + updateEncounterInfo(); + updateChecks(); + } + private void parsePK4(PKM pk) + { + pkm = pk; + if (!pkm.IsOriginValid) + { AddLine(Severity.Invalid, "Species does not exist in origin game.", CheckIdentifier.None); return; } + + updateEncounterChain(); + updateMoveLegality(); + updateEncounterInfo(); + updateChecks(); + } + private void parsePK5(PKM pk) + { + pkm = pk; + if (!pkm.IsOriginValid) + { AddLine(Severity.Invalid, "Species does not exist in origin game.", CheckIdentifier.None); return; } + + updateEncounterChain(); + updateMoveLegality(); + updateEncounterInfo(); + updateChecks(); + } private void parsePK6(PKM pk) { pkm = pk; @@ -156,29 +194,31 @@ private void updateEncounterInfo() } private void updateChecks() { - History = verifyHistory(); - AddLine(History); - verifyECPID(); verifyNickname(); verifyOT(); verifyIVs(); - verifyHyperTraining(); verifyEVs(); verifyLevel(); - verifyMedals(); verifyRibbons(); verifyAbility(); verifyBall(); - verifyOTMemory(); - verifyHTMemory(); verifyRegion(); verifyForm(); verifyMisc(); verifyGender(); verifyItem(); - if (pkm.GenNumber < 5) + if (pkm.Format >= 6) + { + History = verifyHistory(); + AddLine(History); + verifyOTMemory(); + verifyHTMemory(); + verifyHyperTraining(); + verifyMedals(); + } + if (pkm.GenNumber < 5 || pkm.VC) verifyEggMoves(); verifyVersionEvolution(); diff --git a/PKHeX/Legality/Core.cs b/PKHeX/Legality/Core.cs index 40ff21eed..f5476f313 100644 --- a/PKHeX/Legality/Core.cs +++ b/PKHeX/Legality/Core.cs @@ -29,6 +29,36 @@ public static partial class Legal private static readonly EncounterArea[] SlotsGSC; private static readonly EncounterStatic[] StaticGSC; + // Gen 3 + private static readonly Learnset[] LevelUpE = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_e, "em")); + private static readonly Learnset[] LevelUpRS = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_rs, "rs")); + private static readonly Learnset[] LevelUpFR = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_fr, "fr")); + private static readonly Learnset[] LevelUpLG = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_lg, "lg")); + private static readonly EggMoves[] EggMovesRS = EggMoves6.getArray(Data.unpackMini(Resources.eggmove_rs, "rs")); + //private static readonly TMHMTutorMoves[] TutorsG3 = TMHMTutorMoves.getArray(Data.unpackMini(Properties.Resources.tutors_g3, "g3")); + //private static readonly TMHMTutorMoves[] HMTMG3 = TMHMTutorMoves.getArray(Data.unpackMini(Properties.Resources.hmtm_g3, "g3")); + private static readonly EvolutionTree Evolves3; + private static readonly EncounterArea[] SlotsR, SlotsS, SlotsE, SlotsFR, SlotsLG; + private static readonly EncounterStatic[] StaticR, StaticS, StaticE, StaticFR, StaticLG; + + // Gen 4 + private static readonly Learnset[] LevelUpDP = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_dp, "dp")); + private static readonly Learnset[] LevelUpPt = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_pt, "pt")); + private static readonly Learnset[] LevelUpHGSS = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_hgss, "hs")); + private static readonly EggMoves[] EggMovesDPPt = EggMoves6.getArray(Data.unpackMini(Resources.eggmove_dppt, "dp")); + private static readonly EggMoves[] EggMovesHGSS = EggMoves6.getArray(Data.unpackMini(Resources.eggmove_hgss, "hs")); + private static readonly EvolutionTree Evolves4; + private static readonly EncounterArea[] SlotsD, SlotsP, SlotsPt, SlotsHG, SlotsSS; + private static readonly EncounterStatic[] StaticD, StaticP, StaticPt, StaticHG, StaticSS; + + // Gen 5 + private static readonly Learnset[] LevelUpBW = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_bw, "51")); + private static readonly Learnset[] LevelUpB2W2 = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_b2w2, "52")); + private static readonly EggMoves[] EggMovesBW = EggMoves6.getArray(Data.unpackMini(Resources.eggmove_bw, "bw")); + private static readonly EvolutionTree Evolves5; + private static readonly EncounterArea[] SlotsB, SlotsW, SlotsB2, SlotsW2; + private static readonly EncounterStatic[] StaticB, StaticW, StaticB2, StaticW2; + // Gen 6 private static readonly EggMoves[] EggMovesXY = EggMoves6.getArray(Data.unpackMini(Resources.eggmove_xy, "xy")); private static readonly Learnset[] LevelUpXY = Learnset6.getArray(Data.unpackMini(Resources.lvlmove_xy, "xy")); @@ -56,6 +86,27 @@ private static EncounterStatic[] getStaticEncounters(GameVersion Game) case GameVersion.GSC: return Encounter_GSC; + case GameVersion.R: case GameVersion.S: case GameVersion.E: + table = Encounter_RSE; + break; + case GameVersion.FR: case GameVersion.LG: + table = Encounter_FRLG; + break; + + case GameVersion.D: case GameVersion.P: case GameVersion.Pt: + table = Encounter_DPPt; + break; + case GameVersion.HG: case GameVersion.SS: + table = Encounter_HGSS; + break; + + case GameVersion.B: case GameVersion.W: + table = Encounter_BW; + break; + case GameVersion.B2: case GameVersion.W2: + table = Encounter_B2W2; + break; + case GameVersion.X: case GameVersion.Y: table = Encounter_XY; break; @@ -102,7 +153,7 @@ private static EncounterArea[] getEncounterTables(GameVersion Game) break; } if (ident == null) - return null; + return new EncounterArea[0]; return getEncounterTables(tables, ident); } @@ -147,49 +198,113 @@ private static void MarkG7SMSlots(ref EncounterArea[] Areas) foreach (EncounterSlot s in Areas.SelectMany(area => area.Slots)) s.Type = SlotType.SOS; } + private static EncounterArea[] getTables1() + { + var red = EncounterArea.getArray1_GW(Resources.encounter_red); + var blu = EncounterArea.getArray1_GW(Resources.encounter_blue); + var ylw = EncounterArea.getArray1_GW(Resources.encounter_yellow); + var rb_fish = EncounterArea.getArray1_F(Resources.encounter_rb_f); + var ylw_fish = EncounterArea.getArray1_FY(Resources.encounter_yellow_f); + red = addExtraTableSlots(red, rb_fish); + blu = addExtraTableSlots(blu, rb_fish); + ylw = addExtraTableSlots(ylw, ylw_fish); + + var table = addExtraTableSlots(addExtraTableSlots(red, blu), ylw); + Array.Resize(ref table, table.Length + 1); + table[table.Length - 1] = FishOldGood_RBY; + + return table; + } + private static EncounterArea[] getTables2() + { + // Grass/Water + var g = EncounterArea.getArray2_GW(Resources.encounter_gold); + var s = EncounterArea.getArray2_GW(Resources.encounter_silver); + var c = EncounterArea.getArray2_GW(Resources.encounter_crystal); + // Fishing + var f = EncounterArea.getArray2_F(Resources.encounter_gsc_f); + // Headbutt/Rock Smash + var h_c = EncounterArea.getArray2_H(Resources.encounter_crystal_h); + var h_g = EncounterArea.getArray2_H(Resources.encounter_gold_h); + var h_s = EncounterArea.getArray2_H(Resources.encounter_silver_h); + var h = h_c.Concat(h_g).Concat(h_s); + + return addExtraTableSlots(g, s).Concat(c).Concat(f).Concat(h).ToArray(); + } static Legal() // Setup { // Gen 1 { StaticRBY = getStaticEncounters(GameVersion.RBY); - - var red = EncounterArea.getArray1_GW(Resources.encounter_red); - var blu = EncounterArea.getArray1_GW(Resources.encounter_blue); - var ylw = EncounterArea.getArray1_GW(Resources.encounter_yellow); - var rb_fish = EncounterArea.getArray1_F(Resources.encounter_rb_f); - var ylw_fish = EncounterArea.getArray1_FY(Resources.encounter_yellow_f); - - red = addExtraTableSlots(red, rb_fish); - blu = addExtraTableSlots(blu, rb_fish); - ylw = addExtraTableSlots(ylw, ylw_fish); - - SlotsRBY = addExtraTableSlots(addExtraTableSlots(red, blu), ylw); - Array.Resize(ref SlotsRBY, SlotsRBY.Length + 1); - SlotsRBY[SlotsRBY.Length - 1] = FishOldGood_RBY; - + SlotsRBY = getTables1(); Evolves1 = new EvolutionTree(new[] { Resources.evos_rby }, GameVersion.RBY, PersonalTable.Y, MaxSpeciesID_1); } // Gen 2 { StaticGSC = getStaticEncounters(GameVersion.GSC); - - // Grass/Water - var g = EncounterArea.getArray2_GW(Resources.encounter_gold); - var s = EncounterArea.getArray2_GW(Resources.encounter_silver); - var c = EncounterArea.getArray2_GW(Resources.encounter_crystal); - // Fishing - var f = EncounterArea.getArray2_F(Resources.encounter_gsc_f); - // Headbutt/Rock Smash - var h_c = EncounterArea.getArray2_H(Resources.encounter_crystal_h); - var h_g = EncounterArea.getArray2_H(Resources.encounter_gold_h); - var h_s = EncounterArea.getArray2_H(Resources.encounter_silver_h); - var h = h_c.Concat(h_g).Concat(h_s); - - SlotsGSC = addExtraTableSlots(g, s).Concat(c).Concat(f).Concat(h).ToArray(); - + SlotsGSC = getTables2(); Evolves2 = new EvolutionTree(new[] { Resources.evos_gsc }, GameVersion.GSC, PersonalTable.C, MaxSpeciesID_2); } + // Gen3 + { + StaticR = getStaticEncounters(GameVersion.R); + StaticS = getStaticEncounters(GameVersion.S); + StaticE = getStaticEncounters(GameVersion.E); + StaticFR = getStaticEncounters(GameVersion.FR); + StaticLG = getStaticEncounters(GameVersion.LG); + + SlotsR = getEncounterTables(GameVersion.R); + SlotsS = getEncounterTables(GameVersion.S); + SlotsE = getEncounterTables(GameVersion.E); + SlotsFR = getEncounterTables(GameVersion.FR); + SlotsLG = getEncounterTables(GameVersion.LG); + + //Evolves3 = new EvolutionTree(Data.unpackMini(Resources.evos_rs, "rs"), GameVersion.RS, PersonalTable.RS, MaxSpeciesID_3); + + // Update Personal Entries with TM/Tutor Data + var TMHM = Data.unpackMini(Resources.hmtm_g3, "g3"); + for (int i = 0; i <= MaxSpeciesID_3; i++) + PersonalTable.RS[i].AddTMHM(TMHM[i]); + var tutors = Data.unpackMini(Resources.tutors_g3, "g3"); + for (int i = 0; i <= MaxSpeciesID_3; i++) + PersonalTable.RS[i].AddTypeTutors(tutors[i]); + } + // Gen 4 + { + StaticD = getStaticEncounters(GameVersion.D); + StaticP = getStaticEncounters(GameVersion.P); + StaticPt = getStaticEncounters(GameVersion.Pt); + StaticHG = getStaticEncounters(GameVersion.HG); + StaticSS = getStaticEncounters(GameVersion.SS); + + SlotsD = getEncounterTables(GameVersion.D); + SlotsP = getEncounterTables(GameVersion.P); + SlotsPt = getEncounterTables(GameVersion.Pt); + SlotsHG = getEncounterTables(GameVersion.HG); + SlotsSS = getEncounterTables(GameVersion.SS); + + //Evolves4 = new EvolutionTree(Data.unpackMini(Resources.evos_dp, "dp"), GameVersion.DP, PersonalTable.DP, MaxSpeciesID_4); + + // Update Personal Entries with Tutor Data + var tutors = Data.unpackMini(Resources.tutors_g4, "g4"); + for (int i = 0; i <= MaxSpeciesID_4; i++) + PersonalTable.HGSS[i].AddTypeTutors(tutors[i]); + } + // Gen 5 + { + StaticB = getStaticEncounters(GameVersion.B); + StaticW = getStaticEncounters(GameVersion.W); + StaticB2 = getStaticEncounters(GameVersion.B2); + StaticW2 = getStaticEncounters(GameVersion.W2); + + SlotsB = getEncounterTables(GameVersion.B); + SlotsW = getEncounterTables(GameVersion.W); + SlotsB2 = getEncounterTables(GameVersion.B2); + SlotsW2 = getEncounterTables(GameVersion.W2); + + //Evolves5 = new EvolutionTree(Data.unpackMini(Resources.evos_bw, "bw"), GameVersion.BW, PersonalTable.BW, MaxSpeciesID_5); + } // Gen 6 { StaticX = getStaticEncounters(GameVersion.X); @@ -226,6 +341,10 @@ private static void MarkG7SMSlots(ref EncounterArea[] Areas) Evolves7 = new EvolutionTree(Data.unpackMini(Resources.evos_sm, "sm"), GameVersion.SM, PersonalTable.SM, MaxSpeciesID_7); } + + // Temp + + Evolves3 = Evolves4 = Evolves5 = Evolves6; } // Moves @@ -246,18 +365,18 @@ internal static IEnumerable getValidMoves(PKM pkm, DexLevel[] evoChain, int internal static IEnumerable getValidRelearn(PKM pkm, int skipOption) { List r = new List { 0 }; - if (pkm.GenNumber < 6) + if (pkm.GenNumber < 6 || pkm.VC) return r; int species = getBaseSpecies(pkm, skipOption); - r.AddRange(getLVLMoves(pkm, species, 1, pkm.AltForm)); + r.AddRange(getRelearnLVLMoves(pkm, species, 1, pkm.AltForm)); int form = pkm.AltForm; if (pkm.Format == 6 && pkm.Species != 678) form = 0; r.AddRange(getEggMoves(pkm, species, form)); - r.AddRange(getLVLMoves(pkm, species, 100, pkm.AltForm)); + r.AddRange(getRelearnLVLMoves(pkm, species, 100, pkm.AltForm)); return r.Distinct(); } internal static IEnumerable getBaseEggMoves(PKM pkm, int skipOption, GameVersion gameSource) @@ -269,6 +388,41 @@ internal static IEnumerable getBaseEggMoves(PKM pkm, int skipOption, GameVe switch (gameSource) { + case GameVersion.R: + case GameVersion.S: + case GameVersion.RS: + if (pkm.InhabitedGeneration(3)) + return LevelUpRS[species].getMoves(1); + break; + case GameVersion.E: + if (pkm.InhabitedGeneration(3)) + return LevelUpE[species].getMoves(1); + break; + case GameVersion.FR: + case GameVersion.LG: + case GameVersion.FRLG: + // only difference in FR/LG is deoxys which doesn't breed. + if (pkm.InhabitedGeneration(3)) + return LevelUpFR[species].getMoves(1); + break; + + case GameVersion.D: + case GameVersion.P: + case GameVersion.DP: + if (pkm.InhabitedGeneration(4)) + return LevelUpDP[species].getMoves(1); + break; + case GameVersion.Pt: + if (pkm.InhabitedGeneration(4)) + return LevelUpPt[species].getMoves(1); + break; + case GameVersion.HG: + case GameVersion.SS: + case GameVersion.HGSS: + if (pkm.InhabitedGeneration(4)) + return LevelUpHGSS[species].getMoves(1); + break; + case GameVersion.X: case GameVersion.Y: case GameVersion.XY: @@ -386,13 +540,7 @@ internal static EncounterTrade getValidIngameTrade(PKM pkm, GameVersion gameSour // Get valid pre-evolutions IEnumerable p = getValidPreEvolutions(pkm); - EncounterTrade[] table = null; - if (pkm.XY) - table = TradeGift_XY; - else if (pkm.AO) - table = TradeGift_AO; - else if (pkm.SM) - table = TradeGift_SM; + EncounterTrade[] table = getEncounterTradeTable(pkm); EncounterTrade z = table?.FirstOrDefault(f => p.Any(r => r.Species == f.Species)); @@ -409,12 +557,18 @@ internal static EncounterTrade getValidIngameTrade(PKM pkm, GameVersion gameSour return null; if (z.SID != pkm.SID) return null; - if (pkm.HasOriginalMetLocation && z.Location != pkm.Met_Location) - return null; - if (pkm.HasOriginalMetLocation && z.Level != lvl) - return null; - if (!pkm.HasOriginalMetLocation && z.Level > lvl) - return null; + if (pkm.HasOriginalMetLocation) + { + if (z.Location != pkm.Met_Location) + return null; + if (z.Level != lvl) + return null; + } + else + { + if (z.Level > lvl) + return null; + } if (z.Nature != Nature.Random && (int)z.Nature != pkm.Nature) return null; if (z.Gender != pkm.Gender) @@ -426,6 +580,23 @@ internal static EncounterTrade getValidIngameTrade(PKM pkm, GameVersion gameSour return z; } + private static EncounterTrade[] getEncounterTradeTable(PKM pkm) + { + switch (pkm.GenNumber) + { + case 3: + return pkm.FRLG ? TradeGift_FRLG : TradeGift_RSE; + case 4: + return pkm.HGSS ? TradeGift_HGSS : TradeGift_DPPt; + case 5: + return pkm.B2W2 ? TradeGift_B2W2 : TradeGift_BW; + case 6: + return pkm.XY ? TradeGift_XY : TradeGift_AO; + case 7: + return pkm.SM ? TradeGift_SM : null; + } + return null; + } private static EncounterTrade getValidEncounterTradeVC(PKM pkm, GameVersion gameSource) { var p = getValidPreEvolutions(pkm).ToArray(); @@ -593,12 +764,14 @@ private static EvolutionTree getEvolutionTable(PKM pkm) return Evolves1; case 2: return Evolves2; - + case 3: + return Evolves3; + case 4: + return Evolves4; + case 5: + return Evolves5; case 6: return Evolves6; - case 7: - return Evolves7; - default: return Evolves7; } @@ -608,6 +781,10 @@ internal static IEnumerable getValidGifts(PKM pkm) { switch (pkm.GenNumber) { + case 4: + return getMatchingPGT(pkm, MGDB_G4); + case 5: + return getMatchingPGF(pkm, MGDB_G5); case 6: return getMatchingWC6(pkm, MGDB_G6); case 7: @@ -616,6 +793,96 @@ internal static IEnumerable getValidGifts(PKM pkm) return new List(); } } + private static IEnumerable getMatchingPGT(PKM pkm, IEnumerable DB) + { + var validPGT = new List(); + if (DB == null) + return validPGT; + + // todo + var vs = getValidPreEvolutions(pkm).ToArray(); + foreach (PGT mg in DB.OfType().Where(wc => vs.Any(dl => dl.Species == wc.Species))) + { + var wc = mg.PK; + if (pkm.Egg_Location == 0) // Not Egg + { + if (wc.SID != pkm.SID) continue; + if (wc.TID != pkm.TID) continue; + if (wc.OT_Name != pkm.OT_Name) continue; + if (wc.OT_Gender != pkm.OT_Gender) continue; + if (wc.Version != 0 && wc.Version != pkm.Version) continue; + if (wc.Language != 0 && wc.Language != pkm.Language) continue; + } + if (wc.AltForm != pkm.AltForm && vs.All(dl => !getCanFormChange(pkm, dl.Species))) continue; + if (wc.Met_Location != pkm.Met_Location) continue; + if (wc.Egg_Location != pkm.Egg_Location) continue; + if (wc.CurrentLevel != pkm.Met_Level) continue; + if (wc.Ball != pkm.Ball) continue; + if (wc.OT_Gender < 3 && wc.OT_Gender != pkm.OT_Gender) continue; + if (wc.Nature != 0xFF && wc.Nature != pkm.Nature) continue; + if (wc.Gender != 3 && wc.Gender != pkm.Gender) continue; + + if (wc.CNT_Cool > pkm.CNT_Cool) continue; + if (wc.CNT_Beauty > pkm.CNT_Beauty) continue; + if (wc.CNT_Cute > pkm.CNT_Cute) continue; + if (wc.CNT_Smart > pkm.CNT_Smart) continue; + if (wc.CNT_Tough > pkm.CNT_Tough) continue; + if (wc.CNT_Sheen > pkm.CNT_Sheen) continue; + + // Some checks are best performed separately as they are caused by users screwing up valid data. + // if (wc.Level > pkm.CurrentLevel) continue; // Defer to level legality + // RIBBONS: Defer to ribbon legality + + validPGT.Add(mg); + } + return validPGT; + } + private static IEnumerable getMatchingPGF(PKM pkm, IEnumerable DB) + { + var validPGF = new List(); + if (DB == null) + return validPGF; + + // todo + var vs = getValidPreEvolutions(pkm).ToArray(); + foreach (PGF wc in DB.OfType().Where(wc => vs.Any(dl => dl.Species == wc.Species))) + { + if (pkm.Egg_Location == 0) // Not Egg + { + if (wc.CardID != pkm.SID) continue; + if (wc.TID != pkm.TID) continue; + if (wc.OT != pkm.OT_Name) continue; + if (wc.OTGender != pkm.OT_Gender) continue; + if (wc.PIDType == 0 && pkm.PID != wc.PID) 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.Language != 0 && wc.Language != pkm.Language) continue; + } + if (wc.Form != pkm.AltForm && vs.All(dl => !getCanFormChange(pkm, dl.Species))) continue; + if (wc.MetLocation != pkm.Met_Location) continue; + if (wc.EggLocation != pkm.Egg_Location) continue; + if (wc.Level != pkm.Met_Level) continue; + if (wc.Ball != pkm.Ball) continue; + if (wc.OTGender < 3 && wc.OTGender != pkm.OT_Gender) continue; + if (wc.Nature != 0xFF && wc.Nature != pkm.Nature) continue; + if (wc.Gender != 3 && wc.Gender != pkm.Gender) continue; + + if (wc.CNT_Cool > pkm.CNT_Cool) continue; + if (wc.CNT_Beauty > pkm.CNT_Beauty) continue; + if (wc.CNT_Cute > pkm.CNT_Cute) continue; + if (wc.CNT_Smart > pkm.CNT_Smart) continue; + if (wc.CNT_Tough > pkm.CNT_Tough) continue; + if (wc.CNT_Sheen > pkm.CNT_Sheen) continue; + + // Some checks are best performed separately as they are caused by users screwing up valid data. + // if (wc.Level > pkm.CurrentLevel) continue; // Defer to level legality + // RIBBONS: Defer to ribbon legality + + validPGF.Add(wc); + } + return validPGF; + } private static IEnumerable getMatchingWC6(PKM pkm, IEnumerable DB) { List validWC6 = new List(); @@ -924,9 +1191,7 @@ internal static bool getCanBeCaptured(int species, int gen, GameVersion version { switch (gen) { - case 1: - return getCanBeCaptured(species, SlotsRBY, StaticRBY); - + // Capture Memory only obtainable via Gen 6. case 6: switch (version) { @@ -943,24 +1208,8 @@ internal static bool getCanBeCaptured(int species, int gen, GameVersion version return getCanBeCaptured(species, SlotsA, StaticA); case GameVersion.OR: return getCanBeCaptured(species, SlotsO, StaticO); - - default: - return false; - } - case 7: - switch (version) - { - case GameVersion.Any: - return getCanBeCaptured(species, SlotsSN, StaticSN) - || getCanBeCaptured(species, SlotsMN, StaticMN); - case GameVersion.SN: - return getCanBeCaptured(species, SlotsSN, StaticSN); - case GameVersion.MN: - return getCanBeCaptured(species, SlotsMN, StaticMN); - - default: - return false; } + break; } return false; } @@ -1229,27 +1478,27 @@ private static IEnumerable getDexNavAreas(PKM pkm) return new EncounterArea[0]; } } - private static IEnumerable getLVLMoves(PKM pkm, int species, int lvl, int formnum) + private static IEnumerable getRelearnLVLMoves(PKM pkm, int species, int lvl, int formnum) { List moves = new List(); - if (pkm.InhabitedGeneration(1)) + switch (pkm.GenNumber) { - moves.AddRange(((PersonalInfoG1)PersonalTable.RB[species]).Moves); - moves.AddRange(((PersonalInfoG1)PersonalTable.Y[species]).Moves); - moves.AddRange(LevelUpRB[species].getMoves(lvl)); - moves.AddRange(LevelUpY[species].getMoves(lvl)); - } - if (pkm.InhabitedGeneration(6)) - { - int ind_XY = PersonalTable.XY.getFormeIndex(species, formnum); - moves.AddRange(LevelUpXY[ind_XY].getMoves(lvl)); - int ind_AO = PersonalTable.AO.getFormeIndex(species, formnum); - moves.AddRange(LevelUpAO[ind_AO].getMoves(lvl)); - } - if (pkm.InhabitedGeneration(7)) - { - int ind_SM = PersonalTable.SM.getFormeIndex(species, formnum); - moves.AddRange(LevelUpSM[ind_SM].getMoves(lvl)); + case 6: + if (pkm.InhabitedGeneration(6)) + { + int ind_XY = PersonalTable.XY.getFormeIndex(species, formnum); + moves.AddRange(LevelUpXY[ind_XY].getMoves(lvl)); + int ind_AO = PersonalTable.AO.getFormeIndex(species, formnum); + moves.AddRange(LevelUpAO[ind_AO].getMoves(lvl)); + } + break; + case 7: + if (pkm.InhabitedGeneration(7)) + { + int ind_SM = PersonalTable.SM.getFormeIndex(species, formnum); + moves.AddRange(LevelUpSM[ind_SM].getMoves(lvl)); + } + break; } return moves; } @@ -1270,6 +1519,37 @@ private static IEnumerable getEncounterSlots(PKM pkm, int lvl = - case GameVersion.C: return getSlots(pkm, SlotsGSC, lvl); + case GameVersion.R: + return getSlots(pkm, SlotsR, lvl); + case GameVersion.S: + return getSlots(pkm, SlotsS, lvl); + case GameVersion.E: + return getSlots(pkm, SlotsE, lvl); + case GameVersion.FR: + return getSlots(pkm, SlotsFR, lvl); + case GameVersion.LG: + return getSlots(pkm, SlotsLG, lvl); + + case GameVersion.D: + return getSlots(pkm, SlotsD, lvl); + case GameVersion.P: + return getSlots(pkm, SlotsP, lvl); + case GameVersion.Pt: + return getSlots(pkm, SlotsPt, lvl); + case GameVersion.HG: + return getSlots(pkm, SlotsHG, lvl); + case GameVersion.SS: + return getSlots(pkm, SlotsSS, lvl); + + case GameVersion.B: + return getSlots(pkm, SlotsB, lvl); + case GameVersion.W: + return getSlots(pkm, SlotsW, lvl); + case GameVersion.B2: + return getSlots(pkm, SlotsB2, lvl); + case GameVersion.W2: + return getSlots(pkm, SlotsW2, lvl); + case GameVersion.X: return getSlots(pkm, SlotsX, lvl); case GameVersion.Y: @@ -1303,6 +1583,37 @@ private static IEnumerable getStaticEncounters(PKM pkm, int lvl case GameVersion.C: return getStatic(pkm, StaticGSC, lvl); + case GameVersion.R: + return getStatic(pkm, StaticR, lvl); + case GameVersion.S: + return getStatic(pkm, StaticS, lvl); + case GameVersion.E: + return getStatic(pkm, StaticE, lvl); + case GameVersion.FR: + return getStatic(pkm, StaticFR, lvl); + case GameVersion.LG: + return getStatic(pkm, StaticLG, lvl); + + case GameVersion.D: + return getStatic(pkm, StaticD, lvl); + case GameVersion.P: + return getStatic(pkm, StaticP, lvl); + case GameVersion.Pt: + return getStatic(pkm, StaticPt, lvl); + case GameVersion.HG: + return getStatic(pkm, StaticHG, lvl); + case GameVersion.SS: + return getStatic(pkm, StaticSS, lvl); + + case GameVersion.B: + return getStatic(pkm, StaticB, lvl); + case GameVersion.W: + return getStatic(pkm, StaticW, lvl); + case GameVersion.B2: + return getStatic(pkm, StaticB2, lvl); + case GameVersion.W2: + return getStatic(pkm, StaticW2, lvl); + case GameVersion.X: return getStatic(pkm, StaticX, lvl); case GameVersion.Y: @@ -1542,12 +1853,13 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form int index = PersonalTable.RB.getFormeIndex(species, 0); if (index == 0) return r; + var pi_rb = (PersonalInfoG1)PersonalTable.RB[index]; var pi_y = (PersonalInfoG1)PersonalTable.Y[index]; + r.AddRange(pi_rb.Moves); + r.AddRange(pi_y.Moves); if (LVL) { - r.AddRange(pi_rb.Moves); - r.AddRange(pi_y.Moves); r.AddRange(LevelUpRB[index].getMoves(lvl)); r.AddRange(LevelUpY[index].getMoves(lvl)); } @@ -1563,7 +1875,8 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form case 2: { int index = PersonalTable.C.getFormeIndex(species, 0); - var pi_c = (PersonalInfoG2)PersonalTable.C[index]; + if (index == 0) + return r; if (LVL) { r.AddRange(LevelUpGS[index].getMoves(lvl)); @@ -1571,6 +1884,7 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form } if (Machine) { + var pi_c = (PersonalInfoG2)PersonalTable.C[index]; r.AddRange(TMHM_GSC.Where((t, m) => pi_c.TMHM[m])); } if (moveTutor) @@ -1579,6 +1893,68 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form r = r.Where(m => m <= MaxMoveID_1).ToList(); break; } + case 3: + { + int index = PersonalTable.RS.getFormeIndex(species, 0); + if (index == 0) + return r; + if (LVL) + { + r.AddRange(LevelUpRS[index].getMoves(lvl)); + r.AddRange(LevelUpE[index].getMoves(lvl)); + r.AddRange(LevelUpFR[index].getMoves(lvl)); + r.AddRange(LevelUpLG[index].getMoves(lvl)); + } + if (Machine) + { + var pi_c = PersonalTable.RS[index]; + r.AddRange(TM_3.Where((t, m) => pi_c.TMHM[m])); + if (pkm.Format == 3) // HM moves must be removed for 3->4, only give if current format. + r.AddRange(HM_3.Where((t, m) => pi_c.TMHM[m+50])); + } + if (moveTutor) + r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); + break; + } + case 4: + { + int index = PersonalTable.HGSS.getFormeIndex(species, 0); + if (index == 0) + return r; + if (LVL) + { + r.AddRange(LevelUpDP[index].getMoves(lvl)); + r.AddRange(LevelUpPt[index].getMoves(lvl)); + r.AddRange(LevelUpHGSS[index].getMoves(lvl)); + } + if (Machine) + { + var pi_c = PersonalTable.HGSS[index]; + r.AddRange(TM_3.Where((t, m) => pi_c.TMHM[m])); + } + if (moveTutor) + r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); + break; + } + case 5: + { + int index = PersonalTable.B2W2.getFormeIndex(species, 0); + if (index == 0) + return r; + if (LVL) + { + r.AddRange(LevelUpBW[index].getMoves(lvl)); + r.AddRange(LevelUpB2W2[index].getMoves(lvl)); + } + if (Machine) + { + var pi_c = PersonalTable.B2W2[index]; + r.AddRange(TM_3.Where((t, m) => pi_c.TMHM[m])); + } + if (moveTutor) + r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); + break; + } case 6: switch (ver) { @@ -1586,11 +1962,18 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form case GameVersion.X: case GameVersion.Y: case GameVersion.XY: { int index = PersonalTable.XY.getFormeIndex(species, form); - PersonalInfo pi = PersonalTable.XY[index]; + if (index == 0) + return r; - if (LVL) r.AddRange(LevelUpXY[index].getMoves(lvl)); - if (moveTutor) r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); - if (Machine) r.AddRange(TMHM_XY.Where((t, m) => pi.TMHM[m])); + if (LVL) + r.AddRange(LevelUpXY[index].getMoves(lvl)); + if (moveTutor) + r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); + if (Machine) + { + PersonalInfo pi = PersonalTable.XY[index]; + r.AddRange(TMHM_XY.Where((t, m) => pi.TMHM[m])); + } if (ver == GameVersion.Any) // Fall Through goto case GameVersion.ORAS; @@ -1600,11 +1983,18 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form case GameVersion.AS: case GameVersion.OR: case GameVersion.ORAS: { int index = PersonalTable.AO.getFormeIndex(species, form); - PersonalInfo pi = PersonalTable.AO[index]; + if (index == 0) + return r; - if (LVL) r.AddRange(LevelUpAO[index].getMoves(lvl)); - if (moveTutor) r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); - if (Machine) r.AddRange(TMHM_AO.Where((t, m) => pi.TMHM[m])); + if (LVL) + r.AddRange(LevelUpAO[index].getMoves(lvl)); + if (moveTutor) + r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); + if (Machine) + { + PersonalInfo pi = PersonalTable.AO[index]; + r.AddRange(TMHM_AO.Where((t, m) => pi.TMHM[m])); + } break; } } @@ -1616,13 +2006,18 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form case GameVersion.SN: case GameVersion.MN: case GameVersion.SM: { int index = PersonalTable.SM.getFormeIndex(species, form); - PersonalInfo pi = PersonalTable.SM.getFormeEntry(species, form); if (MoveReminder) lvl = 100; // Move reminder can teach any level in movepool now! - if (LVL) r.AddRange(LevelUpSM[index].getMoves(lvl)); - if (moveTutor) r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); - if (Machine) r.AddRange(TMHM_SM.Where((t, m) => pi.TMHM[m])); + if (LVL) + r.AddRange(LevelUpSM[index].getMoves(lvl)); + if (moveTutor) + r.AddRange(getTutorMoves(pkm, species, form, specialTutors, Generation)); + if (Machine) + { + PersonalInfo pi = PersonalTable.SM.getFormeEntry(species, form); + r.AddRange(TMHM_SM.Where((t, m) => pi.TMHM[m])); + } break; } } @@ -1650,8 +2045,22 @@ private static IEnumerable getEggMoves(PKM pkm, int species, int formnum, G return EggMovesC[species].Moves; default: return new List(); - } + case 3: + return EggMovesRS[species].Moves; + case 4: + switch (Version) + { + case GameVersion.DP: + case GameVersion.Pt: + return EggMovesDPPt[species].Moves; + case GameVersion.HGSS: + return EggMovesHGSS[species].Moves; + default: + return new List(); + } + case 5: + return EggMovesBW[species].Moves; case 6: // entries per species return EggMovesAO[species].Moves.Concat(EggMovesXY[species].Moves); @@ -1671,23 +2080,45 @@ private static IEnumerable getTutorMoves(PKM pkm, int species, int form, bo PersonalInfo info; switch (generation) { + case 1: + if (AllowGBCartEra && pkm.Format < 3 && (pkm.Species == 25 || pkm.Species == 26)) // Surf Pikachu via Stadium + moves.Add(57); + break; case 2: moves.AddRange(Tutors_GSC.Where((t, i) => PersonalTable.C[species].TMHM[57 + i])); goto case 1; - case 1: - if (pkm.Format < 3 && (pkm.Species == 25 || pkm.Species == 26)) // Surf Pikachu via Stadium - moves.Add(57); + case 3: + // RS Tutors + moves.AddRange(TypeTutor3.Where((t, i) => PersonalTable.C[species].TMHM[58 + i])); + // E Tutors (Free) + + // E Tutors (BP) + + // FRLG Tutors + + // XD + + // XD (Mew) + if (species == 151) + moves.AddRange(Tutor_3Mew); + + break; + case 4: + info = PersonalTable.HGSS[species]; + moves.AddRange(Tutors_4.Where((t, i) => info.TypeTutors[i])); + break; + case 5: + info = PersonalTable.B2W2[species]; + moves.AddRange(TypeTutor6.Where((t, i) => info.TypeTutors[i])); + if (pkm.InhabitedGeneration(5) && specialTutors) + { + PersonalInfo pi = PersonalTable.B2W2.getFormeEntry(species, form); + for (int i = 0; i < Tutors_B2W2.Length; i++) + for (int b = 0; b < Tutors_B2W2[i].Length; b++) + if (pi.SpecialTutors[i][b]) + moves.Add(Tutors_B2W2[i][b]); + } break; - //case 5: - // Varied Tutors - //if (pkm.InhabitedGeneration(5) && Tutors) - //{ - // //PersonalInfo pi = PersonalTable.B2W2.getFormeEntry(species, form); - // //for (int i = 0; i < Tutors_B2W2.Length; i++) - // // for (int b = 0; b < Tutors_B2W2[i].Length; b++) - // // if (pi.SpecialTutors[i][b]) - // // moves.Add(Tutors_B2W2[i][b]); - //} case 6: info = PersonalTable.AO[species]; moves.AddRange(TypeTutor6.Where((t, i) => info.TypeTutors[i])); @@ -1705,7 +2136,6 @@ private static IEnumerable getTutorMoves(PKM pkm, int species, int form, bo moves.AddRange(TypeTutor6.Where((t, i) => info.TypeTutors[i])); // No special tutors in G7 break; - } return moves.Distinct(); } diff --git a/PKHeX/Legality/Tables3.cs b/PKHeX/Legality/Tables3.cs index ac1ccbed4..5775ee0a1 100644 --- a/PKHeX/Legality/Tables3.cs +++ b/PKHeX/Legality/Tables3.cs @@ -99,6 +99,49 @@ public static partial class Legal // todo }; internal static readonly bool[] ReleasedHeldItems_3 = Enumerable.Range(0, MaxItemID_3+1).Select(i => HeldItems_RS.Contains((ushort)i) && !UnreleasedItems_3.Contains(i)).ToArray(); + internal static readonly int[] TM_3 = + { + 264, 337, 352, 347, 046, 092, 258, 339, 331, 237, + 241, 269, 058, 059, 063, 113, 182, 240, 202, 219, + 218, 076, 231, 085, 087, 089, 216, 091, 094, 247, + 280, 104, 115, 351, 053, 188, 201, 126, 317, 332, + 259, 263, 290, 156, 213, 168, 211, 285, 289, 315, + }; internal static readonly int[] HM_3 = {15, 19, 57, 70, 148, 249, 127, 291}; + internal static readonly int[] TypeTutor3 = {338, 307, 308}; + internal static readonly int[] Tutor_3Mew = + { + 185, // Feint Attack + 252, // Fake Out + 095, // Hypnosis + 101, // Night Shade + 272, // Role Play + 192, // Zap Cannon + }; + internal static readonly int[][] Tutor_Frontier = + { + new[] {135, 069, 138, 005, 025, 034, 157, 068, 086, 014}, + new[] {111, 173, 189, 129, 196, 203, 244, 008, 009, 007}, + }; + internal static readonly int[] Tutor_E = {038, 223, 153, 210, 118, 102, 205, 214, 164, 207}; + internal static readonly int[] Tutor_FRLG = {034, 068, 038, 138, 153, 025, 005, 118, 102, 157, 069, 135, 164, 014, 086}; + + internal static readonly EncounterStatic[] Encounter_RSE = + { + //todo + }; + internal static readonly EncounterStatic[] Encounter_FRLG = + { + //todo + }; + internal static readonly EncounterTrade[] TradeGift_RSE = + { + //todo + }; + internal static readonly EncounterTrade[] TradeGift_FRLG = + { + //todo + }; + } } diff --git a/PKHeX/Legality/Tables4.cs b/PKHeX/Legality/Tables4.cs index 5c22a0c3e..6f4e4cffa 100644 --- a/PKHeX/Legality/Tables4.cs +++ b/PKHeX/Legality/Tables4.cs @@ -141,5 +141,32 @@ public static partial class Legal }; internal static readonly bool[] ReleasedHeldItems_4 = Enumerable.Range(0, MaxItemID_4_HGSS+1).Select(i => HeldItems_HGSS.Contains((ushort)i) && !UnreleasedItems_4.Contains(i)).ToArray(); internal static readonly int[] CrownBeasts = {251, 243, 244, 245}; + + internal static readonly int[] Tutors_4 = + { + 291, 189, 210, 196, 205, 009, 007, 276, + 008, 442, 401, 466, 380, 173, 180, 314, + 270, 283, 200, 246, 235, 324, 428, 410, + 414, 441, 239, 402, 334, 393, 387, 340, + 271, 257, 282, 389, 129, 253, 162, 220, + 081, 366, 356, 388, 277, 272, 215, 067, + 143, 335, 450, + }; + internal static readonly EncounterStatic[] Encounter_DPPt = + { + //todo + }; + internal static readonly EncounterStatic[] Encounter_HGSS = + { + //todo + }; + internal static readonly EncounterTrade[] TradeGift_DPPt = + { + //todo + }; + internal static readonly EncounterTrade[] TradeGift_HGSS = + { + //todo + }; } } diff --git a/PKHeX/Legality/Tables5.cs b/PKHeX/Legality/Tables5.cs index 8e961fce3..5c30bbcfb 100644 --- a/PKHeX/Legality/Tables5.cs +++ b/PKHeX/Legality/Tables5.cs @@ -99,5 +99,29 @@ public static partial class Legal // todo }; internal static readonly bool[] ReleasedHeldItems_5 = Enumerable.Range(0, MaxItemID_5_B2W2+1).Select(i => HeldItems_BW.Contains((ushort)i) && !UnreleasedItems_5.Contains(i)).ToArray(); + internal static readonly int[][] Tutors_B2W2 = + { + new[] { 343, 450, 529, 340, 324, 442, 162, 253, 402, 530, 067, 441, 007, 009, 008 }, // Driftveil City + new[] { 387, 334, 393, 277, 335, 304, 527, 196, 231, 401, 414, 428, 492, 276, 356, 406, 399 }, // Lentimas Town + new[] { 020, 173, 215, 282, 235, 355, 143, 272, 257, 202, 409, 220, 366 }, // Humilau City + new[] { 388, 380, 270, 495, 478, 472, 180, 278, 271, 446, 200, 283, 214, 285, 289, } // Nacrene City + }; + + internal static readonly EncounterStatic[] Encounter_BW = + { + //todo + }; + internal static readonly EncounterStatic[] Encounter_B2W2 = + { + //todo + }; + internal static readonly EncounterTrade[] TradeGift_BW = + { + //todo + }; + internal static readonly EncounterTrade[] TradeGift_B2W2 = + { + //todo + }; } } diff --git a/PKHeX/PKHeX.Core.csproj b/PKHeX/PKHeX.Core.csproj index 2cbc189ee..255a24cbf 100644 --- a/PKHeX/PKHeX.Core.csproj +++ b/PKHeX/PKHeX.Core.csproj @@ -260,8 +260,12 @@ Settings.settings True + + + + @@ -286,15 +290,26 @@ + + + + + + + + + - + + + @@ -355,7 +370,6 @@ - diff --git a/PKHeX/PKM/PKM.cs b/PKHeX/PKM/PKM.cs index 79cd8446e..9fd45a1b3 100644 --- a/PKHeX/PKM/PKM.cs +++ b/PKHeX/PKM/PKM.cs @@ -263,11 +263,13 @@ public byte[] Write() public bool VC2 => Version >= 39 && Version <= 41; public bool VC1 => Version >= 35 && Version <= 38; public bool Horohoro => Version == 34; + public bool FRLG => Version == (int)GameVersion.FR || Version == (int)GameVersion.LG; + public bool HGSS => Version == (int)GameVersion.HG || Version == (int)GameVersion.SS; + public bool B2W2 => Version == (int)GameVersion.B2 || Version == (int)GameVersion.W2; public bool XY => Version == (int)GameVersion.X || Version == (int)GameVersion.Y; public bool AO => Version == (int)GameVersion.AS || Version == (int)GameVersion.OR; public bool SM => Version == (int)GameVersion.SN || Version == (int)GameVersion.MN; protected bool PtHGSS => GameVersion.Pt == (GameVersion)Version || HGSS; - public bool HGSS => new[] {GameVersion.HG, GameVersion.SS}.Contains((GameVersion)Version); public bool VC => VC1 || VC2; public bool Gen7 => Version >= 30 && Version <= 33; public bool Gen6 => Version >= 24 && Version <= 29; diff --git a/PKHeX/PersonalInfo/PersonalInfo.cs b/PKHeX/PersonalInfo/PersonalInfo.cs index 0f923cfb2..18eac1b1c 100644 --- a/PKHeX/PersonalInfo/PersonalInfo.cs +++ b/PKHeX/PersonalInfo/PersonalInfo.cs @@ -46,19 +46,22 @@ public abstract class PersonalInfo protected static bool[] getBits(byte[] data) { - bool[] r = new bool[8 * data.Length]; + bool[] r = new bool[data.Length<<3]; for (int i = 0; i < r.Length; i++) - r[i] = (data[i/8] >> (i&7) & 0x1) == 1; + r[i] = (data[i>>3] >> (i&7) & 0x1) == 1; return r; } protected static byte[] setBits(bool[] bits) { - byte[] data = new byte[bits.Length/8]; + byte[] data = new byte[bits.Length>>3]; for (int i = 0; i < bits.Length; i++) - data[i / 8] |= (byte)(bits[i] ? 1 << (i&0x7) : 0); + data[i>>3] |= (byte)(bits[i] ? 1 << (i&0x7) : 0); return data; } + public void AddTMHM(byte[] data) => TMHM = getBits(data); + public void AddTypeTutors(byte[] data) => TypeTutors = getBits(data); + // Data Manipulation public int FormeIndex(int species, int forme) { diff --git a/PKHeX/Properties/Resources.Designer.cs b/PKHeX/Properties/Resources.Designer.cs index 5f4fb9abb..d35db23b0 100644 --- a/PKHeX/Properties/Resources.Designer.cs +++ b/PKHeX/Properties/Resources.Designer.cs @@ -12324,15 +12324,15 @@ public class Resources { /// Looks up a localized string similar to PKHeX - By Kaphotics ///http://projectpokemon.org/pkhex /// - ///17/02/25 - New Update: + ///17/03/18 - New Update: /// - Legality: - /// - - Added: Legality checking for RBY Pokémon as pk1 and pk7+. - /// - - Fixed: More edge cases for legality checks. - /// - Batch Editor: - /// - - Added: Nickname clearing to batch editor (via .IsNicknamed=False). - /// - - Added: Legality filtering and bulk suggestions for Met Location, Current Moves & Relearn Moves. - /// - - - Use $suggest to use suggested result from the legality analysis. - /// - - Changed: Properties are now sort [rest of string was truncated]";. + /// - - Added: Heavy Ball legality check. Thanks SciresM! + /// - - Added: Loading Gen1 save file now asks if it is a Virtual Console save for separation of GenII legality. + /// - Fixed: Exporting boxes to folders now has the correct box names (was previously shifted by 1). Thanks RoC! + /// - Fixed: Colosseum/XD Purification value editing. Thanks ArcticLoveBunny! + /// - Fixed: Joyful Game Corner now editable by Emerald saves. + /// + /// [rest of string was truncated]";. /// public static string changelog { get { @@ -12432,6 +12432,16 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] eggmove_bw { + get { + object obj = ResourceManager.GetObject("eggmove_bw", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -12442,6 +12452,16 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] eggmove_dppt { + get { + object obj = ResourceManager.GetObject("eggmove_dppt", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -12452,6 +12472,26 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] eggmove_hgss { + get { + object obj = ResourceManager.GetObject("eggmove_hgss", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] eggmove_rs { + get { + object obj = ResourceManager.GetObject("eggmove_rs", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -12869,6 +12909,16 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] hmtm_g3 { + get { + object obj = ResourceManager.GetObject("hmtm_g3", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -17924,6 +17974,26 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_b2w2 { + get { + object obj = ResourceManager.GetObject("lvlmove_b2w2", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_bw { + get { + object obj = ResourceManager.GetObject("lvlmove_bw", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -17934,6 +18004,36 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_dp { + get { + object obj = ResourceManager.GetObject("lvlmove_dp", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_e { + get { + object obj = ResourceManager.GetObject("lvlmove_e", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_fr { + get { + object obj = ResourceManager.GetObject("lvlmove_fr", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -17944,6 +18044,36 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_hgss { + get { + object obj = ResourceManager.GetObject("lvlmove_hgss", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_lg { + get { + object obj = ResourceManager.GetObject("lvlmove_lg", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_pt { + get { + object obj = ResourceManager.GetObject("lvlmove_pt", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -17954,6 +18084,16 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] lvlmove_rs { + get { + object obj = ResourceManager.GetObject("lvlmove_rs", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -18205,7 +18345,7 @@ public class Resources { } /// - /// Looks up a localized string similar to 20170225. + /// Looks up a localized string similar to 20170318. /// public static string ProgramVersion { get { @@ -37701,6 +37841,26 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] tutors_g3 { + get { + object obj = ResourceManager.GetObject("tutors_g3", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] tutors_g4 { + get { + object obj = ResourceManager.GetObject("tutors_g4", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/PKHeX/Properties/Resources.resx b/PKHeX/Properties/Resources.resx index d293e6966..b3d863fdc 100644 --- a/PKHeX/Properties/Resources.resx +++ b/PKHeX/Properties/Resources.resx @@ -7450,4 +7450,52 @@ ..\Resources\img\misc\rare_icon_alt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + + ..\Resources\byte\eggmove_bw.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\eggmove_dppt.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\eggmove_hgss.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\eggmove_rs.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\hmtm_g3.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_b2w2.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_bw.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_dp.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_e.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_fr.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_hgss.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_lg.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_pt.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\lvlmove_rs.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\tutors_g3.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\tutors_g4.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PKHeX/Resources/byte/eggmove_bw.pkl b/PKHeX/Resources/byte/eggmove_bw.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6e8ce761e084b5c981252f14afacf1e54ef08095 GIT binary patch literal 10496 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 literal 0 HcmV?d00001 diff --git a/PKHeX/Resources/byte/eggmove_rs.pkl b/PKHeX/Resources/byte/eggmove_rs.pkl new file mode 100644 index 0000000000000000000000000000000000000000..dc1d0067a3289380a2c134d82c88e17343a0f95d GIT binary patch literal 4276 zcmZYB4@}hO8Nl)9#rua<6cki+N(d6mt`2X8p|J$bNvKoDth4r}NT~tabeo=vgqfx7 zN@Ivsv!tvgVi+aH5IhwxJYdD929hMi~3>E)L-XG~gsop%rbo zh)ei8uA?7O+{GyF;Xa;1ydnv3AqBIMi7aFzA1e_=5w>6}DzFPRIEW)Sh9)%Q3_5TQ zJ-C8i+`vuT#(j+80iHs9{KHgCLpm0~kEO^(06}cRW>jDos!@YOs6zve;{;CO96Hg9 z&v6xf7{a%BfQN`-9KJ->40DkKKk`wG5MIX{s74JA;tx2C6KFy+S`fj_io+QHKT`M=Ltfg8|&YO^o6m?&C2g;hWA9APw1A zjv^Fe9oAzbN>PS#>_i22p$gTg!6DS)FdA?iC(w#Ebm9U&#YJ2~H+pa#{TM(LcQJ}_ zOu&^yevpFMNJA#Fkc$A;Ac!KAU=uc@4CUB~Dpcbg9L5PW;S|o{61vfYehgq3QQX4= zOh9IkH_S#F79s-yEXNuIu@PGl!W-C!Dpcbgyo+P_6PnP9Hbig^o#;jnuAmp!(T^c~ zi!nUFIG$qaOzst=V*!>RfI_T6G1g%lN>PU2VmHEg6LqM^2WY@?oIn$r(SnmWg;um7 zf{$?q9bk9K9(h}C$yF(lmrbFGXd$Ja$hb6$UwY+BqyIvY5pkGUwEIpH}Q7<2D(#hUU1DK0hQr4>eQF%>T~VE5D|0 zEl*R)gC1=Cc$w>cW;{;TXW3orrH655QOSP3Og@~C?&KlKWVI9R%vy-1Qr>5Uy5+XG z?HnGmDvhko5UnD1ueoJVs^n|QH!Y0R&fY3!tXg?No-sbM)Wt5m#k|>l@frnkk>BfO zll+r`-Si)pd>J60P8=SxyF)67c2Z{0N09czGM$n4$QM!&ujP_OjMhhf{}X+ew8(0+ z$ZThh1Cl|phc#=bO@#8~cstF<^HM;Dbafi#GwL}dcgS8ldD9)>Vb@2A{VQVBwXCtL zACVAaI3Ewu=?+~b`)w{fd<)1jG8DC^PM@{2Znccy zrH}or&j@A7W*WKFwW?*E>&b62>)~eo2eoIjf?YJoIEBPG!N@TiVOUlZ`FZjXV_ZF- zUiPP+#!6Os6@BVVbS`^nT}#VP=rPx3$w)O%yzGb(PLA%0B<>fdc98Z_d4*dimDrw; z;X*TF_e_LZx+_wM{XJ$>K-8J!=oahXH%~>(zib~mW(v_AAS*{Xwa=Q%l)LD+n^+gx zxP11u)A>B1EZL-TV)jZ7`FV>qDz>xP@8n;8#2Je)?kN3Dk3aR1t@E@PWTn35tm|Fm zrgfMdluLbr;pTJ6>ttE?qTaC`@-T?zdm>_?)cdW+dXJ&d5 ze`Pipy<7C|t7KQza;|5w4>zzTdRla+R>~GBWke4p<;I`g&1b)jdH(dXwt;)z<^4Fyd|^8?!g=Amgm%w8a=b$V z9q+5V?5TG7nJx72y_VcfC-Z&rk|?=dWDbxi=k1zDK40M$580jrWUXI3raL}v7b~@j ze7Ewun-#sr*nKunI>(R5>}lqqw~u~Y%tPOw&W+_})YHtX$T;)T_wL`=D@kUIx7;_( zTl*Z5pAb(fvzfvj`z5!$j~X%FpDVb*hV4A{gvaDH?sR=8_wkoNjLfb!F5WYl#4BzV5ufOO1*HQC1 z$BX&qv;SXXJ_Ga?VroNLeJQbu%%a}Q+lMB`d4kL4eHbJ^Xbw}ta@ zu{&Sm&8~lYxHvERPIUebdBl$Mn;qO*dfO)uVT^tPl1fZ&{_iGlc}8y$4|j>a|1yln z=)1;E4pWIl-)}BzMtE1%QEQm>%%*+B-hBzYo%PM)V<$PW&f|P)uJogO+Rs|$5}%H* jB}2T6L#CFDH4&ADZl@pcZ_ZDe?R^W02icl literal 0 HcmV?d00001 diff --git a/PKHeX/Resources/byte/hmtm_g3.pkl b/PKHeX/Resources/byte/hmtm_g3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..76a435faa24a00a1b256d539238c2d153cc4595c GIT binary patch literal 4652 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 F{a-o@6O8}> literal 0 HcmV?d00001 diff --git a/PKHeX/Resources/byte/lvlmove_dp.pkl b/PKHeX/Resources/byte/lvlmove_dp.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a3def988cd40687fa47de274cbc9dc70d1ed9dfe GIT binary patch literal 28404 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 RgpYa`zl5hN;4k(3{|B}3XJG&U literal 0 HcmV?d00001 diff --git a/PKHeX/Resources/byte/lvlmove_fr.pkl b/PKHeX/Resources/byte/lvlmove_fr.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ef6f779c20587ccd237fb6599be72c86e97a194b GIT binary patch literal 17604 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 DWAc@4 literal 0 HcmV?d00001 diff --git a/PKHeX/Resources/byte/lvlmove_hgss.pkl b/PKHeX/Resources/byte/lvlmove_hgss.pkl new file mode 100644 index 0000000000000000000000000000000000000000..eba604ea72fc262e78edd2c1aeda3c647485379e GIT binary patch literal 29100 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 Xy}J_Zx95ZW_NM2zTg@x~zqkK?wEx5x literal 0 HcmV?d00001 diff --git a/PKHeX/Resources/byte/lvlmove_lg.pkl b/PKHeX/Resources/byte/lvlmove_lg.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3dfb213ca8cada761689dd4618fc521cbfa08ae0 GIT binary patch literal 17612 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 RF+Ro^XEHvngul%5{~xpCX7d05 literal 0 HcmV?d00001 diff --git a/PKHeX/Resources/byte/tutors_g3.pkl b/PKHeX/Resources/byte/tutors_g3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..258da131016ae210842ad131a94aed204d89de66 GIT binary patch literal 3104 zcmYk-Pe>zI9Ki7m>2z$@QV$jkDyzhzr9v&W)TI`ukir~Nnu7-q9_Ap_gNGbEc<>OY z2M-;wH`cp@F2@X!xG&rSjd7)J=h|}mIxM7@ZdtUX`7en_ZQ8wfe$l@nfKoB zU;Ory?~KkjL!mD8pbrBW!Z1cKiZP7CMhp((NMI6En1+iP%wi5n%wqwINMQ-fSb>K$ z6tdXBCbqDR9r(zjfFcf2!V!*ff>WHKj0;q7i7Ql5LmeS26nX<~Xh#P+(S;uLVE{uI z#t23+hH==4!9g4eOkxVta4~~f%pr++EMO5SEMXZd@Q{W=78}^a7PheiA9)l|#34#J z!ZA*8iZhgPfeJ2hg(_;OBh*IxXhSK$6tdXBCbqDR9r(zjfFcf2!V!*ff>WHKj0;q7i7Ql5Lmi>F zh#zfeM+Z95g&y=_07DqY2u3l6aoC8#K^zH8VhYo6F@ssmA&Ge`U=b-SVHqp%kcL7Q z8`#7awy^^rc@$8@Axb#HF-~xbGn8?G3NCSlDr%@B^fvLM4ejVaC%VvsJ`7+8!x+IR z#xM>WF*t}Lfk{kZ8ZKrqi#a4Qj|D6ug(WOw1s>8+$YKMV*upk;;3JO$ia10GM>xg_ zPH~1ZE>OWGu24k{b%gE_Kibfa4s@amJ?O&#hA@l~jA9Jqun~iUI1-q|6sF-~2D6w$ z67yKVB2rkwGFIRr4TUT=u!${fV+TI+D4>W#lyHP&oZu8^DB}VZT;d8<)KEvLo%qp) zc66Wg)Y~>c>P}g{CBTVb~-Hd5%1w~FWAoz89cGm{i5|Z<@)S}*nuTXMHT9QuQ$NFtUn8%aS0nn)>-((QS@z5t|Gdn-C-lqQr?1wEA8^J-)N|It zB4h7zZvRf!U@v3&xEc{&A{!Q|$%lr}zx*0e$z7whf5tBKi`3LwSa_2^7$PVaB0``0 zVb0ebTm-$T#F`Zu&g8@s!2#!v_==Qb93Ub&BqQ^@rX_ffy+QlImH+7yWWwg*^)XHcqt zu3t2|gCLlAV*Av}r&d0DO8U}$I8u_|B~Cs zhmFDD+4V$lPJDcJtH2dJN8YSsXmY5qt)S?C_zLSV>z@l{?=z3gJM#9fA(XQ}C~l)? z_L)JsmurT;$rS66;8{JANvxUciM>IwWBXyz>DLy1Gx}F; zKT7@kb&+_=ckX7A^I58P&00^%#ZycFbn_r6H{K$r?+abgU+`JC{`020*|+qhe$MYs z)6G5o{N^6>8O@(u_X^Gz70P~OHc5S`iAu_E2=j8-V6EW(T^=Q$pZv#}<=m|v2`YMm zd5^03A1uLohUXUO_X7RS`t!SnQ0}da>-YZ#na^g8oOO%ZO{n;~p}szleGUC*Ba$H( zUhGHn$=pFy@+~u}5}ebe#x3&MUEe78fEke)WyWsv(X5%e3O*9LM*r7>ceuVoFGQPW U53HcFH=$;E|DthUUpBh`2gXIYPyhe` literal 0 HcmV?d00001 diff --git a/PKHeX/Resources/byte/tutors_g4.pkl b/PKHeX/Resources/byte/tutors_g4.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d18a9bb95e35ece27b40aeaa481b3c873a9d0a4c GIT binary patch literal 6104 zcmajjO>84)9mnzi%udp=9g?v(UA*bGJmWZ#>7klLDRMcW*)|Awg^;O=S&;e5G}NEhz=rj(L)~t3^BqH#yG|VvOxWCkcUDE9?I}hK@~LwsH1@cd$k(VJ4)Rba!9y87DyX7{0ChCbM2HsJI79~#y6B;g0frdi2xA;$ z0$HSfILJex1P^8SsGy1(0@Tq!6Cqk?;}9K0=%R-{1{h+5BaCs331o@-;UEu%5IKmjmm_W``KOE$t zP=bdtd{j_H4FT$CpotJIv~h?IB6QJ19|H_A!V$(e#ssoV{cw7!%0D)DH)FD3su#3?CI#QA2<_8fYR!3vC>tg9u&p z(8mBnjBtc8jxm8;pnf>WL!kr@W%#I|iW&mc(LfU+T4>`C9YpA&hdu@vVuT}%af}J% z>(mbic_@_Np$s1tR8d2KIvQvqLfQ+i0) zrx{sR&a~x`HJ{OXf4&%(h4aO*^ktnmBV{?~;_{i}R%FUD$IVErO;a97L(=MLzsB{G z)aT`9=jBX8^pwK*f0l`Hq9K3=E1=f2RN zd-XJ>?#ug%`ewQ3p6lO=KcA*VzIBuPJ4w&6xePDvY+7+UTau)xKpfp(Q4qJ2$$jfz zOEMkEl`SrmWM+-?OSUZOWMj2^`R8e`bDH}3^!qXk(@as;?UZqo+>gtF8_3+2Ef3~B zm(RK0gQ=fmVfH-tXG)1!y!j;mt!(Z;ElGY+n3hH9sgVoJGE)pB>!kH_I657rJcse0 zhL~jM~B>7 z^TiT=KcHE;Zj!%#F>NT0e|2?{Ow-?<@nu`LPu{*|bG@q%Nh#zxRq>X?c}Xr6<0)2> zyr`7brrmVjA$Q#!$M9^iN=)VEf~4IYF&g@QT;*`RUHXGb-csUNyeWJ4d!iKeGIi+x zrLI|gM1AWoOT5|D2l+9T;X6M4sOZLNDmT#O1CHlNTLr$Z|Dv+9`gxOFiOV7%6geJJ z&nNa=&P>UdtJ_y}`=_IlL&hlS>n9e&l==a$_+w$M|XNmbL zZ|g5Ar+FzZ=hSrGV*HElcdzNB{$E_RMUn6A%<}3&Tz+lM@PDSyo2A+EtxeYBX&T~v zB(imG;Usxcp{>VllJWSbe=3gqv}19aIpr#k>#nF5e3$XIqR#a@%o{m%!{4Zq(T(l% z&(SW7|GRqqkJI3?bYP!;d6LDrtjD3^^t)?@==m5emoIIJM$0au4LS z9r@c9Y0T!E0k^O&nR`< z;gcj+gtDY0^Pzj&IcLjaB+GHX3`F*ne*S5u3e)lUzDj2->Lu@5+<(&l%^>KPi>K{j zs(sP(b56ZsXkR83@EWj?Ty04Rc0sDY0`X9NtMfnEpd52#;lU3ST(Ow2`Cb#^|p#e&W> z{ZtH-a;`8-C0Sjje}~zIZs%$4xtINNN6))r=sz0FM;85VL9Wemo%d)*wtP5ClYQgn z)6A!F8uGep`pY4|Ulh5-^_{|XL$70GR%fOt`})2zML*7WgYF>&hi`U)8i?+r9PAA z3mKlI3gi1K+VOMpd0d`X+bk}6|GLfNk{@r=|EbUP_1(*NRs%1~eNB`7)++P0m6pG( zme`P`v&;7l|zD(!R`of&Yb#JU*uWrzuykB{kes`dp zlpc>KSy-l=mYeDgbF)K#B6Ig8^C(Xf&#Q4R(OvcYcy|2i_dgxSzb%Sit;{-_r2XKhT=N+c7I@WbbSSTL*Iv4SlEdFh^KFh>xtU5 zODX+*LrwSDeE-nnWj-pzxv7jB4Sp}<>V875k)d9{^t{2pXPIGt8`7_)$@in#db%!xq^ZvJy&>}}-xG8u>*PVaej0k*_&?^t>`&s<{pv~j6~`sd@gyBpif`X3)Jg7H z8AhqY`k-8KX^0i|jIXwJJM%rNV8r#XRgw9EHK(8BB-f|qFJ1qNZm)Isub$qYCV3E# zW8OF8UbmkfmzEyavwUJ_|KR(apX5CI5X-hC^|9R2<0#2Y$Dse}b=dCxtwPo3_MSl4FzlX;b`ELXVhY#++~v5!c}yM;7w zdAbh&kr8u^`SX`;`swO)9!|#b%5^1g>H6wQKBb-5FU!LXJRp87`Gai3ARWM4r-xdm+I(2;xzi&p>io-mV-2eZ}{{cQ-6%zme literal 0 HcmV?d00001 diff --git a/PKHeX/Saves/SaveUtil.cs b/PKHeX/Saves/SaveUtil.cs index e7e56dd52..504bf6031 100644 --- a/PKHeX/Saves/SaveUtil.cs +++ b/PKHeX/Saves/SaveUtil.cs @@ -257,7 +257,7 @@ public static GameVersion getIsG3COLOSAV(byte[] data) int offset = data.Length - SIZE_G3COLO; for (int i = 0; i < 3; i++) { - var ident = data.Skip(0x6000 + offset + 0x1E000*i).Take(4).ToArray(); + var ident = data.Skip(0x6000 + offset + 0x1E000*i).Take(4); if (!ident.SequenceEqual(slotintroColo)) return GameVersion.Invalid; } @@ -276,7 +276,7 @@ public static GameVersion getIsG3XDSAV(byte[] data) int offset = data.Length - SIZE_G3XD; for (int i = 0; i < 2; i++) { - var ident = data.Skip(0x6000 + offset + 0x28000 * i).Take(4).ToArray(); + var ident = data.Skip(0x6000 + offset + 0x28000 * i).Take(4); if (!ident.SequenceEqual(slotintroXD)) return GameVersion.Invalid; }