diff --git a/Legality/Analysis.cs b/Legality/Analysis.cs index 04695106b..a956cf503 100644 --- a/Legality/Analysis.cs +++ b/Legality/Analysis.cs @@ -10,8 +10,8 @@ public partial class LegalityAnalysis private object EncounterMatch; private List CardMatch; private Type EncounterType; - private LegalityCheck ECPID, Nickname, IDs, IVs, EVs, Encounter, Level, Ribbons, Ability, Ball, History, OTMemory, HTMemory, Region, Form, Misc; - private LegalityCheck[] Checks => new[] { Encounter, Level, Form, Ball, Ability, Ribbons, ECPID, Nickname, IVs, EVs, IDs, History, OTMemory, HTMemory, Region, Misc }; + private LegalityCheck ECPID, Nickname, IDs, IVs, EVs, Encounter, Level, Ribbons, Ability, Ball, History, OTMemory, HTMemory, Region, Form, Misc, Gender; + private LegalityCheck[] Checks => new[] { Encounter, Level, Form, Ball, Ability, Ribbons, ECPID, Nickname, IVs, EVs, IDs, History, OTMemory, HTMemory, Region, Misc, Gender }; public bool Valid = true; public bool SecondaryChecked; @@ -25,7 +25,7 @@ public LegalityAnalysis(PKM pk) { if (!(pk is PK6)) return; - pk6 = pk as PK6; + pk6 = (PK6) pk; try { updateRelearnLegality(); @@ -68,6 +68,7 @@ private void updateChecks() Region = verifyRegion(); Form = verifyForm(); Misc = verifyMisc(); + Gender = verifyGender(); SecondaryChecked = true; } private string getLegalityReport() diff --git a/Legality/Checks.cs b/Legality/Checks.cs index f7c884dd0..5d9878e22 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -28,14 +28,22 @@ public LegalityCheck(Severity s, string c) } public partial class LegalityAnalysis { + private LegalityCheck verifyGender() + { + if (PersonalTable.AO[pk6.Species].Gender == 255 && pk6.Gender != 2) + return new LegalityCheck(Severity.Invalid, "Genderless Pokémon should not have a gender."); + + return new LegalityCheck(); + } private LegalityCheck verifyECPID() { // Secondary Checks + LegalityCheck c = new LegalityCheck(); if (pk6.EncryptionConstant == 0) - return new LegalityCheck(Severity.Fishy, "Encryption Constant is not set."); + c = new LegalityCheck(Severity.Fishy, "Encryption Constant is not set."); if (pk6.PID == 0) - return new LegalityCheck(Severity.Fishy, "PID is not set."); + c = new LegalityCheck(Severity.Fishy, "PID is not set."); if (EncounterType == typeof (EncounterStatic)) { @@ -66,7 +74,7 @@ private LegalityCheck verifyECPID() if (xor < 16 && xor >= 8 && (pk6.PID ^ 0x80000000) == pk6.EncryptionConstant) return new LegalityCheck(Severity.Fishy, "Encryption Constant matches shinyxored PID."); - return special != "" ? new LegalityCheck(Severity.Valid, special) : new LegalityCheck(); + return special != "" ? new LegalityCheck(Severity.Valid, special) : c; } // When transferred to Generation 6, the Encryption Constant is copied from the PID. @@ -85,7 +93,7 @@ private LegalityCheck verifyECPID() else return new LegalityCheck(Severity.Invalid, "PID should be equal to EC!"); - return new LegalityCheck(); + return c; } private LegalityCheck verifyNickname() { @@ -156,8 +164,8 @@ private LegalityCheck verifyNickname() } // else { - // Can't have another language name if it hasn't evolved. - return Legal.getHasEvolved(pk6) && PKX.SpeciesLang.Any(lang => lang[pk6.Species] == nickname) + // Can't have another language name if it hasn't evolved or wasn't a language-traded egg. + return (pk6.WasTradedEgg || Legal.getHasEvolved(pk6)) && PKX.SpeciesLang.Any(lang => lang[pk6.Species] == nickname) || PKX.SpeciesLang[pk6.Language][pk6.Species] == nickname ? new LegalityCheck(Severity.Valid, "Nickname matches species name.") : new LegalityCheck(Severity.Invalid, "Nickname does not match species name."); @@ -361,18 +369,18 @@ private LegalityCheck verifyRibbons() // Check Event Ribbons bool[] EventRib = { - pk6.RIB2_6, pk6.RIB2_7, pk6.RIB3_0, pk6.RIB3_1, pk6.RIB3_2, - pk6.RIB3_3, pk6.RIB3_4, pk6.RIB3_5, pk6.RIB3_6, pk6.RIB3_7, - pk6.RIB4_0, pk6.RIB4_1, pk6.RIB4_2, pk6.RIB4_3, pk6.RIB4_4 + pk6.RibbonCountry, pk6.RibbonNational, pk6.RibbonEarth, pk6.RibbonWorld, pk6.RibbonClassic, + pk6.RibbonPremier, pk6.RibbonEvent, pk6.RibbonBirthday, pk6.RibbonSpecial, pk6.RibbonSouvenir, + pk6.RibbonWishing, pk6.RibbonChampionBattle, pk6.RibbonChampionRegional, pk6.RibbonChampionNational, pk6.RibbonChampionWorld }; WC6 MatchedWC6 = EncounterMatch as WC6; if (MatchedWC6 != null) // Wonder Card { bool[] wc6rib = { - MatchedWC6.RIB0_3, MatchedWC6.RIB0_4, MatchedWC6.RIB0_5, MatchedWC6.RIB0_6, MatchedWC6.RIB1_5, - MatchedWC6.RIB1_6, MatchedWC6.RIB0_7, MatchedWC6.RIB1_1, MatchedWC6.RIB1_2, MatchedWC6.RIB1_3, - MatchedWC6.RIB1_4, MatchedWC6.RIB0_0, MatchedWC6.RIB0_1, MatchedWC6.RIB0_2, MatchedWC6.RIB1_0 + MatchedWC6.RibbonCountry, MatchedWC6.RibbonNational, MatchedWC6.RibbonEarth, MatchedWC6.RibbonWorld, MatchedWC6.RibbonClassic, + MatchedWC6.RibbonPremier, MatchedWC6.RibbonEvent, MatchedWC6.RibbonBirthday, MatchedWC6.RibbonSpecial, MatchedWC6.RibbonSouvenir, + MatchedWC6.RibbonWishing, MatchedWC6.RibbonChampionBattle, MatchedWC6.RibbonChampionRegional, MatchedWC6.RibbonChampionNational, MatchedWC6.RibbonChampionWorld }; for (int i = 0; i < EventRib.Length; i++) if (EventRib[i] ^ wc6rib[i]) // Mismatch @@ -396,19 +404,19 @@ private LegalityCheck verifyRibbons() } // Unobtainable ribbons for Gen6 Origin - if (pk6.RIB0_1) + if (pk6.RibbonChampionG3Hoenn) invalidRibbons.Add("GBA Champion"); // RSE HoF - if (pk6.RIB0_2) + if (pk6.RibbonChampionSinnoh) invalidRibbons.Add("Sinnoh Champ"); // DPPt HoF - if (pk6.RIB2_2) + if (pk6.RibbonArtist) invalidRibbons.Add("Artist"); // RSE Master Rank Portrait - if (pk6.RIB2_4) + if (pk6.RibbonRecord) invalidRibbons.Add("Record"); // Unobtainable - if (pk6.RIB2_5) + if (pk6.RibbonLegend) invalidRibbons.Add("Legend"); // HGSS Defeat Red @ Mt.Silver - if (pk6.Memory_ContestCount > 0) + if (pk6.RibbonCountMemoryContest > 0) invalidRibbons.Add("Contest Memory"); // Gen3/4 Contest - if (pk6.Memory_BattleCount > 0) + if (pk6.RibbonCountMemoryBattle > 0) invalidRibbons.Add("Battle Memory"); // Gen3/4 Battle if (missingRibbons.Count + invalidRibbons.Count == 0) @@ -423,9 +431,8 @@ private LegalityCheck verifyRibbons() } private LegalityCheck verifyAbility() { - int index = Legal.PersonalAO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); - byte[] abilities = Legal.PersonalAO[index].Abilities; - int abilval = Array.IndexOf(abilities, (byte)pk6.Ability); + int[] abilities = PersonalTable.AO.getAbilities(pk6.Species, pk6.AltForm); + int abilval = Array.IndexOf(abilities, pk6.Ability); if (abilval < 0) return new LegalityCheck(Severity.Invalid, "Ability is not valid for species/form."); @@ -577,7 +584,7 @@ private LegalityCheck verifyHistory() WC6 MatchedWC6 = EncounterMatch as WC6; if (MatchedWC6?.OT.Length > 0) // Has Event OT -- null propagation yields false if MatchedWC6=null { - if (pk6.OT_Friendship != PKX.getBaseFriendship(pk6.Species)) + if (pk6.OT_Friendship != PersonalTable.AO[pk6.Species].BaseFriendship) return new LegalityCheck(Severity.Invalid, "Event OT Friendship does not match base friendship."); if (pk6.OT_Affection != 0) return new LegalityCheck(Severity.Invalid, "Event OT Affection should be zero."); @@ -703,7 +710,7 @@ private LegalityCheck verifyOTMemory() switch (pk6.OT_Memory) { case 2: // {0} hatched from an Egg and saw {1} for the first time at... {2}. {4} that {3}. - if (!pk6.WasEgg) + if (!pk6.WasEgg && pk6.Egg_Location != 60004) return new LegalityCheck(Severity.Invalid, "OT Memory: OT did not hatch this."); return new LegalityCheck(Severity.Valid, "OT Memory is valid."); case 4: // {0} became {1}’s friend when it arrived via Link Trade at... {2}. {4} that {3}. @@ -857,8 +864,12 @@ private LegalityCheck[] verifyMoves() else res[i] = new LegalityCheck(Severity.Invalid, "Invalid Move."); } - if (res.All(r => r.Valid)) // Card matched - { EncounterMatch = wc; RelearnBase = wc.RelearnMoves; } + if (res.Any(r => !r.Valid)) + continue; + + EncounterMatch = wc; + RelearnBase = wc.RelearnMoves; + break; } } else @@ -883,7 +894,6 @@ private LegalityCheck[] verifyMoves() if (Moves[0] == 0) res[0] = new LegalityCheck(Severity.Invalid, "Invalid Move."); - if (pk6.Species == 647) // Keldeo if (pk6.AltForm == 1 ^ pk6.Moves.Contains(548)) res[0] = new LegalityCheck(Severity.Invalid, "Secret Sword / Resolute Keldeo Mismatch."); @@ -1044,7 +1054,7 @@ private LegalityCheck[] verifyRelearn() return res; } - internal static string[] movelist = Util.getStringList("moves", "en"); + internal static string[] movelist = Util.getMovesList("en"); private static readonly string[] EventRibName = { "Country", "National", "Earth", "World", "Classic", diff --git a/Legality/Core.cs b/Legality/Core.cs index 8a9454ab5..29fcad10c 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -8,8 +8,7 @@ public static partial class Legal // PKHeX master Wonder Card Database internal static WC6[] WC6DB; // PKHeX master personal.dat - internal static readonly PersonalInfo[] PersonalAO = PersonalInfo.getArray(Properties.Resources.personal_ao, PersonalInfo.SizeAO); - internal static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, PersonalInfo.SizeXY); + private static readonly EggMoves[] EggMoveXY = EggMoves.getArray(Data.unpackMini(Properties.Resources.eggmove_xy, "xy")); private static readonly Learnset[] LevelUpXY = Learnset.getArray(Data.unpackMini(Properties.Resources.lvlmove_xy, "xy")); private static readonly EggMoves[] EggMoveAO = EggMoves.getArray(Data.unpackMini(Properties.Resources.eggmove_ao, "ao")); @@ -406,8 +405,8 @@ private static IEnumerable getDexNavAreas(PK6 pk6) } private static IEnumerable getLVLMoves(int species, int lvl, int formnum) { - int ind_XY = PersonalXY[species].FormeIndex(species, formnum); - int ind_AO = PersonalAO[species].FormeIndex(species, formnum); + int ind_XY = PersonalTable.XY.getFormeIndex(species, formnum); + int ind_AO = PersonalTable.AO.getFormeIndex(species, formnum); return LevelUpXY[ind_XY].getMoves(lvl).Concat(LevelUpAO[ind_AO].getMoves(lvl)); } private static IEnumerable getEncounterSlots(PK6 pk6) @@ -544,7 +543,7 @@ private static IEnumerable getValidMoves(PK6 pk6, int Version, bool LVL = f bool ORASTutors = Version == -1 || pk6.AO || !pk6.IsUntraded; if (FormChangeMoves.Contains(species)) // Deoxys & Shaymin & Giratina (others don't have extra but whatever) { - int formcount = PersonalAO[species].FormeCount; + int formcount = PersonalTable.AO[species].FormeCount; for (int i = 0; i < formcount; i++) r.AddRange(getMoves(species, lvl, i, ORASTutors, Version, LVL, Tutor, Machine)); if (Relearn) r.AddRange(pk6.RelearnMoves); @@ -569,8 +568,8 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR List r = new List { 0 }; if (Version < 0 || Version == 0) { - int index = PersonalXY[species].FormeIndex(species, form); - PersonalInfo pi = PersonalXY[index]; + int index = PersonalTable.XY.getFormeIndex(species, form); + PersonalInfo pi = PersonalTable.XY.getFormeEntry(species, form); if (LVL) r.AddRange(LevelUpXY[index].getMoves(lvl)); if (Tutor) r.AddRange(getTutorMoves(species, form, ORASTutors)); @@ -578,8 +577,8 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR } if (Version < 0 || Version == 1) { - int index = PersonalAO[species].FormeIndex(species, form); - PersonalInfo pi = PersonalAO[index]; + int index = PersonalTable.AO.getFormeIndex(species, form); + PersonalInfo pi = PersonalTable.AO.getFormeEntry(species, form); if (LVL) r.AddRange(LevelUpAO[index].getMoves(lvl)); if (Tutor) r.AddRange(getTutorMoves(species, form, ORASTutors)); @@ -589,22 +588,22 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR } private static IEnumerable getEggMoves(int species, int formnum) { - int ind_XY = PersonalXY[species].FormeIndex(species, formnum); - int ind_AO = PersonalAO[species].FormeIndex(species, formnum); + int ind_XY = PersonalTable.XY.getFormeIndex(species, formnum); + int ind_AO = PersonalTable.AO.getFormeIndex(species, formnum); return EggMoveAO[ind_AO].Moves.Concat(EggMoveXY[ind_XY].Moves); } private static IEnumerable getTutorMoves(int species, int formnum, bool ORASTutors) { - PersonalInfo pkAO = PersonalAO[PersonalAO[species].FormeIndex(species, formnum)]; + PersonalInfo pkAO = PersonalTable.AO.getFormeEntry(species, formnum); // Type Tutor - List moves = TypeTutor.Where((t, i) => pkAO.Tutors[i]).ToList(); + List moves = TypeTutor.Where((t, i) => pkAO.TypeTutors[i]).ToList(); // Varied Tutors if (ORASTutors) for (int i = 0; i < Tutors_AO.Length; i++) for (int b = 0; b < Tutors_AO[i].Length; b++) - if (pkAO.ORASTutors[i][b]) + if (pkAO.SpecialTutors[i][b]) moves.Add(Tutors_AO[i][b]); // Keldeo - Secret Sword diff --git a/Legality/Data.cs b/Legality/Data.cs index 0e0c79f5e..e2195585f 100644 --- a/Legality/Data.cs +++ b/Legality/Data.cs @@ -223,7 +223,7 @@ public class EncounterLink public bool XY = true; public bool ORAS = true; public bool? Shiny = false; - public bool OT = false; + public bool OT = true; // Receiver is OT? } public enum Nature { @@ -234,127 +234,6 @@ public enum Nature Bashful, Rash, Calm, Gentle, Sassy, Careful, Quirky, } - public class PersonalInfo - { - internal static int SizeAO = 0x50; - internal static int SizeXY = 0x40; - public byte HP, ATK, DEF, SPE, SPA, SPD; - public int BST; - public int EV_HP, EV_ATK, EV_DEF, EV_SPE, EV_SPA, EV_SPD; - public byte[] Types = new byte[2]; - public byte CatchRate, EvoStage; - public ushort[] Items = new ushort[3]; - public byte Gender, HatchCycles, BaseFriendship, EXPGrowth; - public byte[] EggGroups = new byte[2]; - public byte[] Abilities = new byte[3]; - public ushort FormStats, FormeSprite, BaseEXP; - public byte FormeCount, Color; - public float Height, Weight; - public bool[] TMHM; - public bool[] Tutors; - public bool[][] ORASTutors = new bool[4][]; - public byte EscapeRate; - - public PersonalInfo(byte[] data) - { - using (BinaryReader br = new BinaryReader(new MemoryStream(data))) - { - HP = br.ReadByte(); ATK = br.ReadByte(); DEF = br.ReadByte(); - SPE = br.ReadByte(); SPA = br.ReadByte(); SPD = br.ReadByte(); - BST = HP + ATK + DEF + SPE + SPA + SPD; - - Types = new[] { br.ReadByte(), br.ReadByte() }; - CatchRate = br.ReadByte(); - EvoStage = br.ReadByte(); - - ushort EVs = br.ReadUInt16(); - EV_HP = EVs >> 0 & 0x3; - EV_ATK = EVs >> 2 & 0x3; - EV_DEF = EVs >> 4 & 0x3; - EV_SPE = EVs >> 6 & 0x3; - EV_SPA = EVs >> 8 & 0x3; - EV_SPD = EVs >> 10 & 0x3; - - Items = new[] { br.ReadUInt16(), br.ReadUInt16(), br.ReadUInt16() }; - Gender = br.ReadByte(); - HatchCycles = br.ReadByte(); - BaseFriendship = br.ReadByte(); - - EXPGrowth = br.ReadByte(); - EggGroups = new[] { br.ReadByte(), br.ReadByte() }; - Abilities = new[] { br.ReadByte(), br.ReadByte(), br.ReadByte() }; - EscapeRate = br.ReadByte(); - FormStats = br.ReadUInt16(); - - FormeSprite = br.ReadUInt16(); - FormeCount = br.ReadByte(); - Color = br.ReadByte(); - BaseEXP = br.ReadUInt16(); - - Height = br.ReadUInt16(); - Weight = br.ReadUInt16(); - - byte[] TMHMData = br.ReadBytes(0x10); - TMHM = new bool[8 * TMHMData.Length]; - for (int j = 0; j < TMHM.Length; j++) - TMHM[j] = (TMHMData[j / 8] >> (j % 8) & 0x1) == 1; //Bitflags for TMHM - - byte[] TutorData = br.ReadBytes(8); - Tutors = new bool[8 * TutorData.Length]; - for (int j = 0; j < Tutors.Length; j++) - Tutors[j] = (TutorData[j / 8] >> (j % 8) & 0x1) == 1; //Bitflags for Tutors - - if (br.BaseStream.Length - br.BaseStream.Position == 0x10) // ORAS - { - byte[][] ORASTutorData = - { - br.ReadBytes(4), // 15 - br.ReadBytes(4), // 17 - br.ReadBytes(4), // 16 - br.ReadBytes(4), // 15 - }; - for (int i = 0; i < 4; i++) - { - ORASTutors[i] = new bool[8 * ORASTutorData[i].Length]; - for (int b = 0; b < 8 * ORASTutorData[i].Length; b++) - ORASTutors[i][b] = (ORASTutorData[i][b / 8] >> b % 8 & 0x1) == 1; - } - } - } - } - - // Data Manipulation - public int FormeIndex(int species, int forme) - { - return forme == 0 || FormStats == 0 ? species : FormStats + forme - 1; - } - public int RandomGender - { - get - { - switch (Gender) - { - case 255: // Genderless - return 2; - case 254: // Female - return 1; - case 0: // Male - return 0; - default: - return (int)(Util.rnd32() % 2); - } - } - } - public bool HasFormes => FormeCount > 1; - - internal static PersonalInfo[] getArray(byte[] data, int size) - { - PersonalInfo[] d = new PersonalInfo[data.Length / size]; - for (int i = 0; i < d.Length; i++) - d[i] = new PersonalInfo(data.Skip(i * size).Take(size).ToArray()); - return d; - } - } internal static class Data { diff --git a/Legality/Tables.cs b/Legality/Tables.cs index 84437cf83..8bb92c9bb 100644 --- a/Legality/Tables.cs +++ b/Legality/Tables.cs @@ -444,6 +444,7 @@ public static partial class Legal 486, // Regigigas 487, // Giratina 488, // Cresselia + 490, // Manaphy 491, // Darkrai 492, // Shaymin 493, // Arceus @@ -762,8 +763,8 @@ public static partial class Legal new EncounterLink { Species = 378, Level = 50, RelearnMoves = new[] {85, 133, 58, 258 }, Ability = 4 }, // Regice new EncounterLink { Species = 379, Level = 50, RelearnMoves = new[] {442, 157, 356, 334 }, Ability = 4 }, // Registeel - new EncounterLink { Species = 208, Level = 40, Classic = false, Ability = 1, XY = false }, // Steelix - new EncounterLink { Species = 362, Level = 40, Classic = false, Ability = 1, XY = false }, // Glalie + new EncounterLink { Species = 208, Level = 40, Classic = false, Ability = 1, XY = false, OT = false }, // Steelix + new EncounterLink { Species = 362, Level = 40, Classic = false, Ability = 1, XY = false, OT = false }, // Glalie }; #endregion @@ -929,5 +930,23 @@ public static partial class Legal new[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // Region matching }; #endregion + + internal static readonly int[] MovePP_XY = + { + 00, + 35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 20, 30, 35, 35, 20, 15, 20, 20, 25, 20, 30, 05, 10, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 10, 15, 30, 35, 20, 20, 30, 25, 40, 20, 15, 20, 20, 20, + 30, 25, 15, 30, 25, 05, 15, 10, 05, 20, 20, 20, 05, 35, 20, 25, 20, 20, 20, 15, 25, 15, 10, 20, 25, 10, 35, 30, 15, 10, 40, 10, 15, 30, 15, 20, 10, 15, 10, 05, 10, 10, 25, 10, 20, 40, 30, 30, 20, 20, + 15, 10, 40, 15, 10, 30, 10, 20, 10, 40, 40, 20, 30, 30, 20, 30, 10, 10, 20, 05, 10, 30, 20, 20, 20, 05, 15, 15, 20, 10, 15, 35, 20, 15, 10, 10, 30, 15, 40, 20, 15, 10, 05, 10, 30, 10, 15, 20, 15, 40, + 20, 10, 05, 15, 10, 10, 10, 15, 30, 30, 10, 10, 20, 10, 01, 01, 10, 25, 10, 05, 15, 25, 15, 10, 15, 30, 05, 40, 15, 10, 25, 10, 30, 10, 20, 10, 10, 10, 10, 10, 20, 05, 40, 05, 05, 15, 05, 10, 05, 10, + 10, 10, 10, 20, 20, 40, 15, 10, 20, 20, 25, 05, 15, 10, 05, 20, 15, 20, 25, 20, 05, 30, 05, 10, 20, 40, 05, 20, 40, 20, 15, 35, 10, 05, 05, 05, 15, 05, 20, 05, 05, 15, 20, 10, 05, 05, 15, 10, 15, 15, + 10, 10, 10, 20, 10, 10, 10, 10, 15, 15, 15, 10, 20, 20, 10, 20, 20, 20, 20, 20, 10, 10, 10, 20, 20, 05, 15, 10, 10, 15, 10, 20, 05, 05, 10, 10, 20, 05, 10, 20, 10, 20, 20, 20, 05, 05, 15, 20, 10, 15, + 20, 15, 10, 10, 15, 10, 05, 05, 10, 15, 10, 05, 20, 25, 05, 40, 15, 05, 40, 15, 20, 20, 05, 15, 20, 20, 15, 15, 05, 10, 30, 20, 30, 15, 05, 40, 15, 05, 20, 05, 15, 25, 25, 15, 20, 15, 20, 15, 20, 10, + 20, 20, 05, 05, 10, 05, 40, 10, 10, 05, 10, 10, 15, 10, 20, 15, 30, 10, 20, 05, 10, 10, 15, 10, 10, 05, 15, 05, 10, 10, 30, 20, 20, 10, 10, 05, 05, 10, 05, 20, 10, 20, 10, 15, 10, 20, 20, 20, 15, 15, + 10, 15, 15, 15, 10, 10, 10, 20, 10, 30, 05, 10, 15, 10, 10, 05, 20, 30, 10, 30, 15, 15, 15, 15, 30, 10, 20, 15, 10, 10, 20, 15, 05, 05, 15, 15, 05, 10, 05, 20, 05, 15, 20, 05, 20, 20, 20, 20, 10, 20, + 10, 15, 20, 15, 10, 10, 05, 10, 05, 05, 10, 05, 05, 10, 05, 05, 05, 15, 10, 10, 10, 10, 10, 10, 15, 20, 15, 10, 15, 10, 15, 10, 20, 10, 15, 10, 20, 20, 20, 20, 20, 15, 15, 15, 15, 15, 15, 20, 15, 10, + 15, 15, 15, 15, 10, 10, 10, 10, 10, 15, 15, 15, 15, 05, 05, 15, 05, 10, 10, 10, 20, 20, 20, 10, 10, 30, 15, 15, 10, 15, 25, 10, 15, 10, 10, 10, 20, 10, 10, 10, 10, 10, 15, 15, 05, 05, 10, 10, 10, 05, + 05, 10, 05, 05, 15, 10, 05, 05, 05, 10, 10, 10, 10, 20, 25, 10, 20, 30, 25, 20, 20, 15, 20, 15, 20, 20, 10, 10, 10, 10, 10, 20, 10, 30, 15, 10, 10, 10, 20, 20, 05, 05, 05, 20, 10, 10, 20, 15, 20, 20, + 10, 20, 30, 10, 10, 40, 40, 30, 20, 40, 20, 20, 10, 10, 10, 10, 05, 10, 10, 05, 05, + }; } } diff --git a/Legality/Tables3.cs b/Legality/Tables3.cs index fb828819e..d94fa86f3 100644 --- a/Legality/Tables3.cs +++ b/Legality/Tables3.cs @@ -5,7 +5,7 @@ namespace PKHeX public static partial class Legal { // PKHeX Valid Array Storage - #region DP + #region RS internal static readonly ushort[] Pouch_Items_RS = { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 93, 94, 95, 96, 97, 98, 103, 104, 106, 107, 108, 109, 110, 111, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 254, 255, 256, 257, 258 }; @@ -24,13 +24,24 @@ public static partial class Legal internal static readonly ushort[] Pouch_Ball_RS = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; - internal static readonly ushort[] Pouch_Key_E = Pouch_Key_RS.Concat(new ushort[] { 375, 376 }).ToArray(); internal static readonly ushort[] Pouch_Key_FRLG = Pouch_Key_RS.Concat(new ushort[] { 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374 }).ToArray(); - + internal static readonly ushort[] Pouch_Key_E = Pouch_Key_FRLG.Concat(new ushort[] { 375, 376 }).ToArray(); + internal static readonly ushort[] Pouch_TMHM_RS = Pouch_TM_RS.Concat(Pouch_HM_RS).ToArray(); internal static readonly ushort[] HeldItems_RS = new ushort[1].Concat(Pouch_Items_RS).Concat(Pouch_Ball_RS).Concat(Pouch_Berries_RS).Concat(Pouch_TM_RS).ToArray(); #endregion - + internal static readonly int[] MovePP_RS = + { + 00, + 35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 30, 30, 35, 35, 20, 15, 20, 20, 10, 20, 30, 05, 25, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 20, 15, 30, 35, 20, 20, 30, 25, 40, 20, 15, 20, 20, 20, + 30, 25, 15, 30, 25, 05, 15, 10, 05, 20, 20, 20, 05, 35, 20, 25, 20, 20, 20, 15, 20, 10, 10, 40, 25, 10, 35, 30, 15, 20, 40, 10, 15, 30, 15, 20, 10, 15, 10, 05, 10, 10, 25, 10, 20, 40, 30, 30, 20, 20, + 15, 10, 40, 15, 20, 30, 20, 20, 10, 40, 40, 30, 30, 30, 20, 30, 10, 10, 20, 05, 10, 30, 20, 20, 20, 05, 15, 10, 20, 15, 15, 35, 20, 15, 10, 20, 30, 15, 40, 20, 15, 10, 05, 10, 30, 10, 15, 20, 15, 40, + 40, 10, 05, 15, 10, 10, 10, 15, 30, 30, 10, 10, 20, 10, 01, 01, 10, 10, 10, 05, 15, 25, 15, 10, 15, 30, 05, 40, 15, 10, 25, 10, 30, 10, 20, 10, 10, 10, 10, 10, 20, 05, 40, 05, 05, 15, 05, 10, 05, 15, + 10, 05, 10, 20, 20, 40, 15, 10, 20, 20, 25, 05, 15, 10, 05, 20, 15, 20, 25, 20, 05, 30, 05, 10, 20, 40, 05, 20, 40, 20, 15, 35, 10, 05, 05, 05, 15, 05, 20, 05, 05, 15, 20, 10, 05, 05, 15, 15, 15, 15, + 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 10, 20, 20, 10, 20, 20, 20, 20, 20, 10, 10, 10, 20, 20, 05, 15, 10, 10, 15, 10, 20, 05, 05, 10, 10, 20, 05, 10, 20, 10, 20, 20, 20, 05, 05, 15, 20, 10, 15, + 20, 15, 10, 10, 15, 10, 05, 05, 10, 15, 10, 05, 20, 25, 05, 40, 10, 05, 40, 15, 20, 20, 05, 15, 20, 30, 15, 15, 05, 10, 30, 20, 30, 15, 05, 40, 15, 05, 20, 05, 15, 25, 40, 15, 20, 15, 20, 15, 20, 10, + 20, 20, 05, 05, + }; } } diff --git a/Legality/Tables4.cs b/Legality/Tables4.cs index 1500a39ab..f3fe5724b 100644 --- a/Legality/Tables4.cs +++ b/Legality/Tables4.cs @@ -30,7 +30,7 @@ public static partial class Legal internal static readonly ushort[] Pouch_Battle_DP = { 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67 }; - internal static readonly ushort[] HeldItems_DP = new ushort[1].Concat(Pouch_Items_DP).Concat(Pouch_Mail_DP).Concat(Pouch_Medicine_DP).Concat(Pouch_Berries_DP).Concat(Pouch_Ball_DP).ToArray(); + internal static readonly ushort[] HeldItems_DP = new ushort[1].Concat(Pouch_Items_DP).Concat(Pouch_Mail_DP).Concat(Pouch_Medicine_DP).Concat(Pouch_Berries_DP).Concat(Pouch_Ball_DP).Concat(Pouch_TMHM_DP.Take(Pouch_TMHM_DP.Length - 8)).ToArray(); #endregion #region Pt @@ -47,7 +47,7 @@ public static partial class Legal internal static readonly ushort[] Pouch_Ball_Pt = Pouch_Ball_DP; internal static readonly ushort[] Pouch_Battle_Pt = Pouch_Battle_DP; - internal static readonly ushort[] HeldItems_Pt = new ushort[1].Concat(Pouch_Items_Pt).Concat(Pouch_Mail_Pt).Concat(Pouch_Medicine_Pt).Concat(Pouch_Berries_Pt).Concat(Pouch_Ball_Pt).ToArray(); + internal static readonly ushort[] HeldItems_Pt = new ushort[1].Concat(Pouch_Items_Pt).Concat(Pouch_Mail_Pt).Concat(Pouch_Medicine_Pt).Concat(Pouch_Berries_Pt).Concat(Pouch_Ball_Pt).Concat(Pouch_TMHM_Pt.Take(Pouch_TMHM_Pt.Length - 8)).ToArray(); #endregion #region HGSS @@ -64,7 +64,22 @@ public static partial class Legal }; internal static readonly ushort[] Pouch_Battle_HGSS = Pouch_Battle_DP; - internal static readonly ushort[] HeldItems_HGSS = new ushort[1].Concat(Pouch_Items_HGSS).Concat(Pouch_Mail_HGSS).Concat(Pouch_Medicine_HGSS).Concat(Pouch_Berries_HGSS).Concat(Pouch_Ball_Pt).ToArray(); + internal static readonly ushort[] HeldItems_HGSS = new ushort[1].Concat(Pouch_Items_HGSS).Concat(Pouch_Mail_HGSS).Concat(Pouch_Medicine_HGSS).Concat(Pouch_Berries_HGSS).Concat(Pouch_Ball_Pt).Concat(Pouch_TMHM_HGSS.Take(Pouch_TMHM_HGSS.Length - 8)).ToArray(); #endregion + + internal static readonly int[] MovePP_DP = + { + 00, + 35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 30, 30, 35, 35, 20, 15, 20, 20, 15, 20, 30, 05, 25, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 20, 15, 30, 35, 20, 20, 30, 25, 40, 20, 15, 20, 20, 20, + 30, 25, 15, 30, 25, 05, 15, 10, 05, 20, 20, 20, 05, 35, 20, 25, 20, 20, 20, 15, 25, 15, 10, 40, 25, 10, 35, 30, 15, 20, 40, 10, 15, 30, 15, 20, 10, 15, 10, 05, 10, 10, 25, 10, 20, 40, 30, 30, 20, 20, + 15, 10, 40, 15, 10, 30, 20, 20, 10, 40, 40, 30, 30, 30, 20, 30, 10, 10, 20, 05, 10, 30, 20, 20, 20, 05, 15, 10, 20, 15, 15, 35, 20, 15, 10, 20, 30, 15, 40, 20, 15, 10, 05, 10, 30, 10, 15, 20, 15, 40, + 40, 10, 05, 15, 10, 10, 10, 15, 30, 30, 10, 10, 20, 10, 01, 01, 10, 10, 10, 05, 15, 25, 15, 10, 15, 30, 05, 40, 15, 10, 25, 10, 30, 10, 20, 10, 10, 10, 10, 10, 20, 05, 40, 05, 05, 15, 05, 10, 05, 15, + 10, 10, 10, 20, 20, 40, 15, 10, 20, 20, 25, 05, 15, 10, 05, 20, 15, 20, 25, 20, 05, 30, 05, 10, 20, 40, 05, 20, 40, 20, 15, 35, 10, 05, 05, 05, 15, 05, 20, 05, 05, 15, 20, 10, 05, 05, 15, 15, 15, 15, + 10, 10, 10, 20, 10, 10, 10, 10, 15, 15, 15, 10, 20, 20, 10, 20, 20, 20, 20, 20, 10, 10, 10, 20, 20, 05, 15, 10, 10, 15, 10, 20, 05, 05, 10, 10, 20, 05, 10, 20, 10, 20, 20, 20, 05, 05, 15, 20, 10, 15, + 20, 15, 10, 10, 15, 10, 05, 05, 10, 15, 10, 05, 20, 25, 05, 40, 10, 05, 40, 15, 20, 20, 05, 15, 20, 30, 15, 15, 05, 10, 30, 20, 30, 15, 05, 40, 15, 05, 20, 05, 15, 25, 40, 15, 20, 15, 20, 15, 20, 10, + 20, 20, 05, 05, 10, 05, 40, 10, 10, 05, 10, 10, 15, 10, 20, 30, 30, 10, 20, 05, 10, 10, 15, 10, 10, 05, 15, 05, 10, 10, 30, 20, 20, 10, 10, 05, 05, 10, 05, 20, 10, 20, 10, 15, 10, 20, 20, 20, 15, 15, + 10, 15, 20, 15, 10, 10, 10, 20, 05, 30, 05, 10, 15, 10, 10, 05, 20, 30, 10, 30, 15, 15, 15, 15, 30, 10, 20, 15, 10, 10, 20, 15, 05, 05, 15, 15, 05, 10, 05, 20, 05, 15, 20, 05, 20, 20, 20, 20, 10, 20, + 10, 15, 20, 15, 10, 10, 05, 10, 05, 05, 10, 05, 05, 10, 05, 05, 05, + }; } } diff --git a/Legality/Tables5.cs b/Legality/Tables5.cs index d6b09e99e..354a3e79d 100644 --- a/Legality/Tables5.cs +++ b/Legality/Tables5.cs @@ -25,5 +25,22 @@ public static partial class Legal internal static readonly ushort[] Pouch_Key_B2W2 = { 437, 442, 447, 450, 453, 458, 465, 466, 471, 504, 578, 616, 617, 621, 626, 627, 628, 630, 631, 632, 633, 634, 635, 636, 637, 638, }; + + internal static readonly int[] MovePP_BW = + { + 00, + 35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 30, 30, 35, 35, 20, 15, 20, 20, 15, 20, 30, 05, 25, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 10, 15, 30, 35, 20, 20, 30, 25, 40, 20, 15, 20, 20, 20, + 30, 25, 15, 30, 25, 05, 15, 10, 05, 20, 20, 20, 05, 35, 20, 25, 20, 20, 20, 15, 25, 15, 10, 40, 25, 10, 35, 30, 15, 10, 40, 10, 15, 30, 15, 20, 10, 15, 10, 05, 10, 10, 25, 10, 20, 40, 30, 30, 20, 20, + 15, 10, 40, 15, 10, 30, 20, 20, 10, 40, 40, 30, 30, 30, 20, 30, 10, 10, 20, 05, 10, 30, 20, 20, 20, 05, 15, 15, 20, 15, 15, 35, 20, 15, 10, 10, 30, 15, 40, 20, 15, 10, 05, 10, 30, 10, 15, 20, 15, 40, + 40, 10, 05, 15, 10, 10, 10, 15, 30, 30, 10, 10, 20, 10, 01, 01, 10, 10, 10, 05, 15, 25, 15, 10, 15, 30, 05, 40, 15, 10, 25, 10, 30, 10, 20, 10, 10, 10, 10, 10, 20, 05, 40, 05, 05, 15, 05, 10, 05, 10, + 10, 10, 10, 20, 20, 40, 15, 10, 20, 20, 25, 05, 15, 10, 05, 20, 15, 20, 25, 20, 05, 30, 05, 10, 20, 40, 05, 20, 40, 20, 15, 35, 10, 05, 05, 05, 15, 05, 20, 05, 05, 15, 20, 10, 05, 05, 15, 10, 15, 15, + 10, 10, 10, 20, 10, 10, 10, 10, 15, 15, 15, 10, 20, 20, 10, 20, 20, 20, 20, 20, 10, 10, 10, 20, 20, 05, 15, 10, 10, 15, 10, 20, 05, 05, 10, 10, 20, 05, 10, 20, 10, 20, 20, 20, 05, 05, 15, 20, 10, 15, + 20, 15, 10, 10, 15, 10, 05, 05, 10, 15, 10, 05, 20, 25, 05, 40, 10, 05, 40, 15, 20, 20, 05, 15, 20, 30, 15, 15, 05, 10, 30, 20, 30, 15, 05, 40, 15, 05, 20, 05, 15, 25, 40, 15, 20, 15, 20, 15, 20, 10, + 20, 20, 05, 05, 10, 05, 40, 10, 10, 05, 10, 10, 15, 10, 20, 30, 30, 10, 20, 05, 10, 10, 15, 10, 10, 05, 15, 05, 10, 10, 30, 20, 20, 10, 10, 05, 05, 10, 05, 20, 10, 20, 10, 15, 10, 20, 20, 20, 15, 15, + 10, 15, 20, 15, 10, 10, 10, 20, 10, 30, 05, 10, 15, 10, 10, 05, 20, 30, 10, 30, 15, 15, 15, 15, 30, 10, 20, 15, 10, 10, 20, 15, 05, 05, 15, 15, 05, 10, 05, 20, 05, 15, 20, 05, 20, 20, 20, 20, 10, 20, + 10, 15, 20, 15, 10, 10, 05, 10, 05, 05, 10, 05, 05, 10, 05, 05, 05, 15, 10, 10, 10, 10, 10, 10, 15, 20, 15, 10, 15, 10, 15, 10, 20, 10, 15, 10, 20, 20, 20, 20, 20, 15, 15, 15, 15, 15, 15, 20, 15, 10, + 15, 15, 15, 15, 10, 10, 10, 10, 10, 15, 15, 15, 15, 05, 05, 15, 05, 10, 10, 10, 20, 20, 20, 10, 10, 30, 15, 15, 10, 15, 25, 10, 20, 10, 10, 10, 20, 10, 10, 10, 10, 10, 15, 15, 05, 05, 10, 10, 10, 05, + 05, 10, 05, 05, 15, 10, 05, 05, 05, + }; } } diff --git a/PKX/f1-Main.Designer.cs b/MainWindow/Main.Designer.cs similarity index 89% rename from PKX/f1-Main.Designer.cs rename to MainWindow/Main.Designer.cs index 53014fead..4c8015464 100644 --- a/PKX/f1-Main.Designer.cs +++ b/MainWindow/Main.Designer.cs @@ -179,14 +179,16 @@ public void InitializeComponent() this.CB_Move2 = new System.Windows.Forms.ComboBox(); this.CB_Move1 = new System.Windows.Forms.ComboBox(); this.Tab_OTMisc = new System.Windows.Forms.TabPage(); + this.FLP_PKMEditors = new System.Windows.Forms.FlowLayoutPanel(); + this.BTN_Ribbons = new System.Windows.Forms.Button(); + this.BTN_Medals = new System.Windows.Forms.Button(); + this.BTN_History = new System.Windows.Forms.Button(); this.TB_EC = new System.Windows.Forms.TextBox(); this.GB_nOT = new System.Windows.Forms.GroupBox(); this.Label_CTGender = new System.Windows.Forms.Label(); this.TB_OTt2 = new System.Windows.Forms.TextBox(); this.Label_PrevOT = new System.Windows.Forms.Label(); this.BTN_RerollEC = new System.Windows.Forms.Button(); - this.BTN_History = new System.Windows.Forms.Button(); - this.BTN_Ribbons = new System.Windows.Forms.Button(); this.GB_Markings = new System.Windows.Forms.GroupBox(); this.PB_Mark6 = new System.Windows.Forms.PictureBox(); this.PB_MarkPentagon = new System.Windows.Forms.PictureBox(); @@ -219,8 +221,8 @@ public void InitializeComponent() this.Menu_Exit = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Tools = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Showdown = new System.Windows.Forms.ToolStripMenuItem(); - this.Menu_ShowdownImportPK6 = new System.Windows.Forms.ToolStripMenuItem(); - this.Menu_ShowdownExportPK6 = new System.Windows.Forms.ToolStripMenuItem(); + this.Menu_ShowdownImportPKM = new System.Windows.Forms.ToolStripMenuItem(); + this.Menu_ShowdownExportPKM = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_ShowdownExportParty = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_ShowdownExportBattleBox = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_CyberGadget = new System.Windows.Forms.ToolStripMenuItem(); @@ -231,6 +233,7 @@ public void InitializeComponent() this.Menu_DumpBoxes = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Report = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Database = new System.Windows.Forms.ToolStripMenuItem(); + this.Menu_BatchEditor = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Other = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_OpenSDF = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_OpenSDB = new System.Windows.Forms.ToolStripMenuItem(); @@ -239,7 +242,7 @@ public void InitializeComponent() this.CB_MainLanguage = new System.Windows.Forms.ToolStripComboBox(); this.Menu_Modify = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_ModifyDex = new System.Windows.Forms.ToolStripMenuItem(); - this.Menu_ModifyPK6 = new System.Windows.Forms.ToolStripMenuItem(); + this.Menu_ModifyPKM = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Unicode = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_About = new System.Windows.Forms.ToolStripMenuItem(); this.L_Save = new System.Windows.Forms.Label(); @@ -352,6 +355,8 @@ public void InitializeComponent() this.B_OpenBerryField = new System.Windows.Forms.Button(); this.B_OpenSecretBase = new System.Windows.Forms.Button(); this.B_Pokeblocks = new System.Windows.Forms.Button(); + this.B_LinkInfo = new System.Windows.Forms.Button(); + this.B_CGearSkin = new System.Windows.Forms.Button(); this.dragout = new System.Windows.Forms.PictureBox(); this.mnuL = new System.Windows.Forms.ContextMenuStrip(this.components); this.mnuLLegality = new System.Windows.Forms.ToolStripMenuItem(); @@ -376,6 +381,7 @@ public void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.PB_WarnRelearn1)).BeginInit(); this.GB_CurrentMoves.SuspendLayout(); this.Tab_OTMisc.SuspendLayout(); + this.FLP_PKMEditors.SuspendLayout(); this.GB_nOT.SuspendLayout(); this.GB_Markings.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.PB_Mark6)).BeginInit(); @@ -846,7 +852,7 @@ public void InitializeComponent() // CHK_IsEgg // this.CHK_IsEgg.AutoSize = true; - this.CHK_IsEgg.Location = new System.Drawing.Point(43, 196); + this.CHK_IsEgg.Location = new System.Drawing.Point(35, 196); this.CHK_IsEgg.Name = "CHK_IsEgg"; this.CHK_IsEgg.Size = new System.Drawing.Size(56, 17); this.CHK_IsEgg.TabIndex = 16; @@ -867,7 +873,7 @@ public void InitializeComponent() // Label_Form // this.Label_Form.AutoSize = true; - this.Label_Form.Location = new System.Drawing.Point(128, 136); + this.Label_Form.Location = new System.Drawing.Point(125, 136); this.Label_Form.Name = "Label_Form"; this.Label_Form.Size = new System.Drawing.Size(33, 13); this.Label_Form.TabIndex = 11; @@ -2239,11 +2245,10 @@ public void InitializeComponent() // Tab_OTMisc // this.Tab_OTMisc.AllowDrop = true; + this.Tab_OTMisc.Controls.Add(this.FLP_PKMEditors); this.Tab_OTMisc.Controls.Add(this.TB_EC); this.Tab_OTMisc.Controls.Add(this.GB_nOT); this.Tab_OTMisc.Controls.Add(this.BTN_RerollEC); - this.Tab_OTMisc.Controls.Add(this.BTN_History); - this.Tab_OTMisc.Controls.Add(this.BTN_Ribbons); this.Tab_OTMisc.Controls.Add(this.GB_Markings); this.Tab_OTMisc.Controls.Add(this.GB_ExtraBytes); this.Tab_OTMisc.Controls.Add(this.GB_OT); @@ -2256,6 +2261,68 @@ public void InitializeComponent() this.Tab_OTMisc.Text = "OT/Misc"; this.Tab_OTMisc.UseVisualStyleBackColor = true; // + // FLP_PKMEditors + // + this.FLP_PKMEditors.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.FLP_PKMEditors.AutoSize = true; + this.FLP_PKMEditors.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.FLP_PKMEditors.Controls.Add(this.BTN_Ribbons); + this.FLP_PKMEditors.Controls.Add(this.BTN_Medals); + this.FLP_PKMEditors.Controls.Add(this.BTN_History); + this.FLP_PKMEditors.Location = new System.Drawing.Point(49, 245); + this.FLP_PKMEditors.Name = "FLP_PKMEditors"; + this.FLP_PKMEditors.Size = new System.Drawing.Size(175, 25); + this.FLP_PKMEditors.TabIndex = 9; + this.FLP_PKMEditors.WrapContents = false; + // + // BTN_Ribbons + // + this.BTN_Ribbons.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.BTN_Ribbons.AutoSize = true; + this.BTN_Ribbons.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.BTN_Ribbons.Location = new System.Drawing.Point(1, 1); + this.BTN_Ribbons.Margin = new System.Windows.Forms.Padding(1); + this.BTN_Ribbons.Name = "BTN_Ribbons"; + this.BTN_Ribbons.Size = new System.Drawing.Size(56, 23); + this.BTN_Ribbons.TabIndex = 5; + this.BTN_Ribbons.Text = "Ribbons"; + this.BTN_Ribbons.UseVisualStyleBackColor = true; + this.BTN_Ribbons.Click += new System.EventHandler(this.openRibbons); + // + // BTN_Medals + // + this.BTN_Medals.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.BTN_Medals.AutoSize = true; + this.BTN_Medals.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.BTN_Medals.Location = new System.Drawing.Point(59, 1); + this.BTN_Medals.Margin = new System.Windows.Forms.Padding(1); + this.BTN_Medals.Name = "BTN_Medals"; + this.BTN_Medals.Size = new System.Drawing.Size(51, 23); + this.BTN_Medals.TabIndex = 7; + this.BTN_Medals.Text = "Medals"; + this.BTN_Medals.UseVisualStyleBackColor = true; + this.BTN_Medals.Click += new System.EventHandler(this.openMedals); + // + // BTN_History + // + this.BTN_History.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.BTN_History.AutoSize = true; + this.BTN_History.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.BTN_History.Location = new System.Drawing.Point(112, 1); + this.BTN_History.Margin = new System.Windows.Forms.Padding(1); + this.BTN_History.Name = "BTN_History"; + this.BTN_History.Size = new System.Drawing.Size(62, 23); + this.BTN_History.TabIndex = 6; + this.BTN_History.Text = "Memories"; + this.BTN_History.UseVisualStyleBackColor = true; + this.BTN_History.Click += new System.EventHandler(this.openHistory); + // // TB_EC // this.TB_EC.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -2273,7 +2340,7 @@ public void InitializeComponent() this.GB_nOT.Controls.Add(this.Label_CTGender); this.GB_nOT.Controls.Add(this.TB_OTt2); this.GB_nOT.Controls.Add(this.Label_PrevOT); - this.GB_nOT.Location = new System.Drawing.Point(40, 90); + this.GB_nOT.Location = new System.Drawing.Point(40, 85); this.GB_nOT.Name = "GB_nOT"; this.GB_nOT.Size = new System.Drawing.Size(190, 50); this.GB_nOT.TabIndex = 2; @@ -2325,26 +2392,6 @@ public void InitializeComponent() this.BTN_RerollEC.UseVisualStyleBackColor = true; this.BTN_RerollEC.Click += new System.EventHandler(this.updateRandomEC); // - // BTN_History - // - this.BTN_History.Location = new System.Drawing.Point(138, 250); - this.BTN_History.Name = "BTN_History"; - this.BTN_History.Size = new System.Drawing.Size(100, 23); - this.BTN_History.TabIndex = 6; - this.BTN_History.Text = "Memories/Amie"; - this.BTN_History.UseVisualStyleBackColor = true; - this.BTN_History.Click += new System.EventHandler(this.openHistory); - // - // BTN_Ribbons - // - this.BTN_Ribbons.Location = new System.Drawing.Point(32, 250); - this.BTN_Ribbons.Name = "BTN_Ribbons"; - this.BTN_Ribbons.Size = new System.Drawing.Size(100, 23); - this.BTN_Ribbons.TabIndex = 5; - this.BTN_Ribbons.Text = "Ribbons/Medals"; - this.BTN_Ribbons.UseVisualStyleBackColor = true; - this.BTN_Ribbons.Click += new System.EventHandler(this.openRibbons); - // // GB_Markings // this.GB_Markings.Controls.Add(this.PB_Mark6); @@ -2356,7 +2403,7 @@ public void InitializeComponent() this.GB_Markings.Controls.Add(this.PB_MarkShiny); this.GB_Markings.Controls.Add(this.PB_Mark1); this.GB_Markings.Controls.Add(this.PB_Mark4); - this.GB_Markings.Location = new System.Drawing.Point(68, 188); + this.GB_Markings.Location = new System.Drawing.Point(68, 183); this.GB_Markings.Name = "GB_Markings"; this.GB_Markings.Size = new System.Drawing.Size(135, 58); this.GB_Markings.TabIndex = 4; @@ -2478,7 +2525,7 @@ public void InitializeComponent() // this.GB_ExtraBytes.Controls.Add(this.TB_ExtraByte); this.GB_ExtraBytes.Controls.Add(this.CB_ExtraBytes); - this.GB_ExtraBytes.Location = new System.Drawing.Point(68, 140); + this.GB_ExtraBytes.Location = new System.Drawing.Point(68, 135); this.GB_ExtraBytes.Name = "GB_ExtraBytes"; this.GB_ExtraBytes.Size = new System.Drawing.Size(135, 48); this.GB_ExtraBytes.TabIndex = 3; @@ -2516,7 +2563,7 @@ public void InitializeComponent() this.GB_OT.Controls.Add(this.Label_OT); this.GB_OT.Controls.Add(this.Label_SID); this.GB_OT.Controls.Add(this.Label_TID); - this.GB_OT.Location = new System.Drawing.Point(40, 13); + this.GB_OT.Location = new System.Drawing.Point(40, 8); this.GB_OT.Name = "GB_OT"; this.GB_OT.Size = new System.Drawing.Size(190, 75); this.GB_OT.TabIndex = 1; @@ -2598,9 +2645,9 @@ public void InitializeComponent() // // Label_EncryptionConstant // - this.Label_EncryptionConstant.Location = new System.Drawing.Point(29, 279); + this.Label_EncryptionConstant.Location = new System.Drawing.Point(20, 279); this.Label_EncryptionConstant.Name = "Label_EncryptionConstant"; - this.Label_EncryptionConstant.Size = new System.Drawing.Size(105, 13); + this.Label_EncryptionConstant.Size = new System.Drawing.Size(120, 13); this.Label_EncryptionConstant.TabIndex = 1; this.Label_EncryptionConstant.Text = "Encryption Constant:"; this.Label_EncryptionConstant.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -2635,7 +2682,7 @@ public void InitializeComponent() this.Menu_Open.Name = "Menu_Open"; this.Menu_Open.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); this.Menu_Open.ShowShortcutKeys = false; - this.Menu_Open.Size = new System.Drawing.Size(152, 22); + this.Menu_Open.Size = new System.Drawing.Size(139, 22); this.Menu_Open.Text = "&Open..."; this.Menu_Open.Click += new System.EventHandler(this.mainMenuOpen); // @@ -2645,7 +2692,7 @@ public void InitializeComponent() this.Menu_Save.Name = "Menu_Save"; this.Menu_Save.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); this.Menu_Save.ShowShortcutKeys = false; - this.Menu_Save.Size = new System.Drawing.Size(152, 22); + this.Menu_Save.Size = new System.Drawing.Size(139, 22); this.Menu_Save.Text = "&Save PK6..."; this.Menu_Save.Click += new System.EventHandler(this.mainMenuSave); // @@ -2657,7 +2704,7 @@ public void InitializeComponent() this.Menu_ExportSAV.Enabled = false; this.Menu_ExportSAV.Image = global::PKHeX.Properties.Resources.saveSAV; this.Menu_ExportSAV.Name = "Menu_ExportSAV"; - this.Menu_ExportSAV.Size = new System.Drawing.Size(152, 22); + this.Menu_ExportSAV.Size = new System.Drawing.Size(139, 22); this.Menu_ExportSAV.Text = "&Export SAV..."; // // Menu_ExportMAIN @@ -2666,7 +2713,7 @@ public void InitializeComponent() this.Menu_ExportMAIN.Name = "Menu_ExportMAIN"; this.Menu_ExportMAIN.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E))); this.Menu_ExportMAIN.ShowShortcutKeys = false; - this.Menu_ExportMAIN.Size = new System.Drawing.Size(152, 22); + this.Menu_ExportMAIN.Size = new System.Drawing.Size(130, 22); this.Menu_ExportMAIN.Text = "&Export main"; this.Menu_ExportMAIN.Click += new System.EventHandler(this.clickExportSAV); // @@ -2676,7 +2723,7 @@ public void InitializeComponent() this.Menu_ExportBAK.Name = "Menu_ExportBAK"; this.Menu_ExportBAK.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B))); this.Menu_ExportBAK.ShowShortcutKeys = false; - this.Menu_ExportBAK.Size = new System.Drawing.Size(152, 22); + this.Menu_ExportBAK.Size = new System.Drawing.Size(130, 22); this.Menu_ExportBAK.Text = "Export &BAK"; this.Menu_ExportBAK.Click += new System.EventHandler(this.clickExportSAVBAK); // @@ -2686,7 +2733,7 @@ public void InitializeComponent() this.Menu_Exit.Name = "Menu_Exit"; this.Menu_Exit.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Q))); this.Menu_Exit.ShowShortcutKeys = false; - this.Menu_Exit.Size = new System.Drawing.Size(152, 22); + this.Menu_Exit.Size = new System.Drawing.Size(139, 22); this.Menu_Exit.Text = "&Quit"; this.Menu_Exit.Click += new System.EventHandler(this.mainMenuExit); // @@ -2704,8 +2751,8 @@ public void InitializeComponent() // Menu_Showdown // this.Menu_Showdown.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.Menu_ShowdownImportPK6, - this.Menu_ShowdownExportPK6, + this.Menu_ShowdownImportPKM, + this.Menu_ShowdownExportPKM, this.Menu_ShowdownExportParty, this.Menu_ShowdownExportBattleBox}); this.Menu_Showdown.Image = global::PKHeX.Properties.Resources.showdown; @@ -2713,26 +2760,26 @@ public void InitializeComponent() this.Menu_Showdown.Size = new System.Drawing.Size(143, 22); this.Menu_Showdown.Text = "Showdown"; // - // Menu_ShowdownImportPK6 + // Menu_ShowdownImportPKM // - this.Menu_ShowdownImportPK6.Image = global::PKHeX.Properties.Resources.import; - this.Menu_ShowdownImportPK6.Name = "Menu_ShowdownImportPK6"; - this.Menu_ShowdownImportPK6.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T))); - this.Menu_ShowdownImportPK6.ShowShortcutKeys = false; - this.Menu_ShowdownImportPK6.Size = new System.Drawing.Size(231, 22); - this.Menu_ShowdownImportPK6.Text = "Import Set from Clipboard"; - this.Menu_ShowdownImportPK6.Click += new System.EventHandler(this.clickShowdownImportPK6); + this.Menu_ShowdownImportPKM.Image = global::PKHeX.Properties.Resources.import; + this.Menu_ShowdownImportPKM.Name = "Menu_ShowdownImportPKM"; + this.Menu_ShowdownImportPKM.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T))); + this.Menu_ShowdownImportPKM.ShowShortcutKeys = false; + this.Menu_ShowdownImportPKM.Size = new System.Drawing.Size(231, 22); + this.Menu_ShowdownImportPKM.Text = "Import Set from Clipboard"; + this.Menu_ShowdownImportPKM.Click += new System.EventHandler(this.clickShowdownImportPK6); // - // Menu_ShowdownExportPK6 + // Menu_ShowdownExportPKM // - this.Menu_ShowdownExportPK6.Image = global::PKHeX.Properties.Resources.export; - this.Menu_ShowdownExportPK6.Name = "Menu_ShowdownExportPK6"; - this.Menu_ShowdownExportPK6.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + this.Menu_ShowdownExportPKM.Image = global::PKHeX.Properties.Resources.export; + this.Menu_ShowdownExportPKM.Name = "Menu_ShowdownExportPKM"; + this.Menu_ShowdownExportPKM.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) | System.Windows.Forms.Keys.T))); - this.Menu_ShowdownExportPK6.ShowShortcutKeys = false; - this.Menu_ShowdownExportPK6.Size = new System.Drawing.Size(231, 22); - this.Menu_ShowdownExportPK6.Text = "Export Set to Clipboard"; - this.Menu_ShowdownExportPK6.Click += new System.EventHandler(this.clickShowdownExportPK6); + this.Menu_ShowdownExportPKM.ShowShortcutKeys = false; + this.Menu_ShowdownExportPKM.Size = new System.Drawing.Size(231, 22); + this.Menu_ShowdownExportPKM.Text = "Export Set to Clipboard"; + this.Menu_ShowdownExportPKM.Click += new System.EventHandler(this.clickShowdownExportPK6); // // Menu_ShowdownExportParty // @@ -2782,7 +2829,8 @@ public void InitializeComponent() this.Menu_LoadBoxes, this.Menu_DumpBoxes, this.Menu_Report, - this.Menu_Database}); + this.Menu_Database, + this.Menu_BatchEditor}); this.Menu_Data.Image = global::PKHeX.Properties.Resources.data; this.Menu_Data.Name = "Menu_Data"; this.Menu_Data.Size = new System.Drawing.Size(143, 22); @@ -2824,6 +2872,16 @@ public void InitializeComponent() this.Menu_Database.Text = "PK6 &Database"; this.Menu_Database.Click += new System.EventHandler(this.mainMenuDatabase); // + // Menu_BatchEditor + // + this.Menu_BatchEditor.Image = global::PKHeX.Properties.Resources.settings; + this.Menu_BatchEditor.Name = "Menu_BatchEditor"; + this.Menu_BatchEditor.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.M))); + this.Menu_BatchEditor.ShowShortcutKeys = false; + this.Menu_BatchEditor.Size = new System.Drawing.Size(151, 22); + this.Menu_BatchEditor.Text = "Batch Editor"; + this.Menu_BatchEditor.Click += new System.EventHandler(this.manMenuBatchEditor); + // // Menu_Other // this.Menu_Other.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -2881,7 +2939,7 @@ public void InitializeComponent() // this.Menu_Modify.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.Menu_ModifyDex, - this.Menu_ModifyPK6}); + this.Menu_ModifyPKM}); this.Menu_Modify.Image = global::PKHeX.Properties.Resources.settings; this.Menu_Modify.Name = "Menu_Modify"; this.Menu_Modify.Size = new System.Drawing.Size(139, 22); @@ -2893,19 +2951,19 @@ public void InitializeComponent() this.Menu_ModifyDex.CheckOnClick = true; this.Menu_ModifyDex.CheckState = System.Windows.Forms.CheckState.Checked; this.Menu_ModifyDex.Name = "Menu_ModifyDex"; - this.Menu_ModifyDex.Size = new System.Drawing.Size(159, 22); + this.Menu_ModifyDex.Size = new System.Drawing.Size(164, 22); this.Menu_ModifyDex.Text = "Modify Pokédex"; this.Menu_ModifyDex.Click += new System.EventHandler(this.mainMenuModifyDex); // - // Menu_ModifyPK6 + // Menu_ModifyPKM // - this.Menu_ModifyPK6.Checked = true; - this.Menu_ModifyPK6.CheckOnClick = true; - this.Menu_ModifyPK6.CheckState = System.Windows.Forms.CheckState.Checked; - this.Menu_ModifyPK6.Name = "Menu_ModifyPK6"; - this.Menu_ModifyPK6.Size = new System.Drawing.Size(159, 22); - this.Menu_ModifyPK6.Text = "Modify PK6 Info"; - this.Menu_ModifyPK6.Click += new System.EventHandler(this.mainMenuModifyPKM); + this.Menu_ModifyPKM.Checked = true; + this.Menu_ModifyPKM.CheckOnClick = true; + this.Menu_ModifyPKM.CheckState = System.Windows.Forms.CheckState.Checked; + this.Menu_ModifyPKM.Name = "Menu_ModifyPKM"; + this.Menu_ModifyPKM.Size = new System.Drawing.Size(164, 22); + this.Menu_ModifyPKM.Text = "Modify PKM Info"; + this.Menu_ModifyPKM.Click += new System.EventHandler(this.mainMenuModifyPKM); // // Menu_Unicode // @@ -2966,6 +3024,7 @@ public void InitializeComponent() // // PAN_Box // + this.PAN_Box.BackgroundImage = global::PKHeX.Properties.Resources.box_wp16xy; this.PAN_Box.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; this.PAN_Box.Controls.Add(this.bpkx30); this.PAN_Box.Controls.Add(this.bpkx29); @@ -3014,7 +3073,11 @@ public void InitializeComponent() this.bpkx30.TabStop = false; this.bpkx30.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx30.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx30.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx30.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx30.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx30.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx30.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // mnuVSD // @@ -3058,7 +3121,11 @@ public void InitializeComponent() this.bpkx29.TabStop = false; this.bpkx29.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx29.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx29.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx29.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx29.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx29.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx29.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx28 // @@ -3072,7 +3139,11 @@ public void InitializeComponent() this.bpkx28.TabStop = false; this.bpkx28.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx28.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx28.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx28.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx28.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx28.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx28.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx27 // @@ -3086,7 +3157,11 @@ public void InitializeComponent() this.bpkx27.TabStop = false; this.bpkx27.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx27.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx27.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx27.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx27.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx27.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx27.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx26 // @@ -3100,7 +3175,11 @@ public void InitializeComponent() this.bpkx26.TabStop = false; this.bpkx26.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx26.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx26.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx26.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx26.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx26.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx26.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx25 // @@ -3114,7 +3193,11 @@ public void InitializeComponent() this.bpkx25.TabStop = false; this.bpkx25.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx25.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx25.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx25.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx25.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx25.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx25.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx24 // @@ -3128,7 +3211,11 @@ public void InitializeComponent() this.bpkx24.TabStop = false; this.bpkx24.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx24.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx24.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx24.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx24.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx24.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx24.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx23 // @@ -3142,7 +3229,11 @@ public void InitializeComponent() this.bpkx23.TabStop = false; this.bpkx23.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx23.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx23.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx23.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx23.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx23.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx23.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx22 // @@ -3156,7 +3247,11 @@ public void InitializeComponent() this.bpkx22.TabStop = false; this.bpkx22.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx22.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx22.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx22.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx22.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx22.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx22.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx21 // @@ -3170,7 +3265,11 @@ public void InitializeComponent() this.bpkx21.TabStop = false; this.bpkx21.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx21.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx21.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx21.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx21.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx21.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx21.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx20 // @@ -3184,7 +3283,11 @@ public void InitializeComponent() this.bpkx20.TabStop = false; this.bpkx20.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx20.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx20.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx20.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx20.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx20.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx20.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx19 // @@ -3198,7 +3301,11 @@ public void InitializeComponent() this.bpkx19.TabStop = false; this.bpkx19.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx19.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx19.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx19.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx19.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx19.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx19.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx18 // @@ -3212,7 +3319,11 @@ public void InitializeComponent() this.bpkx18.TabStop = false; this.bpkx18.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx18.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx18.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx18.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx18.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx18.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx18.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx17 // @@ -3226,7 +3337,11 @@ public void InitializeComponent() this.bpkx17.TabStop = false; this.bpkx17.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx17.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx17.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx17.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx17.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx17.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx17.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx16 // @@ -3240,7 +3355,11 @@ public void InitializeComponent() this.bpkx16.TabStop = false; this.bpkx16.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx16.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx16.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx16.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx16.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx16.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx16.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx15 // @@ -3254,7 +3373,11 @@ public void InitializeComponent() this.bpkx15.TabStop = false; this.bpkx15.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx15.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx15.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx15.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx15.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx15.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx15.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx14 // @@ -3268,7 +3391,11 @@ public void InitializeComponent() this.bpkx14.TabStop = false; this.bpkx14.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx14.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx14.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx14.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx14.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx14.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx14.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx13 // @@ -3282,7 +3409,11 @@ public void InitializeComponent() this.bpkx13.TabStop = false; this.bpkx13.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx13.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx13.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx13.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx13.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx13.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx13.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx12 // @@ -3296,7 +3427,11 @@ public void InitializeComponent() this.bpkx12.TabStop = false; this.bpkx12.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx12.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx12.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx12.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx12.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx12.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx12.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx11 // @@ -3310,7 +3445,11 @@ public void InitializeComponent() this.bpkx11.TabStop = false; this.bpkx11.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx11.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx11.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx11.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx11.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx11.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx11.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx10 // @@ -3324,7 +3463,11 @@ public void InitializeComponent() this.bpkx10.TabStop = false; this.bpkx10.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx10.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx10.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx10.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx10.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx10.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx10.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx9 // @@ -3338,7 +3481,11 @@ public void InitializeComponent() this.bpkx9.TabStop = false; this.bpkx9.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx9.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx9.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx9.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx9.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx9.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx8 // @@ -3352,7 +3499,11 @@ public void InitializeComponent() this.bpkx8.TabStop = false; this.bpkx8.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx8.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx8.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx8.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx8.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx8.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx7 // @@ -3366,7 +3517,11 @@ public void InitializeComponent() this.bpkx7.TabStop = false; this.bpkx7.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx7.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx7.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx7.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx7.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx7.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx7.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx6 // @@ -3380,7 +3535,11 @@ public void InitializeComponent() this.bpkx6.TabStop = false; this.bpkx6.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx6.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx5 // @@ -3394,7 +3553,11 @@ public void InitializeComponent() this.bpkx5.TabStop = false; this.bpkx5.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx5.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx4 // @@ -3408,7 +3571,11 @@ public void InitializeComponent() this.bpkx4.TabStop = false; this.bpkx4.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx4.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx3 // @@ -3422,7 +3589,11 @@ public void InitializeComponent() this.bpkx3.TabStop = false; this.bpkx3.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx3.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx2 // @@ -3436,7 +3607,11 @@ public void InitializeComponent() this.bpkx2.TabStop = false; this.bpkx2.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx2.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx1 // @@ -3450,7 +3625,11 @@ public void InitializeComponent() this.bpkx1.TabStop = false; this.bpkx1.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop); this.bpkx1.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter); + this.bpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // B_BoxRight // @@ -3566,7 +3745,11 @@ public void InitializeComponent() this.bbpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx1.TabIndex = 8; this.bbpkx1.TabStop = false; + this.bbpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bbpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // mnuV // @@ -3591,7 +3774,11 @@ public void InitializeComponent() this.bbpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx2.TabIndex = 9; this.bbpkx2.TabStop = false; + this.bbpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bbpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bbpkx3 // @@ -3602,7 +3789,11 @@ public void InitializeComponent() this.bbpkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx3.TabIndex = 10; this.bbpkx3.TabStop = false; + this.bbpkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bbpkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bbpkx4 // @@ -3613,7 +3804,11 @@ public void InitializeComponent() this.bbpkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx4.TabIndex = 11; this.bbpkx4.TabStop = false; + this.bbpkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bbpkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bbpkx5 // @@ -3624,7 +3819,11 @@ public void InitializeComponent() this.bbpkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx5.TabIndex = 12; this.bbpkx5.TabStop = false; + this.bbpkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bbpkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bbpkx6 // @@ -3635,7 +3834,11 @@ public void InitializeComponent() this.bbpkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx6.TabIndex = 13; this.bbpkx6.TabStop = false; + this.bbpkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.bbpkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // L_ReadOnlyPBB // @@ -3691,7 +3894,11 @@ public void InitializeComponent() this.ppkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx1.TabIndex = 2; this.ppkx1.TabStop = false; + this.ppkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.ppkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx2 // @@ -3702,7 +3909,11 @@ public void InitializeComponent() this.ppkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx2.TabIndex = 3; this.ppkx2.TabStop = false; + this.ppkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.ppkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx3 // @@ -3713,7 +3924,11 @@ public void InitializeComponent() this.ppkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx3.TabIndex = 4; this.ppkx3.TabStop = false; + this.ppkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.ppkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx4 // @@ -3724,7 +3939,11 @@ public void InitializeComponent() this.ppkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx4.TabIndex = 5; this.ppkx4.TabStop = false; + this.ppkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.ppkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx5 // @@ -3735,7 +3954,11 @@ public void InitializeComponent() this.ppkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx5.TabIndex = 6; this.ppkx5.TabStop = false; + this.ppkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.ppkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx6 // @@ -3746,7 +3969,11 @@ public void InitializeComponent() this.ppkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx6.TabIndex = 7; this.ppkx6.TabStop = false; + this.ppkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.ppkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // Tab_Other // @@ -3864,7 +4091,11 @@ public void InitializeComponent() this.dcpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.dcpkx2.TabIndex = 11; this.dcpkx2.TabStop = false; + this.dcpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.dcpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.dcpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.dcpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.dcpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // dcpkx1 // @@ -3876,7 +4107,11 @@ public void InitializeComponent() this.dcpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.dcpkx1.TabIndex = 10; this.dcpkx1.TabStop = false; + this.dcpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.dcpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.dcpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.dcpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.dcpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // DayCare_HasEgg // @@ -3909,7 +4144,11 @@ public void InitializeComponent() this.gtspkx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.gtspkx.TabIndex = 23; this.gtspkx.TabStop = false; + this.gtspkx.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.gtspkx.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.gtspkx.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.gtspkx.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.gtspkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // GB_Fused // @@ -3931,7 +4170,11 @@ public void InitializeComponent() this.fusedpkx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.fusedpkx.TabIndex = 24; this.fusedpkx.TabStop = false; + this.fusedpkx.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.fusedpkx.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.fusedpkx.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.fusedpkx.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.fusedpkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // L_ReadOnlyOther // @@ -3965,7 +4208,11 @@ public void InitializeComponent() this.subepkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.subepkx1.TabIndex = 18; this.subepkx1.TabStop = false; + this.subepkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.subepkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); this.subepkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.subepkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.subepkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // subepkx2 // @@ -4130,6 +4377,8 @@ public void InitializeComponent() this.FLP_SAVtools.Controls.Add(this.B_OpenBerryField); this.FLP_SAVtools.Controls.Add(this.B_OpenSecretBase); this.FLP_SAVtools.Controls.Add(this.B_Pokeblocks); + this.FLP_SAVtools.Controls.Add(this.B_LinkInfo); + this.FLP_SAVtools.Controls.Add(this.B_CGearSkin); this.FLP_SAVtools.Location = new System.Drawing.Point(6, 10); this.FLP_SAVtools.Name = "FLP_SAVtools"; this.FLP_SAVtools.Size = new System.Drawing.Size(297, 87); @@ -4278,6 +4527,26 @@ public void InitializeComponent() this.B_Pokeblocks.Visible = false; this.B_Pokeblocks.Click += new System.EventHandler(this.B_OpenPokeblocks_Click); // + // B_LinkInfo + // + this.B_LinkInfo.Location = new System.Drawing.Point(189, 119); + this.B_LinkInfo.Name = "B_LinkInfo"; + this.B_LinkInfo.Size = new System.Drawing.Size(87, 23); + this.B_LinkInfo.TabIndex = 23; + this.B_LinkInfo.Text = "Link Data"; + this.B_LinkInfo.UseVisualStyleBackColor = true; + this.B_LinkInfo.Click += new System.EventHandler(this.B_LinkInfo_Click); + // + // B_CGearSkin + // + this.B_CGearSkin.Location = new System.Drawing.Point(3, 148); + this.B_CGearSkin.Name = "B_CGearSkin"; + this.B_CGearSkin.Size = new System.Drawing.Size(87, 23); + this.B_CGearSkin.TabIndex = 24; + this.B_CGearSkin.Text = "C-Gear Skin"; + this.B_CGearSkin.UseVisualStyleBackColor = true; + this.B_CGearSkin.Click += new System.EventHandler(this.B_CGearSkin_Click); + // // dragout // this.dragout.BackColor = System.Drawing.Color.Transparent; @@ -4379,6 +4648,8 @@ public void InitializeComponent() this.GB_CurrentMoves.PerformLayout(); this.Tab_OTMisc.ResumeLayout(false); this.Tab_OTMisc.PerformLayout(); + this.FLP_PKMEditors.ResumeLayout(false); + this.FLP_PKMEditors.PerformLayout(); this.GB_nOT.ResumeLayout(false); this.GB_nOT.PerformLayout(); this.GB_Markings.ResumeLayout(false); @@ -4747,7 +5018,7 @@ public void InitializeComponent() private System.Windows.Forms.ComboBox CB_GameOrigin; private System.Windows.Forms.ToolStripMenuItem Menu_Modify; private System.Windows.Forms.ToolStripMenuItem Menu_ModifyDex; - private System.Windows.Forms.ToolStripMenuItem Menu_ModifyPK6; + private System.Windows.Forms.ToolStripMenuItem Menu_ModifyPKM; private System.Windows.Forms.ContextMenuStrip mnuVSD; private System.Windows.Forms.ToolStripMenuItem mnuView; private System.Windows.Forms.ToolStripMenuItem mnuSet; @@ -4764,8 +5035,8 @@ public void InitializeComponent() private System.Windows.Forms.TextBox TB_Secure1; private System.Windows.Forms.ToolStripMenuItem Menu_ExportSAV; private System.Windows.Forms.ToolStripMenuItem Menu_Showdown; - private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportPK6; - private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownImportPK6; + private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportPKM; + private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownImportPKM; private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportParty; private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportBattleBox; private System.Windows.Forms.ToolStripMenuItem Menu_CyberGadget; @@ -4808,6 +5079,11 @@ public void InitializeComponent() private System.Windows.Forms.GroupBox GB_SAVtools; private System.Windows.Forms.PictureBox PB_Mark1; private System.Windows.Forms.Button B_Pokeblocks; + private System.Windows.Forms.ToolStripMenuItem Menu_BatchEditor; + private System.Windows.Forms.Button BTN_Medals; + private System.Windows.Forms.FlowLayoutPanel FLP_PKMEditors; + private System.Windows.Forms.Button B_LinkInfo; + private System.Windows.Forms.Button B_CGearSkin; } } diff --git a/PKX/f1-Main.cs b/MainWindow/Main.cs similarity index 66% rename from PKX/f1-Main.cs rename to MainWindow/Main.cs index 0541e7909..cdd1fdf45 100644 --- a/PKX/f1-Main.cs +++ b/MainWindow/Main.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Deployment.Application; using System.Diagnostics; using System.Drawing; using System.IO; @@ -17,11 +18,13 @@ public Main() { #region Initialize Form new Thread(() => new SplashScreen().ShowDialog()).Start(); - pkm_from = SAV.BlankPKM.EncryptedPartyData; + slotPkmSource = SAV.BlankPKM.EncryptedPartyData; InitializeComponent(); CB_ExtraBytes.SelectedIndex = 0; SaveFile.SetUpdateDex = Menu_ModifyDex.Checked; - SaveFile.SetUpdatePKM = Menu_ModifyPK6.Checked; + SaveFile.SetUpdatePKM = Menu_ModifyPKM.Checked; + getFieldsfromPKM = populateFieldsPK6; + getPKMfromFields = preparePK6; // Set up form properties and arrays. SlotPictureBoxes = new[] { @@ -84,13 +87,15 @@ public Main() // Box to Tabs D&D dragout.AllowDrop = true; + FLP_SAVtools.Scroll += Util.PanelScroll; + // Load WC6 folder to legality refreshWC6DB(); #endregion #region Localize & Populate Fields string[] args = Environment.GetCommandLineArgs(); - string filename = args.Length > 0 ? Path.GetFileNameWithoutExtension(args[0]).ToLower() : ""; + string filename = args.Length > 0 ? Path.GetFileNameWithoutExtension(args[0])?.ToLower() : ""; HaX = filename.IndexOf("hax", StringComparison.Ordinal) >= 0; // Try and detect the language @@ -108,11 +113,13 @@ public Main() foreach (string arg in args.Skip(1).Where(a => a.Length > 4)) openQuick(arg, force: true); } - else // Detect save + if (!SAV.Exportable) // No SAV loaded from exe args { - string path = detectSaveFile(); - if (path != null) + string path = SaveUtil.detectSaveFile(); + if (path != null && File.Exists(path)) openQuick(path, force: true); + else + GB_SAVtools.Visible = false; } // Splash Screen closes on its own. @@ -126,23 +133,22 @@ public Main() #region Important Variables public static PKM pkm = new PK6(); // Tab Pokemon Data Storage - public static SaveFile SAV = new SAV6 { Game = (int)GameVersion.AS, OT = "PKHeX", TID = 12345, SID = 54321, Language = 2, Country = 49, SubRegion = 7 }; // Save File + public static SaveFile SAV = new SAV6 { Game = (int)GameVersion.AS, OT = "PKHeX", TID = 12345, SID = 54321, Language = 2, Country = 49, SubRegion = 7, ConsoleRegion = 1 }; // Save File public static Color defaultControlWhite, defaultControlText; public static string eggname = ""; - public const string DatabasePath = "db"; - private const string WC6DatabasePath = "wc6"; - private const string BackupPath = "bak"; + public static string curlanguage = "en"; public static string[] gendersymbols = { "♂", "♀", "-" }; public static string[] specieslist, movelist, itemlist, abilitylist, types, natures, forms, memories, genloc, trainingbags, trainingstage, characteristics, - encountertypelist, gamelanguages, balllist, gamelist, pokeblocks = { }; + encountertypelist, gamelanguages, balllist, gamelist, pokeblocks, g3items = { }; + public static string[] metRSEFRLG_00000 = { }; public static string[] metHGSS_00000, metHGSS_02000, metHGSS_03000 = { }; public static string[] metBW2_00000, metBW2_30000, metBW2_40000, metBW2_60000 = { }; public static string[] metXY_00000, metXY_30000, metXY_40000, metXY_60000 = { }; public static string[] wallpapernames, puffs = { }; public static bool unicode; - public static List MoveDataSource, ItemDataSource, SpeciesDataSource, BallDataSource, NatureDataSource, AbilityDataSource, VersionDataSource; + public static List MoveDataSource, ItemDataSource, SpeciesDataSource, BallDataSource, NatureDataSource, AbilityDataSource, VersionDataSource; public static volatile bool formInitialized, fieldsInitialized, fieldsLoaded; private static int colorizedbox = -1; @@ -169,15 +175,35 @@ public Main() private readonly ToolTip Tip1 = new ToolTip(), Tip2 = new ToolTip(), Tip3 = new ToolTip(), NatureTip = new ToolTip(); #endregion + #region Path Variables + + public static string WorkingDirectory => ApplicationDeployment.IsNetworkDeployed ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PKHeX") : Environment.CurrentDirectory; + public static string DatabasePath => Path.Combine(WorkingDirectory, "db"); + private static string WC6DatabasePath => Path.Combine(WorkingDirectory, "wc6"); + private static string BackupPath => Path.Combine(WorkingDirectory, "bak"); + + #endregion + #region //// MAIN MENU FUNCTIONS //// // Main Menu Strip UI Functions private void mainMenuOpen(object sender, EventArgs e) { + string pkx = pkm.Extension; + string ekx = 'e' + pkx.Substring(1, pkx.Length-1); + + string supported = "*.pkm;"; + for (int i = 3; i <= SAV.Generation; i++) + { + supported += $"*.pk{i}"; + if (i != pkm.Format) + supported += ";"; + } + OpenFileDialog ofd = new OpenFileDialog { - Filter = "PKX File|*.pk6;*.pkx" + - "|EKX File|*.ek6;*.ekx" + - "|BIN File|*.bin" + + Filter = $"Decrypted PKM File|{supported}" + + $"|Encrypted PKM File|*.{ekx}" + + "|Binary File|*.bin" + "|All Files|*.*", RestoreDirectory = true, FilterIndex = 4, @@ -186,10 +212,10 @@ private void mainMenuOpen(object sender, EventArgs e) // Reset file dialog path if it no longer exists if (!Directory.Exists(ofd.InitialDirectory)) - ofd.InitialDirectory = Environment.CurrentDirectory; + ofd.InitialDirectory = WorkingDirectory; // Detect main - string path = detectSaveFile(); + string path = SaveUtil.detectSaveFile(); if (path != null) { ofd.InitialDirectory = Path.GetDirectoryName(path); } else if (File.Exists(Path.Combine(ofd.InitialDirectory, "main"))) @@ -204,32 +230,32 @@ private void mainMenuSave(object sender, EventArgs e) { if (!verifiedPKM()) return; PKM pk = preparePKM(); + string pkx = pk.Extension; + string ekx = 'e' + pkx.Substring(1, pkx.Length - 1); SaveFileDialog sfd = new SaveFileDialog { - Filter = "PKX File|*.pk6;*.pkx" + - "|EKX File|*.ek6;*.ekx" + - "|BIN File|*.bin" + + Filter = $"Decrypted PKM File|*.{pkx}" + + $"|Encrypted PKM File|*.{ekx}" + + "|Binary File|*.bin" + "|All Files|*.*", - DefaultExt = "pk6", + DefaultExt = pkx, FileName = Util.CleanFileName(pk.FileName) }; if (sfd.ShowDialog() != DialogResult.OK) return; string path = sfd.FileName; - // Injection Dummy Override - if (path.Contains("pokemon.ekx")) path = Path.Combine(Path.GetDirectoryName(path), "pokemon.ekx"); string ext = Path.GetExtension(path); - if (File.Exists(path) && !path.Contains("pokemon.ekx")) + if (File.Exists(path)) { // File already exists, save a .bak byte[] backupfile = File.ReadAllBytes(path); File.WriteAllBytes(path + ".bak", backupfile); } - if (new[] {".ekx", ".ek6", ".bin"}.Contains(ext)) + if (new[] {".ekx", "."+ekx, ".bin"}.Contains(ext)) File.WriteAllBytes(path, pk.EncryptedPartyData); - else if (new[] { ".pkx", ".pk6" }.Contains(ext)) - File.WriteAllBytes(path, pk.Data); + else if (new[] { "."+pkx }.Contains(ext)) + File.WriteAllBytes(path, pk.DecryptedBoxData); else { Util.Error($"Foreign File Extension: {ext}", "Exporting as encrypted."); @@ -281,7 +307,7 @@ private void mainMenuModifyDex(object sender, EventArgs e) } private void mainMenuModifyPKM(object sender, EventArgs e) { - SaveFile.SetUpdatePKM = Menu_ModifyPK6.Checked; + SaveFile.SetUpdatePKM = Menu_ModifyPKM.Checked; } private void mainMenuBoxLoad(object sender, EventArgs e) { @@ -336,6 +362,11 @@ private void mainMenuBoxDump(object sender, EventArgs e) dumpBoxesToDB(path, dumptoboxes); } + private void manMenuBatchEditor(object sender, EventArgs e) + { + new BatchEditor().ShowDialog(); + setPKXBoxes(); // refresh + } // Misc Options private void clickShowdownImportPK6(object sender, EventArgs e) { @@ -376,8 +407,8 @@ private void clickShowdownImportPK6(object sender, EventArgs e) CB_Form.SelectedIndex = form; // Set Ability - byte[] abilities = PKX.getAbilities(Set.Species, form); - int ability = Array.IndexOf(abilities, (byte)Set.Ability); + int[] abilities = SAV.Personal.getAbilities(Set.Species, form); + int ability = Array.IndexOf(abilities, Set.Ability); if (ability < 0) ability = 0; CB_Ability.SelectedIndex = ability; ComboBox[] m = { CB_Move1, CB_Move2, CB_Move3, CB_Move4, }; @@ -452,9 +483,9 @@ private void clickOpenTempFolder(object sender, EventArgs e) { string path = Util.GetTempFolder(); if (Directory.Exists(Path.Combine(path, "root"))) - Process.Start("explorer.exe", @Path.Combine(path, "root")); + Process.Start("explorer.exe", Path.Combine(path, "root")); else if (Directory.Exists(path)) - Process.Start("explorer.exe", @path); + Process.Start("explorer.exe", path); else Util.Alert("Can't find the temporary file.", "Make sure the Cyber Gadget software is paused."); } @@ -462,24 +493,24 @@ private void clickOpenCacheFolder(object sender, EventArgs e) { string path = Util.GetCacheFolder(); if (Directory.Exists(path)) - Process.Start("explorer.exe", @path); + Process.Start("explorer.exe", path); else Util.Alert("Can't find the cache folder."); } private void clickOpenSDFFolder(object sender, EventArgs e) { - string path; - if (Util.get3DSLocation() != null && Directory.Exists(path = Util.GetSDFLocation())) - Process.Start("explorer.exe", @path); + string path = Path.GetPathRoot(Util.get3DSLocation()); + if (path != null && Directory.Exists(path = Path.Combine(path, "filer", "UserSaveData"))) + Process.Start("explorer.exe", path); else Util.Alert("Can't find the SaveDataFiler folder."); } private void clickOpenSDBFolder(object sender, EventArgs e) { - string path3DS = Util.get3DSLocation(); + string path3DS = Path.GetPathRoot(Util.get3DSLocation()); string path; - if (path3DS != null && Directory.Exists(path = Path.Combine(Path.GetPathRoot(path3DS), "SaveDataBackup"))) - Process.Start("explorer.exe", @path); + if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "SaveDataBackup"))) + Process.Start("explorer.exe", path); else Util.Alert("Can't find the SaveDataBackup folder."); } @@ -677,11 +708,44 @@ private void openSAV(byte[] input, string path) SaveFile sav = SaveUtil.getVariantSAV(input); if (sav == null || sav.Version == GameVersion.Invalid) { Util.Error("Invalid save file loaded. Aborting.", path); return; } + if (sav.Generation <= 3) // Japanese Save files are different. Get isJapanese + { + if (sav.Version == GameVersion.Unknown) + { + // Hacky cheats invalidated the Game Code value. + var drGame = Util.Prompt(MessageBoxButtons.YesNoCancel, + "Unknown Gen3 Game Detected. Select Origins:", + "Yes: Ruby / Sapphire" + Environment.NewLine + + "No: Emerald" + Environment.NewLine + + "Cancel: FireRed / LeafGreen"); + + if (drGame == DialogResult.Yes) + sav = new SAV3(sav.BAK, GameVersion.RS); + else if (drGame == DialogResult.No) + sav = new SAV3(sav.BAK, GameVersion.E); + else + sav = new SAV3(sav.BAK, GameVersion.FRLG); + } + var drJP = Util.Prompt(MessageBoxButtons.YesNoCancel, $"Generation 3 ({sav.Version}) Save File detected. Select Origins:", "Yes: International" + Environment.NewLine + "No: Japanese"); + if (drJP == DialogResult.Cancel) + return; + sav.Japanese = drJP == DialogResult.No; + + if (sav.Version == GameVersion.FRLG) + { + var drFRLG = Util.Prompt(MessageBoxButtons.YesNoCancel, $"{sav.Version} detected. Select version...", "Yes: FireRed" + Environment.NewLine + "No: LeafGreen"); + if (drFRLG == DialogResult.Cancel) + return; + + sav.Personal = drFRLG == DialogResult.Yes ? PersonalTable.FR : PersonalTable.LG; + } + } + PKM pk = preparePKM(); SAV = sav; SAV.FilePath = Path.GetDirectoryName(path); SAV.FileName = Path.GetExtension(path) == ".bak" - ? Path.GetFileName(path).Split(new[] {" ["}, StringSplitOptions.None)[0] + ? Path.GetFileName(path)?.Split(new[] {" ["}, StringSplitOptions.None)[0] : Path.GetFileName(path); L_Save.Text = $"SAV{SAV.Generation}: {Path.GetFileNameWithoutExtension(Util.CleanFileName(SAV.BAKName))}"; // more descriptive @@ -697,6 +761,7 @@ private void openSAV(byte[] input, string path) setPKXBoxes(); // Reload all of the PKX Windows // Hide content if not present in game. + GB_SAVtools.Visible = true; GB_SUBE.Visible = SAV.HasSUBE; PB_Locked.Visible = SAV.HasBattleBox && SAV.BattleBoxLocked; @@ -720,6 +785,8 @@ private void openSAV(byte[] input, string path) B_Pokeblocks.Visible = SAV.HasPokeBlock; B_JPEG.Visible = SAV.HasJPEG; B_OpenEventFlags.Visible = SAV.HasEvents; + B_LinkInfo.Visible = SAV.HasLink; + B_CGearSkin.Visible = SAV.Generation == 5; // Generational Interface byte[] extraBytes = new byte[1]; @@ -727,9 +794,8 @@ private void openSAV(byte[] input, string path) CB_Country.Visible = CB_SubRegion.Visible = CB_3DSReg.Visible = Label_Country.Visible = Label_SubRegion.Visible = Label_3DSRegion.Visible = SAV.Generation >= 6; - CB_Ability.Visible = TB_AbilityNumber.Visible = SAV.Generation >= 6; Label_EncryptionConstant.Visible = BTN_RerollEC.Visible = TB_EC.Visible = SAV.Generation >= 6; - GB_nOT.Visible = GB_RelearnMoves.Visible = BTN_History.Visible = BTN_Ribbons.Visible = SAV.Generation >= 6; + GB_nOT.Visible = GB_RelearnMoves.Visible = BTN_Medals.Visible = BTN_History.Visible = SAV.Generation >= 6; PB_Legal.Visible = PB_WarnMove1.Visible = PB_WarnMove2.Visible = PB_WarnMove3.Visible = PB_WarnMove4.Visible = SAV.Generation >= 6; PB_MarkPentagon.Visible = SAV.Generation == 6; @@ -739,35 +805,47 @@ private void openSAV(byte[] input, string path) CB_Form.Visible = Label_Form.Visible = CHK_AsEgg.Visible = GB_EggConditions.Visible = Label_MetDate.Visible = CAL_MetDate.Visible = PB_Mark5.Visible = PB_Mark6.Visible = SAV.Generation >= 4; - DEV_Ability.Enabled = DEV_Ability.Visible = SAV.Generation != 3 && HaX; + BTN_Ribbons.Visible = SAV.Generation >= 3; + DEV_Ability.Enabled = DEV_Ability.Visible = SAV.Generation > 3 && HaX; TB_AbilityNumber.Visible = SAV.Generation >= 6 && DEV_Ability.Enabled; - CB_Ability.Visible = !DEV_Ability.Enabled; + CB_Ability.Visible = !DEV_Ability.Enabled && SAV.Generation >= 3; + + // Recenter PKM SubEditors + FLP_PKMEditors.Location = new Point((tabMain.TabPages[4].Width - FLP_PKMEditors.Width) / 2, FLP_PKMEditors.Location.Y); switch (SAV.Generation) { case 3: + getFieldsfromPKM = populateFieldsPK3; + getPKMfromFields = preparePK3; extraBytes = PK3.ExtraBytes; break; case 4: - + getFieldsfromPKM = populateFieldsPK4; + getPKMfromFields = preparePK4; extraBytes = PK4.ExtraBytes; break; case 5: + getFieldsfromPKM = populateFieldsPK5; + getPKMfromFields = preparePK5; extraBytes = PK5.ExtraBytes; break; case 6: + getFieldsfromPKM = populateFieldsPK6; + getPKMfromFields = preparePK6; extraBytes = PK6.ExtraBytes; - TB_GameSync.Enabled = (SAV as SAV6).GameSyncID != 0; - TB_GameSync.Text = (SAV as SAV6).GameSyncID.ToString("X16"); - TB_Secure1.Text = (SAV as SAV6).Secure1.ToString("X16"); - TB_Secure2.Text = (SAV as SAV6).Secure2.ToString("X16"); + SAV6 sav6 = (SAV6)SAV; + TB_GameSync.Enabled = sav6.GameSyncID != 0; + TB_GameSync.Text = sav6.GameSyncID.ToString("X16"); + TB_Secure1.Text = sav6.Secure1.ToString("X16"); + TB_Secure2.Text = sav6.Secure2.ToString("X16"); break; } - PKX.Personal = SAV.Personal; - - PKM pk = preparePKM(); + bool init = fieldsInitialized; + fieldsInitialized = false; populateFilteredDataSources(); populateFields(pkm.Format != SAV.Generation ? SAV.BlankPKM : pk); + fieldsInitialized |= init; // SAV Specific Limits TB_OT.MaxLength = SAV.OTLength; @@ -825,6 +903,8 @@ private void changeMainLanguage(object sender, EventArgs e) InitializeStrings(); InitializeLanguage(); Util.TranslateInterface(this, lang_val[CB_MainLanguage.SelectedIndex]); // Translate the UI to language. + // Recenter PKM SubEditors + FLP_PKMEditors.Location = new Point((tabMain.TabPages[4].Width - FLP_PKMEditors.Width)/2, FLP_PKMEditors.Location.Y); populateFields(pk); // put data back in form fieldsInitialized |= alreadyInit; } @@ -833,14 +913,19 @@ private void InitializeStrings() if (CB_MainLanguage.SelectedIndex < 8) curlanguage = lang_val[CB_MainLanguage.SelectedIndex]; + // Past Generation strings + g3items = Util.getStringList("ItemsG3", "en"); + metRSEFRLG_00000 = Util.getStringList("rsefrlg_00000", "en"); + + // Current Generation strings string l = curlanguage; natures = Util.getStringList("natures", l); types = Util.getStringList("types", l); - abilitylist = Util.getStringList("abilities", l); - movelist = Util.getStringList("moves", l); + abilitylist = Util.getAbilitiesList(l); + movelist = Util.getMovesList(l); itemlist = Util.getStringList("items", l); characteristics = Util.getStringList("character", l); - specieslist = Util.getStringList("species", l); + specieslist = Util.getSpeciesList(l); wallpapernames = Util.getStringList("wallpaper", l); encountertypelist = Util.getStringList("encountertype", l); gamelist = Util.getStringList("games", l); @@ -1000,26 +1085,33 @@ private void InitializeLanguage() } private void populateFilteredDataSources() { - ItemDataSource = Util.getCBList(itemlist, (HaX ? Enumerable.Range(0, SAV.MaxItemID) : SAV.HeldItems.Select(i => (int)i)).ToArray()); - CB_HeldItem.DataSource = new BindingSource(ItemDataSource.Where(i => i.Value <= SAV.MaxItemID), null); + string[] items = itemlist; + if (SAV.Generation == 3) + items = g3items; - CB_Ball.DataSource = new BindingSource(BallDataSource.Where(b => b.Value <= SAV.MaxBallID), null); - CB_Species.DataSource = new BindingSource(SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID), null); - DEV_Ability.DataSource = new BindingSource(AbilityDataSource.Where(a => a.Value <= SAV.MaxAbilityID), null); - CB_GameOrigin.DataSource = new BindingSource(VersionDataSource.Where(g => g.Value <= SAV.MaxGameID || SAV.Generation >= 3 && g.Value == 15), null); + ItemDataSource = Util.getCBList(items, (HaX ? Enumerable.Range(0, SAV.MaxItemID) : SAV.HeldItems.Select(i => (int)i)).ToArray()); + CB_HeldItem.DataSource = new BindingSource(ItemDataSource.Where(i => i.Value <= SAV.MaxItemID).ToList(), null); + + CB_Ball.DataSource = new BindingSource(BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null); + CB_Species.DataSource = new BindingSource(SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); + DEV_Ability.DataSource = new BindingSource(AbilityDataSource.Where(a => a.Value <= SAV.MaxAbilityID).ToList(), null); + CB_GameOrigin.DataSource = new BindingSource(VersionDataSource.Where(g => g.Value <= SAV.MaxGameID || SAV.Generation >= 3 && g.Value == 15).ToList(), null); // Set the Move ComboBoxes too.. + var moves = MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4, CB_RelearnMove1, CB_RelearnMove2, CB_RelearnMove3, CB_RelearnMove4 }) { cb.DisplayMember = "Text"; cb.ValueMember = "Value"; - cb.DataSource = new BindingSource(MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID), null); + cb.DataSource = new BindingSource(moves, null); } } + private Action getFieldsfromPKM; + private Func getPKMfromFields; public void populateFields(PKM pk, bool focus = true) { if (pk == null) { Util.Error("Attempted to load a null file."); return; } - if (pk.Format != SAV.Generation) + if (pk.Format > SAV.Generation) { Util.Alert("Can't load future generation files."); return; } bool oldInit = fieldsInitialized; @@ -1028,24 +1120,20 @@ public void populateFields(PKM pk, bool focus = true) Tab_Main.Focus(); pkm = pk.Clone(); + if (fieldsInitialized & !pkm.ChecksumValid) Util.Alert("PKX File has an invalid checksum."); - switch (pkm.Format) + + if (pkm.Format != SAV.Generation) // past gen format { - case 3: - populateFieldsPK3(pkm as PK3); - break; - case 4: - populateFieldsPK4(pkm as PK4); - break; - case 5: - populateFieldsPK5(pkm as PK5); - break; - case 6: - populateFieldsPK6(pkm as PK6); - break; + string c; + pkm = PKMConverter.convertToFormat(pkm, SAV.Generation, out c); + if (pk.Format != pkm.Format && focus) // converted + Util.Alert("Converted File."); } + getFieldsfromPKM(); + CB_EncounterType.Visible = Label_EncounterType.Visible = pkm.Gen4; fieldsInitialized = oldInit; updateIVs(null, null); @@ -1072,474 +1160,6 @@ public void populateFields(PKM pk, bool focus = true) dragout.Image = pk.Sprite; updateLegality(); } - private void populateFieldsPK3(PK3 pk3) - { - // Do first - pk3.Stat_Level = PKX.getLevel(pk3.Species, pk3.EXP); - if (pk3.Stat_Level == 100) - pk3.EXP = PKX.getEXP(pk3.Stat_Level, pk3.Species); - - CB_Species.SelectedValue = pk3.Species; - TB_Level.Text = pk3.Stat_Level.ToString(); - TB_EXP.Text = pk3.EXP.ToString(); - - // Load rest - CHK_Fateful.Checked = pk3.FatefulEncounter; - CHK_IsEgg.Checked = pk3.IsEgg; - CHK_Nicknamed.Checked = pk3.IsNicknamed; - Label_OTGender.Text = gendersymbols[pk3.OT_Gender]; - Label_OTGender.ForeColor = pk3.OT_Gender == 1 ? Color.Red : Color.Blue; - TB_PID.Text = pk3.PID.ToString("X8"); - CB_HeldItem.SelectedValue = pk3.HeldItem; - setAbilityList(); - DEV_Ability.SelectedValue = pk3.Ability; - CB_Nature.SelectedValue = pk3.Nature; - TB_TID.Text = pk3.TID.ToString("00000"); - TB_SID.Text = pk3.SID.ToString("00000"); - TB_Nickname.Text = pk3.Nickname; - TB_OT.Text = pk3.OT_Name; - TB_Friendship.Text = pk3.CurrentFriendship.ToString(); - GB_OT.BackgroundImage = null; - CB_Language.SelectedValue = pk3.Language; - CB_GameOrigin.SelectedValue = pk3.Version; - CB_EncounterType.SelectedValue = pk3.Gen4 ? pk3.EncounterType : 0; - CB_Ball.SelectedValue = pk3.Ball; - - CB_MetLocation.SelectedValue = pk3.Met_Location; - - TB_MetLevel.Text = pk3.Met_Level.ToString(); - - // Reset Label and ComboBox visibility, as well as non-data checked status. - Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk3.PKRS_Strain != 0; - Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk3.PKRS_Days != 0; - - // Set SelectedIndexes for PKRS - CB_PKRSStrain.SelectedIndex = pk3.PKRS_Strain; - CHK_Cured.Checked = pk3.PKRS_Strain > 0 && pk3.PKRS_Days == 0; - CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk3.PKRS_Days); // to strip out bad hacked 'rus - - TB_Cool.Text = pk3.CNT_Cool.ToString(); - TB_Beauty.Text = pk3.CNT_Beauty.ToString(); - TB_Cute.Text = pk3.CNT_Cute.ToString(); - TB_Smart.Text = pk3.CNT_Smart.ToString(); - TB_Tough.Text = pk3.CNT_Tough.ToString(); - TB_Sheen.Text = pk3.CNT_Sheen.ToString(); - - TB_HPIV.Text = pk3.IV_HP.ToString(); - TB_ATKIV.Text = pk3.IV_ATK.ToString(); - TB_DEFIV.Text = pk3.IV_DEF.ToString(); - TB_SPEIV.Text = pk3.IV_SPE.ToString(); - TB_SPAIV.Text = pk3.IV_SPA.ToString(); - TB_SPDIV.Text = pk3.IV_SPD.ToString(); - CB_HPType.SelectedValue = pk3.HPType; - - TB_HPEV.Text = pk3.EV_HP.ToString(); - TB_ATKEV.Text = pk3.EV_ATK.ToString(); - TB_DEFEV.Text = pk3.EV_DEF.ToString(); - TB_SPEEV.Text = pk3.EV_SPE.ToString(); - TB_SPAEV.Text = pk3.EV_SPA.ToString(); - TB_SPDEV.Text = pk3.EV_SPD.ToString(); - - CB_Move1.SelectedValue = pk3.Move1; - CB_Move2.SelectedValue = pk3.Move2; - CB_Move3.SelectedValue = pk3.Move3; - CB_Move4.SelectedValue = pk3.Move4; - CB_PPu1.SelectedIndex = pk3.Move1_PPUps; - CB_PPu2.SelectedIndex = pk3.Move2_PPUps; - CB_PPu3.SelectedIndex = pk3.Move3_PPUps; - CB_PPu4.SelectedIndex = pk3.Move4_PPUps; - TB_PP1.Text = pk3.Move1_PP.ToString(); - TB_PP2.Text = pk3.Move2_PP.ToString(); - TB_PP3.Text = pk3.Move3_PP.ToString(); - TB_PP4.Text = pk3.Move4_PP.ToString(); - - // Load Extrabyte Value - TB_ExtraByte.Text = pk3.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); - - updateStats(); - setIsShiny(); - - TB_EXP.Text = pk3.EXP.ToString(); - Label_Gender.Text = gendersymbols[pk3.Gender]; - Label_Gender.ForeColor = pk3.Gender == 2 ? Label_Species.ForeColor : (pk3.Gender == 1 ? Color.Red : Color.Blue); - } - private void populateFieldsPK4(PK4 pk4) - { - // Do first - pk4.Stat_Level = PKX.getLevel(pk4.Species, pk4.EXP); - if (pk4.Stat_Level == 100) - pk4.EXP = PKX.getEXP(pk4.Stat_Level, pk4.Species); - - CB_Species.SelectedValue = pk4.Species; - TB_Level.Text = pk4.Stat_Level.ToString(); - TB_EXP.Text = pk4.EXP.ToString(); - - // Load rest - CHK_Fateful.Checked = pk4.FatefulEncounter; - CHK_IsEgg.Checked = pk4.IsEgg; - CHK_Nicknamed.Checked = pk4.IsNicknamed; - Label_OTGender.Text = gendersymbols[pk4.OT_Gender]; - Label_OTGender.ForeColor = pk4.OT_Gender == 1 ? Color.Red : Color.Blue; - TB_PID.Text = pk4.PID.ToString("X8"); - CB_HeldItem.SelectedValue = pk4.HeldItem; - setAbilityList(); - DEV_Ability.SelectedValue = pk4.Ability; - CB_Nature.SelectedValue = pk4.Nature; - TB_TID.Text = pk4.TID.ToString("00000"); - TB_SID.Text = pk4.SID.ToString("00000"); - TB_Nickname.Text = pk4.Nickname; - TB_OT.Text = pk4.OT_Name; - TB_Friendship.Text = pk4.CurrentFriendship.ToString(); - GB_OT.BackgroundImage = null; - CB_Language.SelectedValue = pk4.Language; - CB_GameOrigin.SelectedValue = pk4.Version; - CB_EncounterType.SelectedValue = pk4.Gen4 ? pk4.EncounterType : 0; - CB_Ball.SelectedValue = pk4.Ball; - - if (pk4.Met_Month == 0) { pk4.Met_Month = 1; } - if (pk4.Met_Day == 0) { pk4.Met_Day = 1; } - try { CAL_MetDate.Value = new DateTime(pk4.Met_Year + 2000, pk4.Met_Month, pk4.Met_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - - if (pk4.Egg_Location != 0) - { - // Was obtained initially as an egg. - CHK_AsEgg.Checked = true; - GB_EggConditions.Enabled = true; - - CB_EggLocation.SelectedValue = pk4.Egg_Location; - try { CAL_EggDate.Value = new DateTime(pk4.Egg_Year + 2000, pk4.Egg_Month, pk4.Egg_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - } - else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } - - CB_MetLocation.SelectedValue = pk4.Met_Location; - - TB_MetLevel.Text = pk4.Met_Level.ToString(); - - // Reset Label and ComboBox visibility, as well as non-data checked status. - Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk4.PKRS_Strain != 0; - Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk4.PKRS_Days != 0; - - // Set SelectedIndexes for PKRS - CB_PKRSStrain.SelectedIndex = pk4.PKRS_Strain; - CHK_Cured.Checked = pk4.PKRS_Strain > 0 && pk4.PKRS_Days == 0; - CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk4.PKRS_Days); // to strip out bad hacked 'rus - - TB_Cool.Text = pk4.CNT_Cool.ToString(); - TB_Beauty.Text = pk4.CNT_Beauty.ToString(); - TB_Cute.Text = pk4.CNT_Cute.ToString(); - TB_Smart.Text = pk4.CNT_Smart.ToString(); - TB_Tough.Text = pk4.CNT_Tough.ToString(); - TB_Sheen.Text = pk4.CNT_Sheen.ToString(); - - TB_HPIV.Text = pk4.IV_HP.ToString(); - TB_ATKIV.Text = pk4.IV_ATK.ToString(); - TB_DEFIV.Text = pk4.IV_DEF.ToString(); - TB_SPEIV.Text = pk4.IV_SPE.ToString(); - TB_SPAIV.Text = pk4.IV_SPA.ToString(); - TB_SPDIV.Text = pk4.IV_SPD.ToString(); - CB_HPType.SelectedValue = pk4.HPType; - - TB_HPEV.Text = pk4.EV_HP.ToString(); - TB_ATKEV.Text = pk4.EV_ATK.ToString(); - TB_DEFEV.Text = pk4.EV_DEF.ToString(); - TB_SPEEV.Text = pk4.EV_SPE.ToString(); - TB_SPAEV.Text = pk4.EV_SPA.ToString(); - TB_SPDEV.Text = pk4.EV_SPD.ToString(); - - CB_Move1.SelectedValue = pk4.Move1; - CB_Move2.SelectedValue = pk4.Move2; - CB_Move3.SelectedValue = pk4.Move3; - CB_Move4.SelectedValue = pk4.Move4; - CB_PPu1.SelectedIndex = pk4.Move1_PPUps; - CB_PPu2.SelectedIndex = pk4.Move2_PPUps; - CB_PPu3.SelectedIndex = pk4.Move3_PPUps; - CB_PPu4.SelectedIndex = pk4.Move4_PPUps; - TB_PP1.Text = pk4.Move1_PP.ToString(); - TB_PP2.Text = pk4.Move2_PP.ToString(); - TB_PP3.Text = pk4.Move3_PP.ToString(); - TB_PP4.Text = pk4.Move4_PP.ToString(); - - // Set Form if count is enough, else cap. - CB_Form.SelectedIndex = CB_Form.Items.Count > pk4.AltForm ? pk4.AltForm : CB_Form.Items.Count - 1; - - // Load Extrabyte Value - TB_ExtraByte.Text = pk4.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); - - updateStats(); - setIsShiny(); - - TB_EXP.Text = pk4.EXP.ToString(); - Label_Gender.Text = gendersymbols[pk4.Gender]; - Label_Gender.ForeColor = pk4.Gender == 2 ? Label_Species.ForeColor : (pk4.Gender == 1 ? Color.Red : Color.Blue); - - if (HaX) - DEV_Ability.SelectedValue = pk4.Ability; - } - private void populateFieldsPK5(PK5 pk5) - { - // Do first - pk5.Stat_Level = PKX.getLevel(pk5.Species, pk5.EXP); - if (pk5.Stat_Level == 100) - pk5.EXP = PKX.getEXP(pk5.Stat_Level, pk5.Species); - - CB_Species.SelectedValue = pk5.Species; - TB_Level.Text = pk5.Stat_Level.ToString(); - TB_EXP.Text = pk5.EXP.ToString(); - - // Load rest - CHK_Fateful.Checked = pk5.FatefulEncounter; - CHK_IsEgg.Checked = pk5.IsEgg; - CHK_Nicknamed.Checked = pk5.IsNicknamed; - Label_OTGender.Text = gendersymbols[pk5.OT_Gender]; - Label_OTGender.ForeColor = pk5.OT_Gender == 1 ? Color.Red : Color.Blue; - TB_PID.Text = pk5.PID.ToString("X8"); - CB_HeldItem.SelectedValue = pk5.HeldItem; - setAbilityList(); - DEV_Ability.SelectedValue = pk5.Ability; - CB_Nature.SelectedValue = pk5.Nature; - TB_TID.Text = pk5.TID.ToString("00000"); - TB_SID.Text = pk5.SID.ToString("00000"); - TB_Nickname.Text = pk5.Nickname; - TB_OT.Text = pk5.OT_Name; - TB_Friendship.Text = pk5.CurrentFriendship.ToString(); - if (pk5.CurrentHandler == 1) // HT - { - GB_nOT.BackgroundImage = mixedHighlight; - GB_OT.BackgroundImage = null; - } - else // = 0 - { - GB_OT.BackgroundImage = mixedHighlight; - GB_nOT.BackgroundImage = null; - } - CB_Language.SelectedValue = pk5.Language; - CB_GameOrigin.SelectedValue = pk5.Version; - CB_EncounterType.SelectedValue = pk5.Gen4 ? pk5.EncounterType : 0; - CB_Ball.SelectedValue = pk5.Ball; - - if (pk5.Met_Month == 0) { pk5.Met_Month = 1; } - if (pk5.Met_Day == 0) { pk5.Met_Day = 1; } - try { CAL_MetDate.Value = new DateTime(pk5.Met_Year + 2000, pk5.Met_Month, pk5.Met_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - - if (pk5.Egg_Location != 0) - { - // Was obtained initially as an egg. - CHK_AsEgg.Checked = true; - GB_EggConditions.Enabled = true; - - CB_EggLocation.SelectedValue = pk5.Egg_Location; - try { CAL_EggDate.Value = new DateTime(pk5.Egg_Year + 2000, pk5.Egg_Month, pk5.Egg_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - } - else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } - - CB_MetLocation.SelectedValue = pk5.Met_Location; - - TB_MetLevel.Text = pk5.Met_Level.ToString(); - - // Reset Label and ComboBox visibility, as well as non-data checked status. - Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk5.PKRS_Strain != 0; - Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk5.PKRS_Days != 0; - - // Set SelectedIndexes for PKRS - CB_PKRSStrain.SelectedIndex = pk5.PKRS_Strain; - CHK_Cured.Checked = pk5.PKRS_Strain > 0 && pk5.PKRS_Days == 0; - CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk5.PKRS_Days); // to strip out bad hacked 'rus - - TB_Cool.Text = pk5.CNT_Cool.ToString(); - TB_Beauty.Text = pk5.CNT_Beauty.ToString(); - TB_Cute.Text = pk5.CNT_Cute.ToString(); - TB_Smart.Text = pk5.CNT_Smart.ToString(); - TB_Tough.Text = pk5.CNT_Tough.ToString(); - TB_Sheen.Text = pk5.CNT_Sheen.ToString(); - - TB_HPIV.Text = pk5.IV_HP.ToString(); - TB_ATKIV.Text = pk5.IV_ATK.ToString(); - TB_DEFIV.Text = pk5.IV_DEF.ToString(); - TB_SPEIV.Text = pk5.IV_SPE.ToString(); - TB_SPAIV.Text = pk5.IV_SPA.ToString(); - TB_SPDIV.Text = pk5.IV_SPD.ToString(); - CB_HPType.SelectedValue = pk5.HPType; - - TB_HPEV.Text = pk5.EV_HP.ToString(); - TB_ATKEV.Text = pk5.EV_ATK.ToString(); - TB_DEFEV.Text = pk5.EV_DEF.ToString(); - TB_SPEEV.Text = pk5.EV_SPE.ToString(); - TB_SPAEV.Text = pk5.EV_SPA.ToString(); - TB_SPDEV.Text = pk5.EV_SPD.ToString(); - - CB_Move1.SelectedValue = pk5.Move1; - CB_Move2.SelectedValue = pk5.Move2; - CB_Move3.SelectedValue = pk5.Move3; - CB_Move4.SelectedValue = pk5.Move4; - CB_PPu1.SelectedIndex = pk5.Move1_PPUps; - CB_PPu2.SelectedIndex = pk5.Move2_PPUps; - CB_PPu3.SelectedIndex = pk5.Move3_PPUps; - CB_PPu4.SelectedIndex = pk5.Move4_PPUps; - TB_PP1.Text = pk5.Move1_PP.ToString(); - TB_PP2.Text = pk5.Move2_PP.ToString(); - TB_PP3.Text = pk5.Move3_PP.ToString(); - TB_PP4.Text = pk5.Move4_PP.ToString(); - - // Set Form if count is enough, else cap. - CB_Form.SelectedIndex = CB_Form.Items.Count > pk5.AltForm ? pk5.AltForm : CB_Form.Items.Count - 1; - - // Load Extrabyte Value - TB_ExtraByte.Text = pk5.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); - - updateStats(); - setIsShiny(); - - TB_EXP.Text = pk5.EXP.ToString(); - Label_Gender.Text = gendersymbols[pk5.Gender]; - Label_Gender.ForeColor = pk5.Gender == 2 ? Label_Species.ForeColor : (pk5.Gender == 1 ? Color.Red : Color.Blue); - - if (HaX) - DEV_Ability.SelectedValue = pk5.Ability; - } - private void populateFieldsPK6(PK6 pk6) - { - // Do first - pk6.Stat_Level = PKX.getLevel(pk6.Species, pk6.EXP); - if (pk6.Stat_Level == 100) - pk6.EXP = PKX.getEXP(pk6.Stat_Level, pk6.Species); - - CB_Species.SelectedValue = pk6.Species; - TB_Level.Text = pk6.Stat_Level.ToString(); - TB_EXP.Text = pk6.EXP.ToString(); - - // Load rest - TB_EC.Text = pk6.EncryptionConstant.ToString("X8"); - CHK_Fateful.Checked = pk6.FatefulEncounter; - CHK_IsEgg.Checked = pk6.IsEgg; - CHK_Nicknamed.Checked = pk6.IsNicknamed; - Label_OTGender.Text = gendersymbols[pk6.OT_Gender]; - Label_OTGender.ForeColor = pk6.OT_Gender == 1 ? Color.Red : Color.Blue; - TB_PID.Text = pk6.PID.ToString("X8"); - CB_HeldItem.SelectedValue = pk6.HeldItem; - setAbilityList(); - TB_AbilityNumber.Text = pk6.AbilityNumber.ToString(); - CB_Ability.SelectedIndex = pk6.AbilityNumber < 6 ? pk6.AbilityNumber >> 1 : 0; // with some simple error handling - CB_Nature.SelectedValue = pk6.Nature; - TB_TID.Text = pk6.TID.ToString("00000"); - TB_SID.Text = pk6.SID.ToString("00000"); - TB_Nickname.Text = pk6.Nickname; - TB_OT.Text = pk6.OT_Name; - TB_OTt2.Text = pk6.HT_Name; - TB_Friendship.Text = pk6.CurrentFriendship.ToString(); - if (pk6.CurrentHandler == 1) // HT - { - GB_nOT.BackgroundImage = mixedHighlight; - GB_OT.BackgroundImage = null; - } - else // = 0 - { - GB_OT.BackgroundImage = mixedHighlight; - GB_nOT.BackgroundImage = null; - } - CB_Language.SelectedValue = pk6.Language; - CB_Country.SelectedValue = pk6.Country; - CB_SubRegion.SelectedValue = pk6.Region; - CB_3DSReg.SelectedValue = pk6.ConsoleRegion; - CB_GameOrigin.SelectedValue = pk6.Version; - CB_EncounterType.SelectedValue = pk6.Gen4 ? pk6.EncounterType : 0; - CB_Ball.SelectedValue = pk6.Ball; - - if (pk6.Met_Month == 0) { pk6.Met_Month = 1; } - if (pk6.Met_Day == 0) { pk6.Met_Day = 1; } - try { CAL_MetDate.Value = new DateTime(pk6.Met_Year + 2000, pk6.Met_Month, pk6.Met_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - - if (pk6.Egg_Location != 0) - { - // Was obtained initially as an egg. - CHK_AsEgg.Checked = true; - GB_EggConditions.Enabled = true; - - CB_EggLocation.SelectedValue = pk6.Egg_Location; - try { CAL_EggDate.Value = new DateTime(pk6.Egg_Year + 2000, pk6.Egg_Month, pk6.Egg_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - } - else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } - - CB_MetLocation.SelectedValue = pk6.Met_Location; - - // Set CT Gender to None if no CT, else set to gender symbol. - Label_CTGender.Text = pk6.HT_Name == "" ? "" : gendersymbols[pk6.HT_Gender % 2]; - Label_CTGender.ForeColor = pk6.HT_Gender == 1 ? Color.Red : Color.Blue; - - TB_MetLevel.Text = pk6.Met_Level.ToString(); - - // Reset Label and ComboBox visibility, as well as non-data checked status. - Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk6.PKRS_Strain != 0; - Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk6.PKRS_Days != 0; - - // Set SelectedIndexes for PKRS - CB_PKRSStrain.SelectedIndex = pk6.PKRS_Strain; - CHK_Cured.Checked = pk6.PKRS_Strain > 0 && pk6.PKRS_Days == 0; - CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk6.PKRS_Days); // to strip out bad hacked 'rus - - TB_Cool.Text = pk6.CNT_Cool.ToString(); - TB_Beauty.Text = pk6.CNT_Beauty.ToString(); - TB_Cute.Text = pk6.CNT_Cute.ToString(); - TB_Smart.Text = pk6.CNT_Smart.ToString(); - TB_Tough.Text = pk6.CNT_Tough.ToString(); - TB_Sheen.Text = pk6.CNT_Sheen.ToString(); - - TB_HPIV.Text = pk6.IV_HP.ToString(); - TB_ATKIV.Text = pk6.IV_ATK.ToString(); - TB_DEFIV.Text = pk6.IV_DEF.ToString(); - TB_SPEIV.Text = pk6.IV_SPE.ToString(); - TB_SPAIV.Text = pk6.IV_SPA.ToString(); - TB_SPDIV.Text = pk6.IV_SPD.ToString(); - CB_HPType.SelectedValue = pk6.HPType; - - TB_HPEV.Text = pk6.EV_HP.ToString(); - TB_ATKEV.Text = pk6.EV_ATK.ToString(); - TB_DEFEV.Text = pk6.EV_DEF.ToString(); - TB_SPEEV.Text = pk6.EV_SPE.ToString(); - TB_SPAEV.Text = pk6.EV_SPA.ToString(); - TB_SPDEV.Text = pk6.EV_SPD.ToString(); - - CB_Move1.SelectedValue = pk6.Move1; - CB_Move2.SelectedValue = pk6.Move2; - CB_Move3.SelectedValue = pk6.Move3; - CB_Move4.SelectedValue = pk6.Move4; - CB_RelearnMove1.SelectedValue = pk6.RelearnMove1; - CB_RelearnMove2.SelectedValue = pk6.RelearnMove2; - CB_RelearnMove3.SelectedValue = pk6.RelearnMove3; - CB_RelearnMove4.SelectedValue = pk6.RelearnMove4; - CB_PPu1.SelectedIndex = pk6.Move1_PPUps; - CB_PPu2.SelectedIndex = pk6.Move2_PPUps; - CB_PPu3.SelectedIndex = pk6.Move3_PPUps; - CB_PPu4.SelectedIndex = pk6.Move4_PPUps; - TB_PP1.Text = pk6.Move1_PP.ToString(); - TB_PP2.Text = pk6.Move2_PP.ToString(); - TB_PP3.Text = pk6.Move3_PP.ToString(); - TB_PP4.Text = pk6.Move4_PP.ToString(); - - // Set Form if count is enough, else cap. - CB_Form.SelectedIndex = CB_Form.Items.Count > pk6.AltForm ? pk6.AltForm : CB_Form.Items.Count - 1; - - // Load Extrabyte Value - TB_ExtraByte.Text = pk6.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); - - updateStats(); - setIsShiny(); - - TB_EXP.Text = pk6.EXP.ToString(); - Label_Gender.Text = gendersymbols[pk6.Gender]; - Label_Gender.ForeColor = pk6.Gender == 2 ? Label_Species.ForeColor : (pk6.Gender == 1 ? Color.Red : Color.Blue); - - // Highlight the Current Handler - clickGT(pk6.CurrentHandler == 1 ? GB_nOT : GB_OT, null); - - if (HaX) - DEV_Ability.SelectedValue = pk6.Ability; - } // General Use Functions shared by other Forms // internal static void setCountrySubRegion(ComboBox CB, string type) @@ -1556,14 +1176,14 @@ internal static void setCountrySubRegion(ComboBox CB, string type) } private void setForms() { - if (SAV.Generation < 4) + int species = Util.getIndex(CB_Species); + if (SAV.Generation < 4 && species != 201) { Label_Form.Visible = CB_Form.Visible = CB_Form.Enabled = false; return; } - int species = Util.getIndex(CB_Species); - bool hasForms = SAV.Personal[species].HasFormes || new[] { 664, 665, 414 }.Contains(species); + bool hasForms = SAV.Personal[species].HasFormes || new[] { 201, 664, 665, 414 }.Contains(species); CB_Form.Enabled = CB_Form.Visible = Label_Form.Visible = hasForms; if (!hasForms) @@ -1581,24 +1201,27 @@ private void setAbilityList() if (SAV.Generation > 3) // has forms formnum = CB_Form.SelectedIndex; - byte[] abils = SAV.Personal[SAV.Personal[species].FormeIndex(species, formnum)].Abilities; + int[] abils = SAV.Personal.getAbilities(species, formnum); + string[] abilIdentifier = {" (1)", " (2)", " (H)"}; + List ability_list = abils.Where(a => a != 0).Select((t, i) => abilitylist[t] + abilIdentifier[i]).ToList(); + if (!ability_list.Any()) + ability_list.Add(abilitylist[0] + abilIdentifier[0]); - List ability_list = new List - { - abilitylist[abils[0]] + " (1)", - abilitylist[abils[1]] + " (2)", - }; - if (SAV.Generation >= 5) // hidden ability - ability_list.Add(abilitylist[abils[1]] + " (H)"); - - int curAbil = CB_Ability.SelectedIndex; + int abil = CB_Ability.SelectedIndex; CB_Ability.DataSource = ability_list; - CB_Ability.SelectedIndex = curAbil; + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; } // PKX Data Calculation Functions // - private void setIsShiny() + private void setIsShiny(object sender) { - bool isShiny = PKX.getIsShiny(Util.getHEXval(TB_PID.Text), Util.ToUInt32(TB_TID.Text), Util.ToUInt32(TB_SID.Text)); + if (sender == TB_PID) + pkm.PID = Util.getHEXval(TB_PID.Text); + else if (sender == TB_TID) + pkm.TID = (int)Util.ToUInt32(TB_TID.Text); + else if (sender == TB_SID) + pkm.SID = (int)Util.ToUInt32(TB_SID.Text); + + bool isShiny = pkm.IsShiny; // Set the Controls BTN_Shinytize.Visible = BTN_Shinytize.Enabled = !isShiny; @@ -1662,12 +1285,12 @@ private void clickFriendship(object sender, EventArgs e) if (ModifierKeys == Keys.Control) // prompt to reset TB_Friendship.Text = pkm.CurrentFriendship.ToString(); else - TB_Friendship.Text = TB_Friendship.Text == "255" ? PKX.getBaseFriendship(pkm.Species).ToString() : "255"; + TB_Friendship.Text = TB_Friendship.Text == "255" ? SAV.Personal[pkm.Species].BaseFriendship.ToString() : "255"; } private void clickGender(object sender, EventArgs e) { // Get Gender Threshold - int gt = PKX.Personal[Util.getIndex(CB_Species)].Gender; + int gt = SAV.Personal[Util.getIndex(CB_Species)].Gender; if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless return; @@ -1675,12 +1298,21 @@ private void clickGender(object sender, EventArgs e) if (gt >= 255) return; // If not a single gender(less) species: (should be <254 but whatever, 255 never happens) - pkm.Gender = PKX.getGender(Label_Gender.Text) ^ 1; + int newGender = PKX.getGender(Label_Gender.Text) ^ 1; + if (SAV.Generation <= 4) + { + pkm.Species = Util.getIndex(CB_Species); + pkm.Version = Util.getIndex(CB_GameOrigin); + pkm.Nature = Util.getIndex(CB_Nature); + pkm.AltForm = CB_Form.SelectedIndex; + + pkm.setPIDGender(newGender); + TB_PID.Text = pkm.PID.ToString("X8"); + } + pkm.Gender = newGender; Label_Gender.Text = gendersymbols[pkm.Gender]; Label_Gender.ForeColor = pkm.Gender == 2 ? Label_Species.ForeColor : (pkm.Gender == 1 ? Color.Red : Color.Blue); - if (SAV.Generation < 6) - updateRandomPID(null, null); if (PKX.getGender(CB_Form.Text) < 2) // Gendered Forms CB_Form.SelectedIndex = PKX.getGender(Label_Gender.Text); @@ -1724,16 +1356,16 @@ private void clickStatLabel(object sender, MouseEventArgs e) private void clickIV(object sender, EventArgs e) { if (ModifierKeys == Keys.Control) - (sender as MaskedTextBox).Text = 31.ToString(); + ((MaskedTextBox) sender).Text = 31.ToString(); else if (ModifierKeys == Keys.Alt) - (sender as MaskedTextBox).Text = 0.ToString(); + ((MaskedTextBox) sender).Text = 0.ToString(); } private void clickEV(object sender, EventArgs e) { if (ModifierKeys == Keys.Control) // EV - (sender as MaskedTextBox).Text = Math.Min(Math.Max(510 - Util.ToInt32(TB_EVTotal.Text) + Util.ToInt32((sender as MaskedTextBox).Text), 0), 252).ToString(); + ((MaskedTextBox) sender).Text = Math.Min(Math.Max(510 - Util.ToInt32(TB_EVTotal.Text) + Util.ToInt32((sender as MaskedTextBox).Text), 0), 252).ToString(); else if (ModifierKeys == Keys.Alt) - (sender as MaskedTextBox).Text = 0.ToString(); + ((MaskedTextBox) sender).Text = 0.ToString(); } private void clickOT(object sender, EventArgs e) { @@ -1838,6 +1470,8 @@ private void updateEXPLevel(object sender, EventArgs e) TB_EXP.Text = PKX.getEXP(Level, Util.getIndex(CB_Species)).ToString(); } changingFields = false; + if (fieldsLoaded) + pkm.EXP = Util.ToUInt32(TB_EXP.Text); updateStats(); updateLegality(); } @@ -1867,8 +1501,8 @@ private void updateHPType(object sender, EventArgs e) private void updateIVs(object sender, EventArgs e) { if (changingFields || !fieldsInitialized) return; - if (sender != null && Util.ToInt32((sender as MaskedTextBox).Text) > 31) - (sender as MaskedTextBox).Text = "31"; + if (sender != null && Util.ToInt32(((MaskedTextBox) sender).Text) > 31) + ((MaskedTextBox) sender).Text = "31"; changingFields = true; @@ -1899,19 +1533,22 @@ private void updateIVs(object sender, EventArgs e) } private void updateEVs(object sender, EventArgs e) { - if (sender != null) - if (Util.ToInt32((sender as MaskedTextBox).Text) > SAV.MaxEV) - (sender as MaskedTextBox).Text = SAV.MaxEV.ToString(); + if (sender is MaskedTextBox) + { + MaskedTextBox m = (MaskedTextBox)sender; + if (Util.ToInt32(m.Text) > SAV.MaxEV) + { m.Text = SAV.MaxEV.ToString(); return; } // recursive on text set + } changingFields = true; - int EV_HP = Util.ToInt32(TB_HPEV.Text); - int EV_ATK = Util.ToInt32(TB_ATKEV.Text); - int EV_DEF = Util.ToInt32(TB_DEFEV.Text); - int EV_SPA = Util.ToInt32(TB_SPAEV.Text); - int EV_SPD = Util.ToInt32(TB_SPDEV.Text); - int EV_SPE = Util.ToInt32(TB_SPEEV.Text); + if (sender == TB_HPEV) pkm.EV_HP = Util.ToInt32(TB_HPEV.Text); + else if (sender == TB_ATKEV) pkm.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + else if (sender == TB_DEFEV) pkm.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + else if (sender == TB_SPEEV) pkm.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + else if (sender == TB_SPAEV) pkm.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + else if (sender == TB_SPDEV) pkm.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - int evtotal = EV_HP + EV_ATK + EV_DEF + EV_SPA + EV_SPD + EV_SPE; + int evtotal = pkm.EVs.Sum(); if (evtotal > 510) // Background turns Red TB_EVTotal.BackColor = Color.Red; @@ -1975,27 +1612,29 @@ private void updateRandomEVs(object sender, EventArgs e) } private void updateRandomPID(object sender, EventArgs e) { - int origin = Util.getIndex(CB_GameOrigin); - uint PID = PKX.getRandomPID(Util.getIndex(CB_Species), PKX.getGender(Label_Gender.Text), origin, Util.getIndex(CB_Nature), CB_Form.SelectedIndex); - TB_PID.Text = PID.ToString("X8"); + if (fieldsLoaded) + { + pkm.Version = Util.getIndex(CB_GameOrigin); + pkm.PID = Util.getHEXval(TB_PID.Text); + pkm.Species = Util.getIndex(CB_Species); + pkm.Nature = Util.getIndex(CB_Nature); + pkm.AltForm = CB_Form.SelectedIndex; + } + if (sender == Label_Gender) + pkm.setPIDGender(pkm.Gender); + else if (sender == CB_Nature && pkm.Nature != Util.getIndex(CB_Nature)) + pkm.setPIDNature(Util.getIndex(CB_Nature)); + else if (sender == BTN_RerollPID) + pkm.setPIDGender(pkm.Gender); + TB_PID.Text = pkm.PID.ToString("X8"); getQuickFiller(dragout); - if (origin >= 24) - return; - - // Before Gen6, EC and PID are related - // Ensure we don't have an illegal newshiny PID. - uint SID = Util.ToUInt32(TB_TID.Text); - uint TID = Util.ToUInt32(TB_TID.Text); - uint XOR = TID ^ SID ^ PID >> 16 ^ PID & 0xFFFF; - if (XOR >> 3 == 1) // Illegal - updateRandomPID(sender, e); // Get a new PID - - TB_EC.Text = PID.ToString("X8"); + if (pkm.GenNumber < 6 && TB_EC.Visible) + TB_EC.Text = TB_PID.Text; } private void updateRandomEC(object sender, EventArgs e) { - int origin = Util.getIndex(CB_GameOrigin); - if (origin < 24) + pkm.Version = Util.getIndex(CB_GameOrigin); + if (pkm.GenNumber < 6) { TB_EC.Text = TB_PID.Text; Util.Alert("EC should match PID."); @@ -2036,17 +1675,24 @@ private void updateHackedStatText(object sender, EventArgs e) } private void update255_MTB(object sender, EventArgs e) { - if (Util.ToInt32((sender as MaskedTextBox).Text) > byte.MaxValue) - (sender as MaskedTextBox).Text = "255"; + if (Util.ToInt32(((MaskedTextBox) sender).Text) > byte.MaxValue) + ((MaskedTextBox) sender).Text = "255"; } private void updateForm(object sender, EventArgs e) { + if (CB_Form == sender && fieldsLoaded) + pkm.AltForm = CB_Form.SelectedIndex; updateStats(); // Repopulate Abilities if Species Form has different abilities setAbilityList(); // Gender Forms - if (PKX.getGender(CB_Form.Text) < 2 && Util.getIndex(CB_Species) != 201) // don't do this for Unown + if (Util.getIndex(CB_Species) == 201) + { + if (fieldsLoaded && SAV.Generation == 3) + updateRandomPID(sender, e); // Fix AltForm + } + else if (PKX.getGender(CB_Form.Text) < 2) Label_Gender.Text = CB_Form.Text; if (changingFields) @@ -2060,16 +1706,16 @@ private void updateHaXForm(object sender, EventArgs e) if (changingFields) return; changingFields = true; - int form = Util.ToInt32(MT_Form.Text); + int form = pkm.AltForm = Util.ToInt32(MT_Form.Text); CB_Form.SelectedIndex = CB_Form.Items.Count > form ? form : -1; changingFields = false; } private void updatePP(object sender, EventArgs e) { - TB_PP1.Text = PKX.getMovePP(Util.getIndex(CB_Move1), CB_PPu1.SelectedIndex).ToString(); - TB_PP2.Text = PKX.getMovePP(Util.getIndex(CB_Move2), CB_PPu2.SelectedIndex).ToString(); - TB_PP3.Text = PKX.getMovePP(Util.getIndex(CB_Move3), CB_PPu3.SelectedIndex).ToString(); - TB_PP4.Text = PKX.getMovePP(Util.getIndex(CB_Move4), CB_PPu4.SelectedIndex).ToString(); + TB_PP1.Text = pkm.getMovePP(Util.getIndex(CB_Move1), CB_PPu1.SelectedIndex).ToString(); + TB_PP2.Text = pkm.getMovePP(Util.getIndex(CB_Move2), CB_PPu2.SelectedIndex).ToString(); + TB_PP3.Text = pkm.getMovePP(Util.getIndex(CB_Move3), CB_PPu3.SelectedIndex).ToString(); + TB_PP4.Text = pkm.getMovePP(Util.getIndex(CB_Move4), CB_PPu4.SelectedIndex).ToString(); } private void updatePKRSstrain(object sender, EventArgs e) { @@ -2169,7 +1815,7 @@ private void updateSpecies(object sender, EventArgs e) // Check for Gender Changes // Get Gender Threshold - int gt = PKX.Personal[Species].Gender; + int gt = SAV.Personal[Species].Gender; int cg = Array.IndexOf(gendersymbols, Label_Gender.Text); int Gender; @@ -2198,8 +1844,37 @@ private void updateSpecies(object sender, EventArgs e) private void updateOriginGame(object sender, EventArgs e) { int Version = Util.getIndex(CB_GameOrigin); - - if (Version < 24 && origintrack != "Past" && SAV.Generation != 4) + + if (SAV.Generation == 3 && origintrack != "Gen3") + { + var met_list = Util.getCBList(metRSEFRLG_00000, Enumerable.Range(0, 213).ToArray()); + met_list = Util.getOffsetCBList(met_list, metRSEFRLG_00000, 00000, new[] {253, 254, 255}); + origintrack = "Gen3"; + CB_MetLocation.DisplayMember = "Text"; + CB_MetLocation.ValueMember = "Value"; + CB_MetLocation.DataSource = met_list; + CB_MetLocation.SelectedValue = 0; + } + else if (SAV.Generation == 4 && origintrack != "Gen4") + { + var met_list = Util.getCBList(metHGSS_00000, new[] { 0 }); + met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, new[] { 2000 }); + met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, new[] { 2002 }); + met_list = Util.getOffsetCBList(met_list, metHGSS_03000, 3000, new[] { 3001 }); + met_list = Util.getOffsetCBList(met_list, metHGSS_00000, 0000, Legal.Met_HGSS_0); + met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, Legal.Met_HGSS_2); + met_list = Util.getOffsetCBList(met_list, metHGSS_03000, 3000, Legal.Met_HGSS_3); + CB_MetLocation.DisplayMember = "Text"; + CB_MetLocation.ValueMember = "Value"; + CB_MetLocation.DataSource = met_list; + CB_EggLocation.DisplayMember = "Text"; + CB_EggLocation.ValueMember = "Value"; + CB_EggLocation.DataSource = new BindingSource(met_list, null); + CB_EggLocation.SelectedValue = 0; + CB_MetLocation.SelectedValue = 0; + origintrack = "Gen4"; + } + else if (Version < 24 && origintrack != "Past" && SAV.Generation >= 5) { // Load Past Gen Locations #region B2W2 Met Locations @@ -2249,23 +1924,8 @@ private void updateOriginGame(object sender, EventArgs e) } #endregion } - else if (SAV.Generation == 4 && origintrack != "Gen4") - { - var met_list = Util.getCBList(metHGSS_00000, new[] { 0 }); - met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, new[] { 2000 }); - met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, new[] { 2002 }); - met_list = Util.getOffsetCBList(met_list, metHGSS_03000, 3000, new[] { 3001 }); - met_list = Util.getOffsetCBList(met_list, metHGSS_00000, 0000, Legal.Met_HGSS_0); - met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, Legal.Met_HGSS_2); - met_list = Util.getOffsetCBList(met_list, metHGSS_03000, 3000, Legal.Met_HGSS_3); - CB_MetLocation.DisplayMember = "Text"; - CB_MetLocation.ValueMember = "Value"; - CB_MetLocation.DataSource = met_list; - CB_MetLocation.SelectedValue = 0; - origintrack = "Gen4"; - } - if (Version < 0x10 && origintrack != "Gen4") + if (SAV.Generation >= 4 && Version < 0x10 && origintrack != "Gen4") { // Load Gen 4 egg locations if Gen 4 Origin. #region HGSS Met Locations @@ -2286,10 +1946,13 @@ private void updateOriginGame(object sender, EventArgs e) } // Visibility logic for Gen 4 encounter type; only show for Gen 4 Pokemon. - bool g4 = Version >= 7 && Version <= 12 && Version != 9; - CB_EncounterType.Visible = Label_EncounterType.Visible = g4; - if (!g4) - CB_EncounterType.SelectedValue = 0; + if (SAV.Generation >= 4) + { + bool g4 = Version >= 7 && Version <= 12 && Version != 9; + CB_EncounterType.Visible = Label_EncounterType.Visible = g4; + if (!g4) + CB_EncounterType.SelectedValue = 0; + } setMarkings(); // Set/Remove KB marking if (!fieldsLoaded) @@ -2302,8 +1965,8 @@ private void updateExtraByteValue(object sender, EventArgs e) if (CB_ExtraBytes.Items.Count == 0) return; // Changed Extra Byte's Value - if (Util.ToInt32((sender as MaskedTextBox).Text) > byte.MaxValue) - (sender as MaskedTextBox).Text = "255"; + if (Util.ToInt32(((MaskedTextBox) sender).Text) > byte.MaxValue) + ((MaskedTextBox) sender).Text = "255"; int value = Util.ToInt32(TB_ExtraByte.Text); int offset = Convert.ToInt32(CB_ExtraBytes.Text, 16); @@ -2361,7 +2024,7 @@ private void updateNickname(object sender, EventArgs e) } private void updateNicknameClick(object sender, MouseEventArgs e) { - TextBox tb = !(sender is TextBox) ? TB_Nickname : sender as TextBox; + TextBox tb = !(sender is TextBox) ? TB_Nickname : (TextBox) sender; // Special Character Form if (ModifierKeys != Keys.Control) return; @@ -2401,7 +2064,7 @@ private void updateIsEgg(object sender, EventArgs e) if (!CHK_Nicknamed.Checked) updateNickname(null, null); - TB_Friendship.Text = PKX.getBaseFriendship(Util.getIndex(CB_Species)).ToString(); + TB_Friendship.Text = SAV.Personal[Util.getIndex(CB_Species)].BaseFriendship.ToString(); if (CB_EggLocation.SelectedIndex == 0) { @@ -2432,51 +2095,34 @@ private void updateMetAsEgg(object sender, EventArgs e) } private void updateShinyPID(object sender, EventArgs e) { - uint TID = Util.ToUInt32(TB_TID.Text); - uint SID = Util.ToUInt32(TB_SID.Text); - uint PID = Util.getHEXval(TB_PID.Text); - if (SAV.Generation == 4) - { - int nature = Util.getIndex(CB_Nature); - int species = Util.getIndex(CB_Species); - int gender = PKX.getGender(Label_Gender.Text); - - uint oldbits = PID & 0x00010001; - while ((TID ^ SID ^ (PID >> 16) ^ PID & 0xFFFF) > 8 || (PID & 0x00010001) != oldbits || PID%25 != nature || gender != PKX.getGender(species, PID)) - PID = Util.rnd32(); - TB_PID.Text = PID.ToString("X8"); + pkm.TID = Util.ToInt32(TB_TID.Text); + pkm.SID = Util.ToInt32(TB_SID.Text); + pkm.PID = Util.getHEXval(TB_PID.Text); + pkm.Nature = Util.getIndex(CB_Nature); + pkm.Gender = PKX.getGender(Label_Gender.Text); + pkm.AltForm = CB_Form.SelectedIndex; + pkm.Version = Util.getIndex(CB_GameOrigin); - getQuickFiller(dragout); - return; - } + pkm.setShinyPID(); + TB_PID.Text = pkm.PID.ToString("X8"); - uint UID = PID >> 16; - uint LID = PID & 0xFFFF; - uint PSV = UID ^ LID; - uint TSV = TID ^ SID; - uint XOR = TSV ^ PSV; - - // Preserve Gen5 Origin Ability bit just in case - XOR &= 0xFFFE; XOR |= UID & 1; - - // New XOR should be 0 or 1. - TB_PID.Text = (((UID ^ XOR) << 16) + LID).ToString("X8"); - if (Util.getIndex(CB_GameOrigin) < 24) // Pre Gen6 + if (pkm.GenNumber < 6 && TB_EC.Visible) TB_EC.Text = TB_PID.Text; getQuickFiller(dragout); + updateLegality(); } private void updateTSV(object sender, EventArgs e) { if (SAV.Generation < 6) return; - ushort TID = (ushort)Util.ToUInt32(TB_TID.Text); - ushort SID = (ushort)Util.ToUInt32(TB_SID.Text); - uint TSV = PKX.getTSV(TID, SID); + + var TSV = pkm.TSV; Tip1.SetToolTip(TB_TID, "TSV: " + TSV.ToString("0000")); Tip2.SetToolTip(TB_SID, "TSV: " + TSV.ToString("0000")); - uint PSV = PKX.getPSV(Util.getHEXval(TB_PID.Text)); + pkm.PID = Util.getHEXval(TB_PID.Text); + var PSV = pkm.PSV; Tip3.SetToolTip(TB_PID, "PSV: " + PSV.ToString("0000")); } private void update_ID(object sender, EventArgs e) @@ -2489,14 +2135,18 @@ private void update_ID(object sender, EventArgs e) if (Util.ToUInt32(TB_TID.Text) > ushort.MaxValue) TB_TID.Text = "65535"; if (Util.ToUInt32(TB_SID.Text) > ushort.MaxValue) TB_SID.Text = "65535"; - setIsShiny(); + setIsShiny(sender); getQuickFiller(dragout); updateIVs(null, null); // If the EC is changed, EC%6 (Characteristic) might be changed. TB_PID.Select(60, 0); // position cursor at end of field - if (SAV.Generation == 4 && fieldsInitialized) + if (SAV.Generation <= 4 && fieldsLoaded) { + fieldsLoaded = false; pkm.PID = Util.getHEXval(TB_PID.Text); CB_Nature.SelectedValue = pkm.Nature; + Label_Gender.Text = gendersymbols[pkm.Gender]; + Label_Gender.ForeColor = pkm.Gender == 2 ? Label_Species.ForeColor : (pkm.Gender == 1 ? Color.Red : Color.Blue); + fieldsLoaded = true; } } private void validateComboBox(object sender) @@ -2527,8 +2177,8 @@ private void validateComboBox2(object sender, EventArgs e) validateComboBox(sender, e); if (sender == CB_Ability) TB_AbilityNumber.Text = (1 << CB_Ability.SelectedIndex).ToString(); - if (fieldsInitialized && sender == CB_Nature && SAV.Generation == 4) - BTN_RerollPID.PerformClick(); + if (fieldsLoaded && sender == CB_Nature && SAV.Generation <= 4) + updateRandomPID(sender, e); updateNatureModification(sender, null); updateIVs(null, null); // updating Nature will trigger stats to update as well } @@ -2546,7 +2196,7 @@ private void validateMove(object sender, EventArgs e) { if (pkm.Format < 6) return; - (pkm as PK6).RelearnMoves = new[] { Util.getIndex(CB_RelearnMove1), Util.getIndex(CB_RelearnMove2), Util.getIndex(CB_RelearnMove3), Util.getIndex(CB_RelearnMove4) }; + ((PK6) pkm).RelearnMoves = new[] { Util.getIndex(CB_RelearnMove1), Util.getIndex(CB_RelearnMove2), Util.getIndex(CB_RelearnMove3), Util.getIndex(CB_RelearnMove4) }; Legality.updateRelearnLegality(); for (int i = 0; i < 4; i++) movePB[i].Visible = !Legality.vRelearn[i].Valid; @@ -2591,7 +2241,7 @@ private void updateLegality(LegalityAnalysis la = null) return; if (!(pkm is PK6)) return; - Legality = la ?? new LegalityAnalysis(pkm as PK6); + Legality = la ?? new LegalityAnalysis((PK6) pkm); PB_Legal.Image = Legality.Valid ? Properties.Resources.valid : Properties.Resources.warn; PB_Legal.Visible = pkm.Gen6 /*&& pkm is PK6*/; @@ -2603,31 +2253,8 @@ private void updateLegality(LegalityAnalysis la = null) } private void updateStats() { - // Gather the needed information. - int species = Util.getIndex(CB_Species); - int level = Util.ToInt32(MT_Level.Enabled ? MT_Level.Text : TB_Level.Text); - if (level == 0) level = 1; - int form = CB_Form.SelectedIndex; - int HP_IV = Util.ToInt32(TB_HPIV.Text); - int ATK_IV = Util.ToInt32(TB_ATKIV.Text); - int DEF_IV = Util.ToInt32(TB_DEFIV.Text); - int SPA_IV = Util.ToInt32(TB_SPAIV.Text); - int SPD_IV = Util.ToInt32(TB_SPDIV.Text); - int SPE_IV = Util.ToInt32(TB_SPEIV.Text); - - int HP_EV = Util.ToInt32(TB_HPEV.Text); - int ATK_EV = Util.ToInt32(TB_ATKEV.Text); - int DEF_EV = Util.ToInt32(TB_DEFEV.Text); - int SPA_EV = Util.ToInt32(TB_SPAEV.Text); - int SPD_EV = Util.ToInt32(TB_SPDEV.Text); - int SPE_EV = Util.ToInt32(TB_SPEEV.Text); - - int nature = Util.getIndex(CB_Nature); - // Generate the stats. - ushort[] stats = PKX.getStats(species, level, nature, form, - HP_EV, ATK_EV, DEF_EV, SPA_EV, SPD_EV, SPE_EV, - HP_IV, ATK_IV, DEF_IV, SPA_IV, SPD_IV, SPE_IV); + ushort[] stats = pkm.getStats(SAV.Personal.getFormeEntry(pkm.Species, pkm.AltForm)); Stat_HP.Text = stats[0].ToString(); Stat_ATK.Text = stats[1].ToString(); @@ -2638,8 +2265,8 @@ private void updateStats() // Recolor the Stat Labels based on boosted stats. { - int incr = nature / 5; - int decr = nature % 5; + int incr = pkm.Nature / 5; + int decr = pkm.Nature % 5; Label[] labarray = { Label_ATK, Label_DEF, Label_SPE, Label_SPA, Label_SPD }; // Reset Label Colors @@ -2677,7 +2304,11 @@ private void updateUnicode() // Secondary Windows for Ribbons/Amie/Memories private void openRibbons(object sender, EventArgs e) { - new RibbMedal().ShowDialog(); + new RibbonEditor().ShowDialog(); + } + private void openMedals(object sender, EventArgs e) + { + new SuperTrainingEditor().ShowDialog(); } private void openHistory(object sender, EventArgs e) { @@ -2741,7 +2372,7 @@ private static string[] verifyPKMtoSAV(PKM pk) { if (pk.HeldItem > SAV.MaxItemID) errata.Add($"Game can't obtain item: {itemlist[pk.HeldItem]}"); - if (!SAV.HeldItems.Contains((ushort)pk.HeldItem)) + if (!pk.CanHoldItem(SAV.HeldItems)) errata.Add($"Game can't hold item: {itemlist[pk.HeldItem]}"); } @@ -2767,536 +2398,13 @@ public PKM preparePKM(bool click = true) if (click) tabMain.Select(); // hack to make sure comboboxes are set (users scrolling through and immediately setting causes this) - PKM pk = null; - switch (pkm.Format) - { - case 3: - pk = preparePK3(); - break; - case 4: - pk = preparePK4(); - break; - case 5: - pk = preparePK5(); - break; - case 6: - pk = preparePK6(); - break; - } + PKM pk = getPKMfromFields(); return pk?.Clone(); } - private PK3 preparePK3() - { - PK3 pk3 = pkm as PK3; - if (pk3 == null) - return null; - - pk3.Species = Util.getIndex(CB_Species); - pk3.G3Item = Util.getIndex(CB_HeldItem); - pk3.TID = Util.ToInt32(TB_TID.Text); - pk3.SID = Util.ToInt32(TB_SID.Text); - pk3.EXP = Util.ToUInt32(TB_EXP.Text); - pk3.PID = Util.getHEXval(TB_PID.Text); - pk3.Ability = (byte)Util.getIndex(DEV_Ability); - //pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); - - pk3.FatefulEncounter = CHK_Fateful.Checked; - pk3.Gender = PKX.getGender(Label_Gender.Text); - pk3.EV_HP = Util.ToInt32(TB_HPEV.Text); - pk3.EV_ATK = Util.ToInt32(TB_ATKEV.Text); - pk3.EV_DEF = Util.ToInt32(TB_DEFEV.Text); - pk3.EV_SPE = Util.ToInt32(TB_SPEEV.Text); - pk3.EV_SPA = Util.ToInt32(TB_SPAEV.Text); - pk3.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - - pk3.CNT_Cool = Util.ToInt32(TB_Cool.Text); - pk3.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); - pk3.CNT_Cute = Util.ToInt32(TB_Cute.Text); - pk3.CNT_Smart = Util.ToInt32(TB_Smart.Text); - pk3.CNT_Tough = Util.ToInt32(TB_Tough.Text); - pk3.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); - - pk3.PKRS_Days = CB_PKRSDays.SelectedIndex; - pk3.PKRS_Strain = CB_PKRSStrain.SelectedIndex; - pk3.Nickname = TB_Nickname.Text; - pk3.Move1 = Util.getIndex(CB_Move1); - pk3.Move2 = Util.getIndex(CB_Move2); - pk3.Move3 = Util.getIndex(CB_Move3); - pk3.Move4 = Util.getIndex(CB_Move4); - pk3.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; - pk3.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; - pk3.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; - pk3.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; - pk3.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; - pk3.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; - pk3.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; - pk3.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; - - pk3.IV_HP = Util.ToInt32(TB_HPIV.Text); - pk3.IV_ATK = Util.ToInt32(TB_ATKIV.Text); - pk3.IV_DEF = Util.ToInt32(TB_DEFIV.Text); - pk3.IV_SPE = Util.ToInt32(TB_SPEIV.Text); - pk3.IV_SPA = Util.ToInt32(TB_SPAIV.Text); - pk3.IV_SPD = Util.ToInt32(TB_SPDIV.Text); - pk3.IsEgg = CHK_IsEgg.Checked; - pk3.IsNicknamed = CHK_Nicknamed.Checked; - - pk3.OT_Name = TB_OT.Text; - pk3.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - - pk3.Ball = Util.getIndex(CB_Ball); - pk3.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk3.OT_Gender = PKX.getGender(Label_OTGender.Text); - pk3.Version = Util.getIndex(CB_GameOrigin); - pk3.Language = Util.getIndex(CB_Language); - - pk3.Met_Location = Util.getIndex(CB_MetLocation); - - // Toss in Party Stats - Array.Resize(ref pk3.Data, pk3.SIZE_PARTY); - pk3.Stat_Level = Util.ToInt32(TB_Level.Text); - pk3.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); - pk3.Stat_HPMax = Util.ToInt32(Stat_HP.Text); - pk3.Stat_ATK = Util.ToInt32(Stat_ATK.Text); - pk3.Stat_DEF = Util.ToInt32(Stat_DEF.Text); - pk3.Stat_SPE = Util.ToInt32(Stat_SPE.Text); - pk3.Stat_SPA = Util.ToInt32(Stat_SPA.Text); - pk3.Stat_SPD = Util.ToInt32(Stat_SPD.Text); - - if (HaX) - { - pk3.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); - } - - // Fix Moves if a slot is empty - pk3.FixMoves(); - - pk3.RefreshChecksum(); - return pk3; - } - private PK4 preparePK4() - { - PK4 pk4 = pkm as PK4; - if (pk4 == null) - return null; - - pk4.Species = Util.getIndex(CB_Species); - pk4.HeldItem = Util.getIndex(CB_HeldItem); - pk4.TID = Util.ToInt32(TB_TID.Text); - pk4.SID = Util.ToInt32(TB_SID.Text); - pk4.EXP = Util.ToUInt32(TB_EXP.Text); - pk4.PID = Util.getHEXval(TB_PID.Text); - pk4.Ability = (byte)Util.getIndex(DEV_Ability); - //pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); - - pk4.FatefulEncounter = CHK_Fateful.Checked; - pk4.Gender = PKX.getGender(Label_Gender.Text); - pk4.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; - pk4.EV_HP = Util.ToInt32(TB_HPEV.Text); - pk4.EV_ATK = Util.ToInt32(TB_ATKEV.Text); - pk4.EV_DEF = Util.ToInt32(TB_DEFEV.Text); - pk4.EV_SPE = Util.ToInt32(TB_SPEEV.Text); - pk4.EV_SPA = Util.ToInt32(TB_SPAEV.Text); - pk4.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - - pk4.CNT_Cool = Util.ToInt32(TB_Cool.Text); - pk4.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); - pk4.CNT_Cute = Util.ToInt32(TB_Cute.Text); - pk4.CNT_Smart = Util.ToInt32(TB_Smart.Text); - pk4.CNT_Tough = Util.ToInt32(TB_Tough.Text); - pk4.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); - - pk4.PKRS_Days = CB_PKRSDays.SelectedIndex; - pk4.PKRS_Strain = CB_PKRSStrain.SelectedIndex; - pk4.Nickname = TB_Nickname.Text; - pk4.Move1 = Util.getIndex(CB_Move1); - pk4.Move2 = Util.getIndex(CB_Move2); - pk4.Move3 = Util.getIndex(CB_Move3); - pk4.Move4 = Util.getIndex(CB_Move4); - pk4.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; - pk4.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; - pk4.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; - pk4.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; - pk4.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; - pk4.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; - pk4.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; - pk4.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; - - pk4.IV_HP = Util.ToInt32(TB_HPIV.Text); - pk4.IV_ATK = Util.ToInt32(TB_ATKIV.Text); - pk4.IV_DEF = Util.ToInt32(TB_DEFIV.Text); - pk4.IV_SPE = Util.ToInt32(TB_SPEIV.Text); - pk4.IV_SPA = Util.ToInt32(TB_SPAIV.Text); - pk4.IV_SPD = Util.ToInt32(TB_SPDIV.Text); - pk4.IsEgg = CHK_IsEgg.Checked; - pk4.IsNicknamed = CHK_Nicknamed.Checked; - - pk4.OT_Name = TB_OT.Text; - pk4.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - - pk4.Ball = Util.getIndex(CB_Ball); - pk4.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk4.OT_Gender = PKX.getGender(Label_OTGender.Text); - pk4.EncounterType = Util.getIndex(CB_EncounterType); - pk4.Version = Util.getIndex(CB_GameOrigin); - pk4.Language = Util.getIndex(CB_Language); - - // Default Dates - int egg_year = 2000; - int egg_month = 0; - int egg_day = 0; - int egg_location = 0; - if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. - { - egg_year = CAL_EggDate.Value.Year; - egg_month = CAL_EggDate.Value.Month; - egg_day = CAL_EggDate.Value.Day; - egg_location = Util.getIndex(CB_EggLocation); - } - // Egg Met Data - pk4.Egg_Year = egg_year - 2000; - pk4.Egg_Month = egg_month; - pk4.Egg_Day = egg_day; - pk4.Egg_Location = egg_location; - // Met Data - pk4.Met_Year = CAL_MetDate.Value.Year - 2000; - pk4.Met_Month = CAL_MetDate.Value.Month; - pk4.Met_Day = CAL_MetDate.Value.Day; - pk4.Met_Location = Util.getIndex(CB_MetLocation); - - if (pk4.IsEgg && pk4.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! - pk4.Met_Year = pk4.Met_Month = pk4.Met_Day = 0; - - // Toss in Party Stats - Array.Resize(ref pk4.Data, pk4.SIZE_PARTY); - pk4.Stat_Level = Util.ToInt32(TB_Level.Text); - pk4.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); - pk4.Stat_HPMax = Util.ToInt32(Stat_HP.Text); - pk4.Stat_ATK = Util.ToInt32(Stat_ATK.Text); - pk4.Stat_DEF = Util.ToInt32(Stat_DEF.Text); - pk4.Stat_SPE = Util.ToInt32(Stat_SPE.Text); - pk4.Stat_SPA = Util.ToInt32(Stat_SPA.Text); - pk4.Stat_SPD = Util.ToInt32(Stat_SPD.Text); - - if (HaX) - { - pk4.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); - } - - // Fix Moves if a slot is empty - pk4.FixMoves(); - - pk4.RefreshChecksum(); - return pk4; - } - private PK5 preparePK5() - { - PK5 pk5 = pkm as PK5; - if (pk5 == null) - return null; - - pk5.Species = Util.getIndex(CB_Species); - pk5.HeldItem = Util.getIndex(CB_HeldItem); - pk5.TID = Util.ToInt32(TB_TID.Text); - pk5.SID = Util.ToInt32(TB_SID.Text); - pk5.EXP = Util.ToUInt32(TB_EXP.Text); - pk5.PID = Util.getHEXval(TB_PID.Text); - pk5.Ability = (byte)Util.getIndex(DEV_Ability); - //pk5.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); - - pk5.Nature = (byte)Util.getIndex(CB_Nature); - pk5.FatefulEncounter = CHK_Fateful.Checked; - pk5.Gender = PKX.getGender(Label_Gender.Text); - pk5.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; - pk5.EV_HP = Util.ToInt32(TB_HPEV.Text); - pk5.EV_ATK = Util.ToInt32(TB_ATKEV.Text); - pk5.EV_DEF = Util.ToInt32(TB_DEFEV.Text); - pk5.EV_SPE = Util.ToInt32(TB_SPEEV.Text); - pk5.EV_SPA = Util.ToInt32(TB_SPAEV.Text); - pk5.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - - pk5.CNT_Cool = Util.ToInt32(TB_Cool.Text); - pk5.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); - pk5.CNT_Cute = Util.ToInt32(TB_Cute.Text); - pk5.CNT_Smart = Util.ToInt32(TB_Smart.Text); - pk5.CNT_Tough = Util.ToInt32(TB_Tough.Text); - pk5.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); - - pk5.PKRS_Days = CB_PKRSDays.SelectedIndex; - pk5.PKRS_Strain = CB_PKRSStrain.SelectedIndex; - pk5.Nickname = TB_Nickname.Text; - pk5.Move1 = Util.getIndex(CB_Move1); - pk5.Move2 = Util.getIndex(CB_Move2); - pk5.Move3 = Util.getIndex(CB_Move3); - pk5.Move4 = Util.getIndex(CB_Move4); - pk5.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; - pk5.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; - pk5.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; - pk5.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; - pk5.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; - pk5.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; - pk5.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; - pk5.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; - - pk5.IV_HP = Util.ToInt32(TB_HPIV.Text); - pk5.IV_ATK = Util.ToInt32(TB_ATKIV.Text); - pk5.IV_DEF = Util.ToInt32(TB_DEFIV.Text); - pk5.IV_SPE = Util.ToInt32(TB_SPEIV.Text); - pk5.IV_SPA = Util.ToInt32(TB_SPAIV.Text); - pk5.IV_SPD = Util.ToInt32(TB_SPDIV.Text); - pk5.IsEgg = CHK_IsEgg.Checked; - pk5.IsNicknamed = CHK_Nicknamed.Checked; - - pk5.OT_Name = TB_OT.Text; - pk5.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - - // Default Dates - int egg_year = 2000; - int egg_month = 0; - int egg_day = 0; - int egg_location = 0; - if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. - { - egg_year = CAL_EggDate.Value.Year; - egg_month = CAL_EggDate.Value.Month; - egg_day = CAL_EggDate.Value.Day; - egg_location = Util.getIndex(CB_EggLocation); - } - // Egg Met Data - pk5.Egg_Year = egg_year - 2000; - pk5.Egg_Month = egg_month; - pk5.Egg_Day = egg_day; - pk5.Egg_Location = egg_location; - // Met Data - pk5.Met_Year = CAL_MetDate.Value.Year - 2000; - pk5.Met_Month = CAL_MetDate.Value.Month; - pk5.Met_Day = CAL_MetDate.Value.Day; - pk5.Met_Location = Util.getIndex(CB_MetLocation); - - if (pk5.IsEgg && pk5.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! - pk5.Met_Year = pk5.Met_Month = pk5.Met_Day = 0; - - pk5.Ball = Util.getIndex(CB_Ball); - pk5.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk5.OT_Gender = PKX.getGender(Label_OTGender.Text); - pk5.EncounterType = Util.getIndex(CB_EncounterType); - pk5.Version = Util.getIndex(CB_GameOrigin); - pk5.Language = Util.getIndex(CB_Language); - - // Toss in Party Stats - Array.Resize(ref pk5.Data, pk5.SIZE_PARTY); - pk5.Stat_Level = Util.ToInt32(TB_Level.Text); - pk5.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); - pk5.Stat_HPMax = Util.ToInt32(Stat_HP.Text); - pk5.Stat_ATK = Util.ToInt32(Stat_ATK.Text); - pk5.Stat_DEF = Util.ToInt32(Stat_DEF.Text); - pk5.Stat_SPE = Util.ToInt32(Stat_SPE.Text); - pk5.Stat_SPA = Util.ToInt32(Stat_SPA.Text); - pk5.Stat_SPD = Util.ToInt32(Stat_SPD.Text); - - if (HaX) - { - pk5.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); - } - - // Fix Moves if a slot is empty - pk5.FixMoves(); - - pk5.RefreshChecksum(); - return pk5; - } - private PK6 preparePK6() - { - PK6 pk6 = pkm as PK6; - if (pk6 == null) - return null; - // Repopulate PK6 with Edited Stuff - if (Util.getIndex(CB_GameOrigin) < 24) - { - uint EC = Util.getHEXval(TB_EC.Text); - uint PID = Util.getHEXval(TB_PID.Text); - uint SID = Util.ToUInt32(TB_TID.Text); - uint TID = Util.ToUInt32(TB_TID.Text); - uint LID = PID & 0xFFFF; - uint HID = PID >> 16; - uint XOR = TID ^ LID ^ SID ^ HID; - - // Ensure we don't have a shiny. - if (XOR >> 3 == 1) // Illegal, fix. (not 16=8) - { - // Keep as shiny, so we have to mod the PID - PID ^= XOR; - TB_PID.Text = PID.ToString("X8"); - TB_EC.Text = PID.ToString("X8"); - } - else if ((XOR ^ 0x8000) >> 3 == 1 && PID != EC) - TB_EC.Text = (PID ^ 0x80000000).ToString("X8"); - else // Not Illegal, no fix. - TB_EC.Text = PID.ToString("X8"); - } - - pk6.EncryptionConstant = Util.getHEXval(TB_EC.Text); - pk6.Checksum = 0; // 0 CHK for now - - // Block A - pk6.Species = Util.getIndex(CB_Species); - pk6.HeldItem = Util.getIndex(CB_HeldItem); - pk6.TID = Util.ToInt32(TB_TID.Text); - pk6.SID = Util.ToInt32(TB_SID.Text); - pk6.EXP = Util.ToUInt32(TB_EXP.Text); - pk6.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); - pk6.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number - // pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag) - pk6.PID = Util.getHEXval(TB_PID.Text); - pk6.Nature = (byte)Util.getIndex(CB_Nature); - pk6.FatefulEncounter = CHK_Fateful.Checked; - pk6.Gender = PKX.getGender(Label_Gender.Text); - pk6.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; - pk6.EV_HP = Util.ToInt32(TB_HPEV.Text); // EVs - pk6.EV_ATK = Util.ToInt32(TB_ATKEV.Text); - pk6.EV_DEF = Util.ToInt32(TB_DEFEV.Text); - pk6.EV_SPE = Util.ToInt32(TB_SPEEV.Text); - pk6.EV_SPA = Util.ToInt32(TB_SPAEV.Text); - pk6.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - - pk6.CNT_Cool = Util.ToInt32(TB_Cool.Text); // CNT - pk6.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); - pk6.CNT_Cute = Util.ToInt32(TB_Cute.Text); - pk6.CNT_Smart = Util.ToInt32(TB_Smart.Text); - pk6.CNT_Tough = Util.ToInt32(TB_Tough.Text); - pk6.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); - - pk6.PKRS_Days = CB_PKRSDays.SelectedIndex; - pk6.PKRS_Strain = CB_PKRSStrain.SelectedIndex; - // Already in buff (then transferred to new pkx) - // 0x2C, 0x2D, 0x2E, 0x2F - // 0x30, 0x31, 0x32, 0x33 - // 0x34, 0x35, 0x36, 0x37 - // 0x38, 0x39 - - // Unused - // 0x3A, 0x3B - // 0x3C, 0x3D, 0x3E, 0x3F - - // Block B - // Convert Nickname field back to bytes - pk6.Nickname = TB_Nickname.Text; - pk6.Move1 = Util.getIndex(CB_Move1); - pk6.Move2 = Util.getIndex(CB_Move2); - pk6.Move3 = Util.getIndex(CB_Move3); - pk6.Move4 = Util.getIndex(CB_Move4); - pk6.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; - pk6.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; - pk6.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; - pk6.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; - pk6.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; - pk6.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; - pk6.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; - pk6.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; - pk6.RelearnMove1 = Util.getIndex(CB_RelearnMove1); - pk6.RelearnMove2 = Util.getIndex(CB_RelearnMove2); - pk6.RelearnMove3 = Util.getIndex(CB_RelearnMove3); - pk6.RelearnMove4 = Util.getIndex(CB_RelearnMove4); - // 0x72 - Ribbon editor sets this flag (Secret Super Training) - // 0x73 - pk6.IV_HP = Util.ToInt32(TB_HPIV.Text); - pk6.IV_ATK = Util.ToInt32(TB_ATKIV.Text); - pk6.IV_DEF = Util.ToInt32(TB_DEFIV.Text); - pk6.IV_SPE = Util.ToInt32(TB_SPEIV.Text); - pk6.IV_SPA = Util.ToInt32(TB_SPAIV.Text); - pk6.IV_SPD = Util.ToInt32(TB_SPDIV.Text); - pk6.IsEgg = CHK_IsEgg.Checked; - pk6.IsNicknamed = CHK_Nicknamed.Checked; - - // Block C - pk6.HT_Name = TB_OTt2.Text; - - // 0x90-0xAF - pk6.HT_Gender = PKX.getGender(Label_CTGender.Text); - // Plus more, set by MemoryAmie (already in buff) - - // Block D - pk6.OT_Name = TB_OT.Text; - pk6.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - - int egg_year = 2000; // Default Dates - int egg_month = 0; - int egg_day = 0; - int egg_location = 0; - if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. - { - egg_year = CAL_EggDate.Value.Year; - egg_month = CAL_EggDate.Value.Month; - egg_day = CAL_EggDate.Value.Day; - egg_location = Util.getIndex(CB_EggLocation); - } - // Egg Met Data - pk6.Egg_Year = egg_year - 2000; - pk6.Egg_Month = egg_month; - pk6.Egg_Day = egg_day; - pk6.Egg_Location = egg_location; - // Met Data - pk6.Met_Year = CAL_MetDate.Value.Year - 2000; - pk6.Met_Month = CAL_MetDate.Value.Month; - pk6.Met_Day = CAL_MetDate.Value.Day; - pk6.Met_Location = Util.getIndex(CB_MetLocation); - - if (pk6.IsEgg && pk6.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! - pk6.Met_Year = pk6.Met_Month = pk6.Met_Day = 0; - - // 0xD7 Unknown - - pk6.Ball = Util.getIndex(CB_Ball); - pk6.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk6.OT_Gender = PKX.getGender(Label_OTGender.Text); - pk6.EncounterType = Util.getIndex(CB_EncounterType); - pk6.Version = Util.getIndex(CB_GameOrigin); - pk6.Country = Util.getIndex(CB_Country); - pk6.Region = Util.getIndex(CB_SubRegion); - pk6.ConsoleRegion = Util.getIndex(CB_3DSReg); - pk6.Language = Util.getIndex(CB_Language); - // 0xE4-0xE7 - - // Toss in Party Stats - Array.Resize(ref pk6.Data, pk6.SIZE_PARTY); - pk6.Stat_Level = Util.ToInt32(TB_Level.Text); - pk6.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); - pk6.Stat_HPMax = Util.ToInt32(Stat_HP.Text); - pk6.Stat_ATK = Util.ToInt32(Stat_ATK.Text); - pk6.Stat_DEF = Util.ToInt32(Stat_DEF.Text); - pk6.Stat_SPE = Util.ToInt32(Stat_SPE.Text); - pk6.Stat_SPA = Util.ToInt32(Stat_SPA.Text); - pk6.Stat_SPD = Util.ToInt32(Stat_SPD.Text); - - // Unneeded Party Stats (Status, Flags, Unused) - pk6.Data[0xE8] = pk6.Data[0xE9] = pk6.Data[0xEA] = pk6.Data[0xEB] = - pk6.Data[0xED] = pk6.Data[0xEE] = pk6.Data[0xEF] = - pk6.Data[0xFE] = pk6.Data[0xFF] = pk6.Data[0x100] = - pk6.Data[0x101] = pk6.Data[0x102] = pk6.Data[0x103] = 0; - - // Hax Illegality - if (HaX) - { - pk6.Ability = (byte)Util.getIndex(DEV_Ability); - pk6.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); - } - - // Fix Moves if a slot is empty - pk6.FixMoves(); - pk6.FixRelearn(); - - // Fix Handler (Memories & OT) -- no foreign memories for Pokemon without a foreign trainer (none for eggs) - if (Menu_ModifyPK6.Checked) - pk6.FixMemories(); - - // PKX is now filled - pk6.RefreshChecksum(); - return pk6; - } // Drag & Drop Events private void tabMain_DragEnter(object sender, DragEventArgs e) { - if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; + if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Move; } private void tabMain_DragDrop(object sender, DragEventArgs e) { @@ -3404,7 +2512,7 @@ private void clickExportSAV(object sender, EventArgs e) if (SAV.HasBox) SAV.CurrentBox = CB_BoxSelect.SelectedIndex; - bool dsv = Path.GetExtension(main.FileName).ToLower() == ".dsv"; + bool dsv = Path.GetExtension(main.FileName)?.ToLower() == ".dsv"; File.WriteAllBytes(main.FileName, SAV.Write(dsv)); Util.Alert("SAV exported to:", main.FileName); } @@ -3422,6 +2530,8 @@ private void clickBoxSort(object sender, EventArgs e) { if (tabBoxMulti.SelectedIndex != 0) return; + if (!SAV.HasBox) + return; if (ModifierKeys == (Keys.Alt | Keys.Shift)) { if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo, "Clear ALL Boxes?!")) @@ -3515,22 +2625,25 @@ private void clickSet(object sender, EventArgs e) return; if (slot >= 30 && slot < 36) // Party + { + // If slot isn't overwriting existing PKM, make it write to the lowest empty PKM slot + if (SAV.PartyCount < slot + 1 - 30) + { slot = SAV.PartyCount + 30; offset = getPKXOffset(slot); } SAV.setPartySlot(pk, offset); - else if (slot < 30 || (slot >= 36 && slot < 42 && DEV_Ability.Enabled)) - SAV.setStoredSlot(pk, offset); - else return; - - if (slot >= 30 && slot < 36) setParty(); - else + getSlotColor(slot, Properties.Resources.slotSet); + } + else if (slot < 30 || HaX && slot >= 36 && slot < 42) + { + SAV.setStoredSlot(pk, offset); getQuickFiller(SlotPictureBoxes[slot], pk); - - getSlotColor(slot, Properties.Resources.slotSet); + getSlotColor(slot, Properties.Resources.slotSet); + } } private void clickDelete(object sender, EventArgs e) { int slot = getSlot(sender); - if (slot == 30 && SAV.PartyCount == 1 && !DEV_Ability.Enabled) { Util.Alert("Can't delete first slot."); return; } + if (slot == 30 && SAV.PartyCount == 1 && !HaX) { Util.Alert("Can't delete first slot."); return; } int offset = getPKXOffset(slot); if (offset < 0) @@ -3539,8 +2652,13 @@ private void clickDelete(object sender, EventArgs e) return; } if (slot >= 30 && slot < 36) // Party - { SAV.setPartySlot(SAV.BlankPKM, offset); setParty(); return; } - if (slot < 30 || (slot >= 36 && slot < 42 && DEV_Ability.Enabled)) + { + SAV.deletePartySlot(slot-30); + setParty(); + getSlotColor(slot, Properties.Resources.slotDel); + return; + } + if (slot < 30 || HaX && slot >= 36 && slot < 42) { SAV.setStoredSlot(SAV.BlankPKM, getPKXOffset(slot)); } else return; @@ -3551,11 +2669,15 @@ private void clickClone(object sender, EventArgs e) { if (getSlot(sender) > 30) return; // only perform action if cloning to boxes if (!verifiedPKM()) return; // don't copy garbage to the box - - if (Util.Prompt(MessageBoxButtons.YesNo, $"Clone Pokemon from Editing Tabs to all slots in {CB_BoxSelect.Text}?") != DialogResult.Yes) + + PKM pk; + if (Util.Prompt(MessageBoxButtons.YesNo, $"Clone Pokemon from Editing Tabs to all slots in {CB_BoxSelect.Text}?") == DialogResult.Yes) + pk = preparePKM(); + else if (Util.Prompt(MessageBoxButtons.YesNo, $"Delete all Pokemon in {CB_BoxSelect.Text}?") == DialogResult.Yes) + pk = SAV.BlankPKM; + else return; - PKM pk = preparePKM(); for (int i = 0; i < 30; i++) // set to every slot in box { SAV.setStoredSlot(pk, getPKXOffset(i)); @@ -3623,12 +2745,16 @@ private void updateU64(object sender, EventArgs e) // Currently saved Value ulong oldval = 0; - if (tb == TB_GameSync) - oldval = (SAV as SAV6).GameSyncID; - else if (tb == TB_Secure1) - oldval = (SAV as SAV6).Secure1; - else if (tb == TB_Secure2) - oldval = (SAV as SAV6).Secure2; + if (SAV.Generation == 6) + { + SAV6 sav6 = (SAV6) SAV; + if (tb == TB_GameSync) + oldval = sav6.GameSyncID; + else if (tb == TB_Secure1) + oldval = sav6.Secure1; + else if (tb == TB_Secure2) + oldval = sav6.Secure2; + } string filterText = Util.getOnlyHex(tb.Text); @@ -3642,14 +2768,17 @@ private void updateU64(object sender, EventArgs e) // Write final value back to the save ulong newval = Convert.ToUInt64(filterText, 16); - if (newval != oldval) + if (newval == oldval) return; + + if (SAV.Generation == 6) { + SAV6 sav6 = (SAV6) SAV; if (tb == TB_GameSync) - (SAV as SAV6).GameSyncID = newval; + sav6.GameSyncID = newval; else if (tb == TB_Secure1) - (SAV as SAV6).Secure1 = newval; + sav6.Secure1 = newval; else if (tb == TB_Secure2) - (SAV as SAV6).Secure2 = newval; + sav6.Secure2 = newval; SAV.Edited = true; } } @@ -3660,11 +2789,19 @@ private void setParty() PKM[] battle = SAV.BattleBoxData; // Refresh slots if (SAV.HasParty) - for (int i = 0; i < 6; i++) + { + for (int i = 0; i < party.Length; i++) getQuickFiller(SlotPictureBoxes[i + 30], party[i]); + for (int i = party.Length; i < 6; i++) + SlotPictureBoxes[i + 30].Image = null; + } if (SAV.HasBattleBox) - for (int i = 0; i < 6; i++) + { + for (int i = 0; i < battle.Length; i++) getQuickFiller(SlotPictureBoxes[i + 36], battle[i]); + for (int i = battle.Length; i < 6; i++) + SlotPictureBoxes[i + 36].Image = null; + } } private int getPKXOffset(int slot) { @@ -3700,21 +2837,8 @@ public void setPKXBoxes() if (SAV.HasBox) { int boxoffset = SAV.getBoxOffset(CB_BoxSelect.SelectedIndex); - if (SAV.HasBoxWallpapers) - { - int boxbgval = SAV.getBoxWallpaper(CB_BoxSelect.SelectedIndex); - string imagename = ""; - switch (SAV.Generation) - { - case 6: - imagename = "box_wp" + boxbgval.ToString("00"); - if (SAV.ORAS && boxbgval > 16) - imagename += "o"; - break; - } - if (!string.IsNullOrEmpty(imagename)) - PAN_Box.BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(imagename); - } + int boxbgval = SAV.getBoxWallpaper(CB_BoxSelect.SelectedIndex); + PAN_Box.BackgroundImage = BoxWallpaper.getWallpaper(SAV, boxbgval); for (int i = 0; i < 30; i++) getSlotFiller(boxoffset + SAV.SIZE_STORED * i, SlotPictureBoxes[i]); @@ -3964,7 +3088,7 @@ private void B_SaveBoxBin_Click(object sender, EventArgs e) } private bool? getPKMSetOverride() { - var yn = Menu_ModifyPK6.Checked ? "Yes" : "No"; + var yn = Menu_ModifyPKM.Checked ? "Yes" : "No"; DialogResult noSet = Util.Prompt(MessageBoxButtons.YesNoCancel, "Loading overrides:", "Yes - Modify .pk* when set to SAV" + Environment.NewLine + @@ -4032,7 +3156,7 @@ private void B_OpenOPowers_Click(object sender, EventArgs e) 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - }.CopyTo(SAV.Data, (SAV as SAV6).OPower); + }.CopyTo(SAV.Data, ((SAV6) SAV).OPower); } else if (SAV.XY) new SAV_OPower().ShowDialog(); @@ -4052,7 +3176,7 @@ private void B_OUTPasserby_Click(object sender, EventArgs e) return; string result = "PSS List" + Environment.NewLine; string[] headers = { "PSS Data - Friends", "PSS Data - Acquaintances", "PSS Data - Passerby", }; - int offset = (SAV as SAV6).PSS; + int offset = ((SAV6) SAV).PSS; for (int g = 0; g < 3; g++) { result += Environment.NewLine @@ -4109,6 +3233,14 @@ private void B_OpenSecretBase_Click(object sender, EventArgs e) { new SAV_SecretBase().ShowDialog(); } + private void B_LinkInfo_Click(object sender, EventArgs e) + { + new SAV_Link6().ShowDialog(); + } + private void B_CGearSkin_Click(object sender, EventArgs e) + { + new SAV_CGearSkin().ShowDialog(); + } private void B_JPEG_Click(object sender, EventArgs e) { byte[] jpeg = SAV.JPEGData; @@ -4122,89 +3254,108 @@ private void B_JPEG_Click(object sender, EventArgs e) // Save Folder Related private void clickSaveFileName(object sender, EventArgs e) { - string path = detectSaveFile(); + string path = SaveUtil.detectSaveFile(); if (path == null || !File.Exists(path)) return; if (Util.Prompt(MessageBoxButtons.YesNo, "Open save file from the following location?", path) == DialogResult.Yes) openQuick(path); // load save } - private static string detectSaveFile() + + // Drag and drop related functions + private void pbBoxSlot_MouseClick(object sender, MouseEventArgs e) { - string pathSDF = Util.GetSDFLocation(); - string path3DS = Util.get3DSLocation(); - string pathCache = Util.GetCacheFolder(); + if (slotDragDropInProgress) + return; - if (path3DS != null && Directory.Exists(Path.Combine(path3DS, "SaveDataBackup")) && ModifierKeys != Keys.Control) - return Path.Combine(Path.GetPathRoot(path3DS), "SaveDataBackup", "main"); - if (pathSDF != null && ModifierKeys != Keys.Shift) // if we have a result - return Path.Combine(pathSDF, "main"); - if (path3DS != null && Directory.Exists(Path.Combine(Path.GetPathRoot(path3DS), "JKSV", "Saves"))) - return Directory.GetFiles(Path.Combine(Path.GetPathRoot(path3DS), "JKSV", "Saves"), "main", SearchOption.AllDirectories) - .Where(f => SaveUtil.SizeValidSAV6((int)new FileInfo(f).Length)) // filter - .OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault(); - if (Directory.Exists(pathCache)) - return Directory.GetFiles(pathCache).Where(f => SaveUtil.SizeValidSAV6((int)new FileInfo(f).Length)) // filter - .OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault(); - if (File.Exists(Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root", "main")))) // if cgse exists - return Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root", "main")); - - return null; + clickSlot(sender, e); + } + private void pbBoxSlot_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + slotLeftMouseIsDown = false; + if (e.Button == MouseButtons.Right) + slotRightMouseIsDown = false; } - - // Drag & Drop within Box private void pbBoxSlot_MouseDown(object sender, MouseEventArgs e) { - if (e.Button != MouseButtons.Left || e.Clicks != 1) return; - if (ModifierKeys == Keys.Control || ModifierKeys == Keys.Alt || ModifierKeys == Keys.Shift || ModifierKeys == (Keys.Control | Keys.Alt)) - { clickSlot(sender, e); return; } - PictureBox pb = (PictureBox)sender; - if (pb.Image == null) + if (e.Button == MouseButtons.Left) + slotLeftMouseIsDown = true; + if (e.Button == MouseButtons.Right) + slotRightMouseIsDown = true; + } + private void pbBoxSlot_MouseMove(object sender, MouseEventArgs e) + { + if (slotDragDropInProgress) return; - pkm_from_slot = getSlot(sender); - int offset = getPKXOffset(pkm_from_slot); - // Create Temp File to Drag - Cursor.Current = Cursors.Hand; - - // Prepare Data - pkm_from = SAV.getData(offset, SAV.SIZE_STORED); - pkm_from_offset = offset; - - // Make a new file name based off the PID - byte[] dragdata = SAV.decryptPKM(pkm_from); - Array.Resize(ref dragdata, SAV.SIZE_STORED); - PKM pkx = SAV.getPKM(dragdata); - string filename = pkx.FileName; - - // Make File - string newfile = Path.Combine(Path.GetTempPath(), Util.CleanFileName(filename)); - try + if (slotLeftMouseIsDown) { - File.WriteAllBytes(newfile, dragdata); - DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move); + // The goal is to create a temporary PKX file for the underlying Pokemon + // and use that file to perform a drag drop operation. + + // Abort if there is no Pokemon in the given slot. + if (((PictureBox)sender).Image == null) + return; + + // Set flag to prevent re-entering. + slotDragDropInProgress = true; + + slotSourceSlotNumber = getSlot(sender); + int offset = getPKXOffset(slotSourceSlotNumber); + + // Prepare Data + slotPkmSource = SAV.getData(offset, SAV.SIZE_STORED); + slotSourceOffset = offset; + + // Make a new file name based off the PID + byte[] dragdata = SAV.decryptPKM(slotPkmSource); + Array.Resize(ref dragdata, SAV.SIZE_STORED); + PKM pkx = SAV.getPKM(dragdata); + string filename = pkx.FileName; + + // Make File + string newfile = Path.Combine(Path.GetTempPath(), Util.CleanFileName(filename)); + try + { + File.WriteAllBytes(newfile, dragdata); + // Thread Blocks on DoDragDrop + ((PictureBox)sender).DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move); + } + catch (Exception x) + { + Util.Error("Drag & Drop Error:", x.ToString()); + } + slotSourceOffset = 0; + + // Browser apps need time to load data since the file isn't moved to a location on the user's local storage. + // Tested 10ms -> too quick, 100ms was fine. 500ms should be safe? + new Thread(() => + { + Thread.Sleep(500); + if (File.Exists(newfile)) + File.Delete(newfile); + }).Start(); } - catch (ArgumentException x) - { Util.Error("Drag & Drop Error:", x.ToString()); } - File.Delete(newfile); - pkm_from_offset = 0; } private void pbBoxSlot_DragDrop(object sender, DragEventArgs e) { - int slot = getSlot(sender); - int offset = getPKXOffset(slot); + int slotDestinationSlotNumber = getSlot(sender); + int slotDestinationOffset = getPKXOffset(slotDestinationSlotNumber); // Check for In-Dropped files (PKX,SAV,ETC) string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); if (Directory.Exists(files[0])) { loadBoxesFromDB(files[0]); return; } - if (pkm_from_offset == 0) + if (slotSourceOffset == 0) { if (files.Length <= 0) return; string file = files[0]; - if (!PKX.getIsPKM(new FileInfo(file).Length)) + FileInfo fi = new FileInfo(file); + if (!PKX.getIsPKM(fi.Length) && !MysteryGift.getIsMysteryGift(fi.Length)) { openQuick(file); return; } byte[] data = File.ReadAllBytes(file); - PKM temp = PKMConverter.getPKMfromBytes(data); + MysteryGift mg = MysteryGift.getMysteryGift(data, fi.Extension); + PKM temp = mg != null ? mg.convertToPKM(SAV) : PKMConverter.getPKMfromBytes(data); string c; PKM pk = PKMConverter.convertToFormat(temp, SAV.Generation, out c); @@ -4219,36 +3370,45 @@ private void pbBoxSlot_DragDrop(object sender, DragEventArgs e) { Console.WriteLine(c); Console.WriteLine(concat); return; } } - SAV.setStoredSlot(pk, offset); - getQuickFiller(SlotPictureBoxes[slot], pk); - getSlotColor(slot, Properties.Resources.slotSet); + SAV.setStoredSlot(pk, slotDestinationOffset); + getQuickFiller(SlotPictureBoxes[slotDestinationSlotNumber], pk); + getSlotColor(slotDestinationSlotNumber, Properties.Resources.slotSet); Console.WriteLine(c); } else { - if (ModifierKeys == Keys.Alt && slot > -1) // overwrite delete old slot + PKM pkz = SAV.getStoredSlot(slotSourceOffset); + if (ModifierKeys == Keys.Alt && slotDestinationSlotNumber > -1) // overwrite delete old slot { // Clear from slot - getQuickFiller(SlotPictureBoxes[pkm_from_slot], SAV.BlankPKM); // picturebox - SAV.setStoredSlot(SAV.BlankPKM, pkm_from_offset); // savefile + getQuickFiller(SlotPictureBoxes[slotSourceSlotNumber], SAV.BlankPKM); // picturebox + SAV.setStoredSlot(SAV.BlankPKM, slotSourceOffset); // savefile } - else if (ModifierKeys != Keys.Control && slot > -1) + else if (ModifierKeys != Keys.Control && slotDestinationSlotNumber > -1) { - // Load data from destination - PKM pk = SAV.getStoredSlot(offset); + if (((PictureBox)sender).Image != null) + { + // Load data from destination + PKM pk = SAV.getStoredSlot(slotDestinationOffset); - // Swap slot picture - getQuickFiller(SlotPictureBoxes[pkm_from_slot], pk); + // Set destination pokemon image to source picture box + getQuickFiller(SlotPictureBoxes[slotSourceSlotNumber], pk); - // Swap slot data to source - SAV.setStoredSlot(pk, pkm_from_offset); + // Set destination pokemon data to source slot + SAV.setStoredSlot(pk, slotSourceOffset); + } + else + { + // Set blank to source slot + SAV.setStoredSlot(SAV.BlankPKM, slotSourceOffset); + SlotPictureBoxes[slotSourceSlotNumber].Image = null; + } } - // Copy from temp slot to new. - SAV.setStoredSlot(pkm_from, offset); - PKM pkz = SAV.getPKM(SAV.decryptPKM(pkm_from)); - getQuickFiller(SlotPictureBoxes[slot], pkz); + // Copy from temp to destination slot. + SAV.setStoredSlot(pkz, slotDestinationOffset); + getQuickFiller(SlotPictureBoxes[slotDestinationSlotNumber], pkz); - pkm_from_offset = 0; // Clear offset value + slotSourceOffset = 0; // Clear offset value } } private void pbBoxSlot_DragEnter(object sender, DragEventArgs e) @@ -4258,10 +3418,22 @@ private void pbBoxSlot_DragEnter(object sender, DragEventArgs e) else if (e.Data != null) // within e.Effect = DragDropEffects.Move; } + private void pbBoxSlot_QueryContinueDrag(object sender, QueryContinueDragEventArgs e) + { + if (e.Action == DragAction.Cancel || e.Action == DragAction.Drop) + { + slotLeftMouseIsDown = false; + slotRightMouseIsDown = false; + slotDragDropInProgress = false; + } + } - private byte[] pkm_from; - private int pkm_from_offset; - private int pkm_from_slot = -1; + private static bool slotLeftMouseIsDown = false; + private static bool slotRightMouseIsDown = false; + private static bool slotDragDropInProgress = false; + private byte[] slotPkmSource; + private int slotSourceOffset; + private int slotSourceSlotNumber = -1; #endregion } } diff --git a/PKX/f1-Main.resx b/MainWindow/Main.resx similarity index 87% rename from PKX/f1-Main.resx rename to MainWindow/Main.resx index fc34abff2..4916aa9d4 100644 --- a/PKX/f1-Main.resx +++ b/MainWindow/Main.resx @@ -237,378 +237,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - @@ -662,18 +290,6 @@ True - - True - - - True - - - True - - - True - True @@ -937,30 +553,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAeZJREFUOE+1 @@ -1083,63 +675,9 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True - - True - - - True - - - True - - - True - True @@ -1152,21 +690,6 @@ True - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1318,45 +841,12 @@ N5EOGBgAEVY/pv9ltCoAAAAASUVORK5CYII= - - True - True True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -1396,108 +886,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -1603,42 +991,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAG8AAACgCAYAAAACezIBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1752,24 +1104,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAG8AAACgCAYAAAACezIBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1840,54 +1174,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -1927,18 +1213,12 @@ True - - True - True True - - True - True @@ -1948,36 +1228,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -2011,9 +1261,6 @@ True - - True - True @@ -2056,46 +1303,10 @@ True - + True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - + True diff --git a/MainWindow/MainPK3.cs b/MainWindow/MainPK3.cs new file mode 100644 index 000000000..c95b41c68 --- /dev/null +++ b/MainWindow/MainPK3.cs @@ -0,0 +1,194 @@ +using System; +using System.Drawing; + +namespace PKHeX +{ + public partial class Main + { + private void populateFieldsPK3() + { + PK3 pk3 = pkm as PK3; + if (pk3 == null) + return; + + // Do first + pk3.Stat_Level = PKX.getLevel(pk3.Species, pk3.EXP); + if (pk3.Stat_Level == 100) + pk3.EXP = PKX.getEXP(pk3.Stat_Level, pk3.Species); + + CB_Species.SelectedValue = pk3.Species; + TB_Level.Text = pk3.Stat_Level.ToString(); + TB_EXP.Text = pk3.EXP.ToString(); + + // Load rest + CHK_Fateful.Checked = pk3.FatefulEncounter; + CHK_IsEgg.Checked = pk3.IsEgg; + CHK_Nicknamed.Checked = pk3.IsNicknamed; + Label_OTGender.Text = gendersymbols[pk3.OT_Gender]; + Label_OTGender.ForeColor = pk3.OT_Gender == 1 ? Color.Red : Color.Blue; + TB_PID.Text = pk3.PID.ToString("X8"); + CB_HeldItem.SelectedValue = pk3.G3Item; + setAbilityList(); + CB_Ability.SelectedIndex = pk3.AbilityNumber > CB_Ability.Items.Count ? 0 : pk3.AbilityNumber; + CB_Nature.SelectedValue = pk3.Nature; + TB_TID.Text = pk3.TID.ToString("00000"); + TB_SID.Text = pk3.SID.ToString("00000"); + TB_Nickname.Text = pk3.Nickname; + TB_OT.Text = pk3.OT_Name; + TB_Friendship.Text = pk3.CurrentFriendship.ToString(); + GB_OT.BackgroundImage = null; + CB_Language.SelectedValue = pk3.Language; + CB_GameOrigin.SelectedValue = pk3.Version; + CB_EncounterType.SelectedValue = pk3.Gen4 ? pk3.EncounterType : 0; + CB_Ball.SelectedValue = pk3.Ball; + + CB_MetLocation.SelectedValue = pk3.Met_Location; + + TB_MetLevel.Text = pk3.Met_Level.ToString(); + + // Reset Label and ComboBox visibility, as well as non-data checked status. + Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk3.PKRS_Strain != 0; + Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk3.PKRS_Days != 0; + + // Set SelectedIndexes for PKRS + CB_PKRSStrain.SelectedIndex = pk3.PKRS_Strain; + CHK_Cured.Checked = pk3.PKRS_Strain > 0 && pk3.PKRS_Days == 0; + CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk3.PKRS_Days); // to strip out bad hacked 'rus + + TB_Cool.Text = pk3.CNT_Cool.ToString(); + TB_Beauty.Text = pk3.CNT_Beauty.ToString(); + TB_Cute.Text = pk3.CNT_Cute.ToString(); + TB_Smart.Text = pk3.CNT_Smart.ToString(); + TB_Tough.Text = pk3.CNT_Tough.ToString(); + TB_Sheen.Text = pk3.CNT_Sheen.ToString(); + + TB_HPIV.Text = pk3.IV_HP.ToString(); + TB_ATKIV.Text = pk3.IV_ATK.ToString(); + TB_DEFIV.Text = pk3.IV_DEF.ToString(); + TB_SPEIV.Text = pk3.IV_SPE.ToString(); + TB_SPAIV.Text = pk3.IV_SPA.ToString(); + TB_SPDIV.Text = pk3.IV_SPD.ToString(); + CB_HPType.SelectedValue = pk3.HPType; + + TB_HPEV.Text = pk3.EV_HP.ToString(); + TB_ATKEV.Text = pk3.EV_ATK.ToString(); + TB_DEFEV.Text = pk3.EV_DEF.ToString(); + TB_SPEEV.Text = pk3.EV_SPE.ToString(); + TB_SPAEV.Text = pk3.EV_SPA.ToString(); + TB_SPDEV.Text = pk3.EV_SPD.ToString(); + + CB_Move1.SelectedValue = pk3.Move1; + CB_Move2.SelectedValue = pk3.Move2; + CB_Move3.SelectedValue = pk3.Move3; + CB_Move4.SelectedValue = pk3.Move4; + CB_PPu1.SelectedIndex = pk3.Move1_PPUps; + CB_PPu2.SelectedIndex = pk3.Move2_PPUps; + CB_PPu3.SelectedIndex = pk3.Move3_PPUps; + CB_PPu4.SelectedIndex = pk3.Move4_PPUps; + TB_PP1.Text = pk3.Move1_PP.ToString(); + TB_PP2.Text = pk3.Move2_PP.ToString(); + TB_PP3.Text = pk3.Move3_PP.ToString(); + TB_PP4.Text = pk3.Move4_PP.ToString(); + + // Set Form if count is enough, else cap. + CB_Form.SelectedIndex = CB_Form.Items.Count > pk3.AltForm ? pk3.AltForm : CB_Form.Items.Count - 1; + + // Load Extrabyte Value + TB_ExtraByte.Text = pk3.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); + + updateStats(); + + TB_EXP.Text = pk3.EXP.ToString(); + Label_Gender.Text = gendersymbols[pk3.Gender]; + Label_Gender.ForeColor = pk3.Gender == 2 ? Label_Species.ForeColor : (pk3.Gender == 1 ? Color.Red : Color.Blue); + } + private PKM preparePK3() + { + PK3 pk3 = pkm as PK3; + if (pk3 == null) + return null; + + pk3.Species = Util.getIndex(CB_Species); + pk3.G3Item = Util.getIndex(CB_HeldItem); + pk3.TID = Util.ToInt32(TB_TID.Text); + pk3.SID = Util.ToInt32(TB_SID.Text); + pk3.EXP = Util.ToUInt32(TB_EXP.Text); + pk3.PID = Util.getHEXval(TB_PID.Text); + pk3.AbilityNumber = CB_Ability.SelectedIndex; // 0/1 (stored in IVbits) + + pk3.FatefulEncounter = CHK_Fateful.Checked; + pk3.Gender = PKX.getGender(Label_Gender.Text); + pk3.EV_HP = Util.ToInt32(TB_HPEV.Text); + pk3.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + pk3.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + pk3.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + pk3.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + pk3.EV_SPD = Util.ToInt32(TB_SPDEV.Text); + + pk3.CNT_Cool = Util.ToInt32(TB_Cool.Text); + pk3.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); + pk3.CNT_Cute = Util.ToInt32(TB_Cute.Text); + pk3.CNT_Smart = Util.ToInt32(TB_Smart.Text); + pk3.CNT_Tough = Util.ToInt32(TB_Tough.Text); + pk3.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); + + pk3.PKRS_Days = CB_PKRSDays.SelectedIndex; + pk3.PKRS_Strain = CB_PKRSStrain.SelectedIndex; + pk3.Nickname = TB_Nickname.Text; + pk3.Move1 = Util.getIndex(CB_Move1); + pk3.Move2 = Util.getIndex(CB_Move2); + pk3.Move3 = Util.getIndex(CB_Move3); + pk3.Move4 = Util.getIndex(CB_Move4); + pk3.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; + pk3.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; + pk3.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; + pk3.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; + pk3.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; + pk3.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; + pk3.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; + pk3.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; + + pk3.IV_HP = Util.ToInt32(TB_HPIV.Text); + pk3.IV_ATK = Util.ToInt32(TB_ATKIV.Text); + pk3.IV_DEF = Util.ToInt32(TB_DEFIV.Text); + pk3.IV_SPE = Util.ToInt32(TB_SPEIV.Text); + pk3.IV_SPA = Util.ToInt32(TB_SPAIV.Text); + pk3.IV_SPD = Util.ToInt32(TB_SPDIV.Text); + pk3.IsEgg = CHK_IsEgg.Checked; + pk3.IsNicknamed = CHK_Nicknamed.Checked; + + pk3.OT_Name = TB_OT.Text; + pk3.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); + + pk3.Ball = Util.getIndex(CB_Ball); + pk3.Met_Level = Util.ToInt32(TB_MetLevel.Text); + pk3.OT_Gender = PKX.getGender(Label_OTGender.Text); + pk3.Version = Util.getIndex(CB_GameOrigin); + pk3.Language = Util.getIndex(CB_Language); + + pk3.Met_Location = Util.getIndex(CB_MetLocation); + + // Toss in Party Stats + Array.Resize(ref pk3.Data, pk3.SIZE_PARTY); + pk3.Stat_Level = Util.ToInt32(TB_Level.Text); + pk3.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); + pk3.Stat_HPMax = Util.ToInt32(Stat_HP.Text); + pk3.Stat_ATK = Util.ToInt32(Stat_ATK.Text); + pk3.Stat_DEF = Util.ToInt32(Stat_DEF.Text); + pk3.Stat_SPE = Util.ToInt32(Stat_SPE.Text); + pk3.Stat_SPA = Util.ToInt32(Stat_SPA.Text); + pk3.Stat_SPD = Util.ToInt32(Stat_SPD.Text); + + if (HaX) + { + pk3.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); + } + + // Fix Moves if a slot is empty + pk3.FixMoves(); + + pk3.RefreshChecksum(); + return pk3; + } + } +} diff --git a/MainWindow/MainPK4.cs b/MainWindow/MainPK4.cs new file mode 100644 index 000000000..697193b01 --- /dev/null +++ b/MainWindow/MainPK4.cs @@ -0,0 +1,246 @@ +using System; +using System.Drawing; + +namespace PKHeX +{ + public partial class Main + { + private void populateFieldsPK4() + { + PK4 pk4 = pkm as PK4; + if (pk4 == null) + return; + + // Do first + pk4.Stat_Level = PKX.getLevel(pk4.Species, pk4.EXP); + if (pk4.Stat_Level == 100) + pk4.EXP = PKX.getEXP(pk4.Stat_Level, pk4.Species); + + CB_Species.SelectedValue = pk4.Species; + TB_Level.Text = pk4.Stat_Level.ToString(); + TB_EXP.Text = pk4.EXP.ToString(); + + // Load rest + CHK_Fateful.Checked = pk4.FatefulEncounter; + CHK_IsEgg.Checked = pk4.IsEgg; + CHK_Nicknamed.Checked = pk4.IsNicknamed; + Label_OTGender.Text = gendersymbols[pk4.OT_Gender]; + Label_OTGender.ForeColor = pk4.OT_Gender == 1 ? Color.Red : Color.Blue; + TB_PID.Text = pk4.PID.ToString("X8"); + CB_HeldItem.SelectedValue = pk4.HeldItem; + setAbilityList(); + CB_Nature.SelectedValue = pk4.Nature; + TB_TID.Text = pk4.TID.ToString("00000"); + TB_SID.Text = pk4.SID.ToString("00000"); + TB_Nickname.Text = pk4.Nickname; + TB_OT.Text = pk4.OT_Name; + TB_Friendship.Text = pk4.CurrentFriendship.ToString(); + GB_OT.BackgroundImage = null; + CB_Language.SelectedValue = pk4.Language; + CB_GameOrigin.SelectedValue = pk4.Version; + CB_EncounterType.SelectedValue = pk4.Gen4 ? pk4.EncounterType : 0; + CB_Ball.SelectedValue = pk4.Ball; + + if (pk4.Met_Month == 0) { pk4.Met_Month = 1; } + if (pk4.Met_Day == 0) { pk4.Met_Day = 1; } + try { CAL_MetDate.Value = new DateTime(pk4.Met_Year + 2000, pk4.Met_Month, pk4.Met_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + + if (pk4.Egg_Location != 0) + { + // Was obtained initially as an egg. + CHK_AsEgg.Checked = true; + GB_EggConditions.Enabled = true; + + CB_EggLocation.SelectedValue = pk4.Egg_Location; + try { CAL_EggDate.Value = new DateTime(pk4.Egg_Year + 2000, pk4.Egg_Month, pk4.Egg_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + } + else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } + + CB_MetLocation.SelectedValue = pk4.Met_Location; + + TB_MetLevel.Text = pk4.Met_Level.ToString(); + + // Reset Label and ComboBox visibility, as well as non-data checked status. + Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk4.PKRS_Strain != 0; + Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk4.PKRS_Days != 0; + + // Set SelectedIndexes for PKRS + CB_PKRSStrain.SelectedIndex = pk4.PKRS_Strain; + CHK_Cured.Checked = pk4.PKRS_Strain > 0 && pk4.PKRS_Days == 0; + CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk4.PKRS_Days); // to strip out bad hacked 'rus + + TB_Cool.Text = pk4.CNT_Cool.ToString(); + TB_Beauty.Text = pk4.CNT_Beauty.ToString(); + TB_Cute.Text = pk4.CNT_Cute.ToString(); + TB_Smart.Text = pk4.CNT_Smart.ToString(); + TB_Tough.Text = pk4.CNT_Tough.ToString(); + TB_Sheen.Text = pk4.CNT_Sheen.ToString(); + + TB_HPIV.Text = pk4.IV_HP.ToString(); + TB_ATKIV.Text = pk4.IV_ATK.ToString(); + TB_DEFIV.Text = pk4.IV_DEF.ToString(); + TB_SPEIV.Text = pk4.IV_SPE.ToString(); + TB_SPAIV.Text = pk4.IV_SPA.ToString(); + TB_SPDIV.Text = pk4.IV_SPD.ToString(); + CB_HPType.SelectedValue = pk4.HPType; + + TB_HPEV.Text = pk4.EV_HP.ToString(); + TB_ATKEV.Text = pk4.EV_ATK.ToString(); + TB_DEFEV.Text = pk4.EV_DEF.ToString(); + TB_SPEEV.Text = pk4.EV_SPE.ToString(); + TB_SPAEV.Text = pk4.EV_SPA.ToString(); + TB_SPDEV.Text = pk4.EV_SPD.ToString(); + + CB_Move1.SelectedValue = pk4.Move1; + CB_Move2.SelectedValue = pk4.Move2; + CB_Move3.SelectedValue = pk4.Move3; + CB_Move4.SelectedValue = pk4.Move4; + CB_PPu1.SelectedIndex = pk4.Move1_PPUps; + CB_PPu2.SelectedIndex = pk4.Move2_PPUps; + CB_PPu3.SelectedIndex = pk4.Move3_PPUps; + CB_PPu4.SelectedIndex = pk4.Move4_PPUps; + TB_PP1.Text = pk4.Move1_PP.ToString(); + TB_PP2.Text = pk4.Move2_PP.ToString(); + TB_PP3.Text = pk4.Move3_PP.ToString(); + TB_PP4.Text = pk4.Move4_PP.ToString(); + + // Set Form if count is enough, else cap. + CB_Form.SelectedIndex = CB_Form.Items.Count > pk4.AltForm ? pk4.AltForm : CB_Form.Items.Count - 1; + + // Load Extrabyte Value + TB_ExtraByte.Text = pk4.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); + + updateStats(); + + TB_EXP.Text = pk4.EXP.ToString(); + Label_Gender.Text = gendersymbols[pk4.Gender]; + Label_Gender.ForeColor = pk4.Gender == 2 ? Label_Species.ForeColor : (pk4.Gender == 1 ? Color.Red : Color.Blue); + + if (HaX) + DEV_Ability.SelectedValue = pk4.Ability; + else + { + int[] abils = SAV.Personal.getAbilities(pk4.Species, pk4.AltForm); + int abil = Array.IndexOf(abils, pk4.Ability); + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; + } + } + private PKM preparePK4() + { + PK4 pk4 = pkm as PK4; + if (pk4 == null) + return null; + + pk4.Species = Util.getIndex(CB_Species); + pk4.HeldItem = Util.getIndex(CB_HeldItem); + pk4.TID = Util.ToInt32(TB_TID.Text); + pk4.SID = Util.ToInt32(TB_SID.Text); + pk4.EXP = Util.ToUInt32(TB_EXP.Text); + pk4.PID = Util.getHEXval(TB_PID.Text); + pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + + pk4.FatefulEncounter = CHK_Fateful.Checked; + pk4.Gender = PKX.getGender(Label_Gender.Text); + pk4.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; + pk4.EV_HP = Util.ToInt32(TB_HPEV.Text); + pk4.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + pk4.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + pk4.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + pk4.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + pk4.EV_SPD = Util.ToInt32(TB_SPDEV.Text); + + pk4.CNT_Cool = Util.ToInt32(TB_Cool.Text); + pk4.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); + pk4.CNT_Cute = Util.ToInt32(TB_Cute.Text); + pk4.CNT_Smart = Util.ToInt32(TB_Smart.Text); + pk4.CNT_Tough = Util.ToInt32(TB_Tough.Text); + pk4.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); + + pk4.PKRS_Days = CB_PKRSDays.SelectedIndex; + pk4.PKRS_Strain = CB_PKRSStrain.SelectedIndex; + pk4.Nickname = TB_Nickname.Text; + pk4.Move1 = Util.getIndex(CB_Move1); + pk4.Move2 = Util.getIndex(CB_Move2); + pk4.Move3 = Util.getIndex(CB_Move3); + pk4.Move4 = Util.getIndex(CB_Move4); + pk4.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; + pk4.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; + pk4.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; + pk4.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; + pk4.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; + pk4.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; + pk4.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; + pk4.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; + + pk4.IV_HP = Util.ToInt32(TB_HPIV.Text); + pk4.IV_ATK = Util.ToInt32(TB_ATKIV.Text); + pk4.IV_DEF = Util.ToInt32(TB_DEFIV.Text); + pk4.IV_SPE = Util.ToInt32(TB_SPEIV.Text); + pk4.IV_SPA = Util.ToInt32(TB_SPAIV.Text); + pk4.IV_SPD = Util.ToInt32(TB_SPDIV.Text); + pk4.IsEgg = CHK_IsEgg.Checked; + pk4.IsNicknamed = CHK_Nicknamed.Checked; + + pk4.OT_Name = TB_OT.Text; + pk4.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); + + pk4.Ball = Util.getIndex(CB_Ball); + pk4.Met_Level = Util.ToInt32(TB_MetLevel.Text); + pk4.OT_Gender = PKX.getGender(Label_OTGender.Text); + pk4.EncounterType = Util.getIndex(CB_EncounterType); + pk4.Version = Util.getIndex(CB_GameOrigin); + pk4.Language = Util.getIndex(CB_Language); + + // Default Dates + int egg_year = 2000; + int egg_month = 0; + int egg_day = 0; + int egg_location = 0; + if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. + { + egg_year = CAL_EggDate.Value.Year; + egg_month = CAL_EggDate.Value.Month; + egg_day = CAL_EggDate.Value.Day; + egg_location = Util.getIndex(CB_EggLocation); + } + // Egg Met Data + pk4.Egg_Year = egg_year - 2000; + pk4.Egg_Month = egg_month; + pk4.Egg_Day = egg_day; + pk4.Egg_Location = egg_location; + // Met Data + pk4.Met_Year = CAL_MetDate.Value.Year - 2000; + pk4.Met_Month = CAL_MetDate.Value.Month; + pk4.Met_Day = CAL_MetDate.Value.Day; + pk4.Met_Location = Util.getIndex(CB_MetLocation); + + if (pk4.IsEgg && pk4.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! + pk4.Met_Year = pk4.Met_Month = pk4.Met_Day = 0; + + // Toss in Party Stats + Array.Resize(ref pk4.Data, pk4.SIZE_PARTY); + pk4.Stat_Level = Util.ToInt32(TB_Level.Text); + pk4.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); + pk4.Stat_HPMax = Util.ToInt32(Stat_HP.Text); + pk4.Stat_ATK = Util.ToInt32(Stat_ATK.Text); + pk4.Stat_DEF = Util.ToInt32(Stat_DEF.Text); + pk4.Stat_SPE = Util.ToInt32(Stat_SPE.Text); + pk4.Stat_SPA = Util.ToInt32(Stat_SPA.Text); + pk4.Stat_SPD = Util.ToInt32(Stat_SPD.Text); + + if (HaX) + { + pk4.Ability = (byte)Util.getIndex(DEV_Ability); + pk4.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); + } + + // Fix Moves if a slot is empty + pk4.FixMoves(); + + pk4.RefreshChecksum(); + return pk4; + } + } +} diff --git a/MainWindow/MainPK5.cs b/MainWindow/MainPK5.cs new file mode 100644 index 000000000..15f674aab --- /dev/null +++ b/MainWindow/MainPK5.cs @@ -0,0 +1,259 @@ +using System; +using System.Drawing; + +namespace PKHeX +{ + public partial class Main + { + private void populateFieldsPK5() + { + PK5 pk5 = pkm as PK5; + if (pk5 == null) + return; + + // Do first + pk5.Stat_Level = PKX.getLevel(pk5.Species, pk5.EXP); + if (pk5.Stat_Level == 100) + pk5.EXP = PKX.getEXP(pk5.Stat_Level, pk5.Species); + + CB_Species.SelectedValue = pk5.Species; + TB_Level.Text = pk5.Stat_Level.ToString(); + TB_EXP.Text = pk5.EXP.ToString(); + + // Load rest + CHK_Fateful.Checked = pk5.FatefulEncounter; + CHK_IsEgg.Checked = pk5.IsEgg; + CHK_Nicknamed.Checked = pk5.IsNicknamed; + Label_OTGender.Text = gendersymbols[pk5.OT_Gender]; + Label_OTGender.ForeColor = pk5.OT_Gender == 1 ? Color.Red : Color.Blue; + TB_PID.Text = pk5.PID.ToString("X8"); + CB_HeldItem.SelectedValue = pk5.HeldItem; + setAbilityList(); + CB_Nature.SelectedValue = pk5.Nature; + TB_TID.Text = pk5.TID.ToString("00000"); + TB_SID.Text = pk5.SID.ToString("00000"); + TB_Nickname.Text = pk5.Nickname; + TB_OT.Text = pk5.OT_Name; + TB_Friendship.Text = pk5.CurrentFriendship.ToString(); + if (pk5.CurrentHandler == 1) // HT + { + GB_nOT.BackgroundImage = mixedHighlight; + GB_OT.BackgroundImage = null; + } + else // = 0 + { + GB_OT.BackgroundImage = mixedHighlight; + GB_nOT.BackgroundImage = null; + } + CB_Language.SelectedValue = pk5.Language; + CB_GameOrigin.SelectedValue = pk5.Version; + CB_EncounterType.SelectedValue = pk5.Gen4 ? pk5.EncounterType : 0; + CB_Ball.SelectedValue = pk5.Ball; + + if (pk5.Met_Month == 0) { pk5.Met_Month = 1; } + if (pk5.Met_Day == 0) { pk5.Met_Day = 1; } + try { CAL_MetDate.Value = new DateTime(pk5.Met_Year + 2000, pk5.Met_Month, pk5.Met_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + + if (pk5.Egg_Location != 0) + { + // Was obtained initially as an egg. + CHK_AsEgg.Checked = true; + GB_EggConditions.Enabled = true; + + CB_EggLocation.SelectedValue = pk5.Egg_Location; + try { CAL_EggDate.Value = new DateTime(pk5.Egg_Year + 2000, pk5.Egg_Month, pk5.Egg_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + } + else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } + + CB_MetLocation.SelectedValue = pk5.Met_Location; + + TB_MetLevel.Text = pk5.Met_Level.ToString(); + + // Reset Label and ComboBox visibility, as well as non-data checked status. + Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk5.PKRS_Strain != 0; + Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk5.PKRS_Days != 0; + + // Set SelectedIndexes for PKRS + CB_PKRSStrain.SelectedIndex = pk5.PKRS_Strain; + CHK_Cured.Checked = pk5.PKRS_Strain > 0 && pk5.PKRS_Days == 0; + CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk5.PKRS_Days); // to strip out bad hacked 'rus + + TB_Cool.Text = pk5.CNT_Cool.ToString(); + TB_Beauty.Text = pk5.CNT_Beauty.ToString(); + TB_Cute.Text = pk5.CNT_Cute.ToString(); + TB_Smart.Text = pk5.CNT_Smart.ToString(); + TB_Tough.Text = pk5.CNT_Tough.ToString(); + TB_Sheen.Text = pk5.CNT_Sheen.ToString(); + + TB_HPIV.Text = pk5.IV_HP.ToString(); + TB_ATKIV.Text = pk5.IV_ATK.ToString(); + TB_DEFIV.Text = pk5.IV_DEF.ToString(); + TB_SPEIV.Text = pk5.IV_SPE.ToString(); + TB_SPAIV.Text = pk5.IV_SPA.ToString(); + TB_SPDIV.Text = pk5.IV_SPD.ToString(); + CB_HPType.SelectedValue = pk5.HPType; + + TB_HPEV.Text = pk5.EV_HP.ToString(); + TB_ATKEV.Text = pk5.EV_ATK.ToString(); + TB_DEFEV.Text = pk5.EV_DEF.ToString(); + TB_SPEEV.Text = pk5.EV_SPE.ToString(); + TB_SPAEV.Text = pk5.EV_SPA.ToString(); + TB_SPDEV.Text = pk5.EV_SPD.ToString(); + + CB_Move1.SelectedValue = pk5.Move1; + CB_Move2.SelectedValue = pk5.Move2; + CB_Move3.SelectedValue = pk5.Move3; + CB_Move4.SelectedValue = pk5.Move4; + CB_PPu1.SelectedIndex = pk5.Move1_PPUps; + CB_PPu2.SelectedIndex = pk5.Move2_PPUps; + CB_PPu3.SelectedIndex = pk5.Move3_PPUps; + CB_PPu4.SelectedIndex = pk5.Move4_PPUps; + TB_PP1.Text = pk5.Move1_PP.ToString(); + TB_PP2.Text = pk5.Move2_PP.ToString(); + TB_PP3.Text = pk5.Move3_PP.ToString(); + TB_PP4.Text = pk5.Move4_PP.ToString(); + + // Set Form if count is enough, else cap. + CB_Form.SelectedIndex = CB_Form.Items.Count > pk5.AltForm ? pk5.AltForm : CB_Form.Items.Count - 1; + + // Load Extrabyte Value + TB_ExtraByte.Text = pk5.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); + + updateStats(); + + TB_EXP.Text = pk5.EXP.ToString(); + Label_Gender.Text = gendersymbols[pk5.Gender]; + Label_Gender.ForeColor = pk5.Gender == 2 ? Label_Species.ForeColor : (pk5.Gender == 1 ? Color.Red : Color.Blue); + + if (HaX) + DEV_Ability.SelectedValue = pk5.Ability; + else if (pk5.HiddenAbility) + CB_Ability.SelectedIndex = CB_Ability.Items.Count - 1; + else + { + int[] abils = SAV.Personal.getAbilities(pk5.Species, pk5.AltForm); + int abil = Array.IndexOf(abils, pk5.Ability); + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; + } + } + private PKM preparePK5() + { + PK5 pk5 = pkm as PK5; + if (pk5 == null) + return null; + + pk5.Species = Util.getIndex(CB_Species); + pk5.HeldItem = Util.getIndex(CB_HeldItem); + pk5.TID = Util.ToInt32(TB_TID.Text); + pk5.SID = Util.ToInt32(TB_SID.Text); + pk5.EXP = Util.ToUInt32(TB_EXP.Text); + pk5.PID = Util.getHEXval(TB_PID.Text); + pk5.Ability = (byte)Util.getIndex(DEV_Ability); + pk5.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + + pk5.Nature = (byte)Util.getIndex(CB_Nature); + pk5.FatefulEncounter = CHK_Fateful.Checked; + pk5.Gender = PKX.getGender(Label_Gender.Text); + pk5.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; + pk5.EV_HP = Util.ToInt32(TB_HPEV.Text); + pk5.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + pk5.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + pk5.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + pk5.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + pk5.EV_SPD = Util.ToInt32(TB_SPDEV.Text); + + pk5.CNT_Cool = Util.ToInt32(TB_Cool.Text); + pk5.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); + pk5.CNT_Cute = Util.ToInt32(TB_Cute.Text); + pk5.CNT_Smart = Util.ToInt32(TB_Smart.Text); + pk5.CNT_Tough = Util.ToInt32(TB_Tough.Text); + pk5.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); + + pk5.PKRS_Days = CB_PKRSDays.SelectedIndex; + pk5.PKRS_Strain = CB_PKRSStrain.SelectedIndex; + pk5.Nickname = TB_Nickname.Text; + pk5.Move1 = Util.getIndex(CB_Move1); + pk5.Move2 = Util.getIndex(CB_Move2); + pk5.Move3 = Util.getIndex(CB_Move3); + pk5.Move4 = Util.getIndex(CB_Move4); + pk5.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; + pk5.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; + pk5.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; + pk5.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; + pk5.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; + pk5.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; + pk5.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; + pk5.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; + + pk5.IV_HP = Util.ToInt32(TB_HPIV.Text); + pk5.IV_ATK = Util.ToInt32(TB_ATKIV.Text); + pk5.IV_DEF = Util.ToInt32(TB_DEFIV.Text); + pk5.IV_SPE = Util.ToInt32(TB_SPEIV.Text); + pk5.IV_SPA = Util.ToInt32(TB_SPAIV.Text); + pk5.IV_SPD = Util.ToInt32(TB_SPDIV.Text); + pk5.IsEgg = CHK_IsEgg.Checked; + pk5.IsNicknamed = CHK_Nicknamed.Checked; + + pk5.OT_Name = TB_OT.Text; + pk5.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); + + // Default Dates + int egg_year = 2000; + int egg_month = 0; + int egg_day = 0; + int egg_location = 0; + if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. + { + egg_year = CAL_EggDate.Value.Year; + egg_month = CAL_EggDate.Value.Month; + egg_day = CAL_EggDate.Value.Day; + egg_location = Util.getIndex(CB_EggLocation); + } + // Egg Met Data + pk5.Egg_Year = egg_year - 2000; + pk5.Egg_Month = egg_month; + pk5.Egg_Day = egg_day; + pk5.Egg_Location = egg_location; + // Met Data + pk5.Met_Year = CAL_MetDate.Value.Year - 2000; + pk5.Met_Month = CAL_MetDate.Value.Month; + pk5.Met_Day = CAL_MetDate.Value.Day; + pk5.Met_Location = Util.getIndex(CB_MetLocation); + + if (pk5.IsEgg && pk5.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! + pk5.Met_Year = pk5.Met_Month = pk5.Met_Day = 0; + + pk5.Ball = Util.getIndex(CB_Ball); + pk5.Met_Level = Util.ToInt32(TB_MetLevel.Text); + pk5.OT_Gender = PKX.getGender(Label_OTGender.Text); + pk5.EncounterType = Util.getIndex(CB_EncounterType); + pk5.Version = Util.getIndex(CB_GameOrigin); + pk5.Language = Util.getIndex(CB_Language); + + // Toss in Party Stats + Array.Resize(ref pk5.Data, pk5.SIZE_PARTY); + pk5.Stat_Level = Util.ToInt32(TB_Level.Text); + pk5.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); + pk5.Stat_HPMax = Util.ToInt32(Stat_HP.Text); + pk5.Stat_ATK = Util.ToInt32(Stat_ATK.Text); + pk5.Stat_DEF = Util.ToInt32(Stat_DEF.Text); + pk5.Stat_SPE = Util.ToInt32(Stat_SPE.Text); + pk5.Stat_SPA = Util.ToInt32(Stat_SPA.Text); + pk5.Stat_SPD = Util.ToInt32(Stat_SPD.Text); + + if (HaX) + { + pk5.Ability = (byte)Util.getIndex(DEV_Ability); + pk5.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); + } + + // Fix Moves if a slot is empty + pk5.FixMoves(); + + pk5.RefreshChecksum(); + return pk5; + } + } +} diff --git a/MainWindow/MainPK6.cs b/MainWindow/MainPK6.cs new file mode 100644 index 000000000..ced541a41 --- /dev/null +++ b/MainWindow/MainPK6.cs @@ -0,0 +1,341 @@ +using System; +using System.Drawing; + +namespace PKHeX +{ + public partial class Main + { + private void populateFieldsPK6() + { + PK6 pk6 = pkm as PK6; + if (pk6 == null) + return; + + // Do first + pk6.Stat_Level = PKX.getLevel(pk6.Species, pk6.EXP); + if (pk6.Stat_Level == 100) + pk6.EXP = PKX.getEXP(pk6.Stat_Level, pk6.Species); + + CB_Species.SelectedValue = pk6.Species; + TB_Level.Text = pk6.Stat_Level.ToString(); + TB_EXP.Text = pk6.EXP.ToString(); + + // Load rest + TB_EC.Text = pk6.EncryptionConstant.ToString("X8"); + CHK_Fateful.Checked = pk6.FatefulEncounter; + CHK_IsEgg.Checked = pk6.IsEgg; + CHK_Nicknamed.Checked = pk6.IsNicknamed; + Label_OTGender.Text = gendersymbols[pk6.OT_Gender]; + Label_OTGender.ForeColor = pk6.OT_Gender == 1 ? Color.Red : Color.Blue; + TB_PID.Text = pk6.PID.ToString("X8"); + CB_HeldItem.SelectedValue = pk6.HeldItem; + setAbilityList(); + TB_AbilityNumber.Text = pk6.AbilityNumber.ToString(); + CB_Ability.SelectedIndex = pk6.AbilityNumber < 6 ? pk6.AbilityNumber >> 1 : 0; // with some simple error handling + CB_Nature.SelectedValue = pk6.Nature; + TB_TID.Text = pk6.TID.ToString("00000"); + TB_SID.Text = pk6.SID.ToString("00000"); + TB_Nickname.Text = pk6.Nickname; + TB_OT.Text = pk6.OT_Name; + TB_OTt2.Text = pk6.HT_Name; + TB_Friendship.Text = pk6.CurrentFriendship.ToString(); + if (pk6.CurrentHandler == 1) // HT + { + GB_nOT.BackgroundImage = mixedHighlight; + GB_OT.BackgroundImage = null; + } + else // = 0 + { + GB_OT.BackgroundImage = mixedHighlight; + GB_nOT.BackgroundImage = null; + } + CB_Language.SelectedValue = pk6.Language; + CB_Country.SelectedValue = pk6.Country; + CB_SubRegion.SelectedValue = pk6.Region; + CB_3DSReg.SelectedValue = pk6.ConsoleRegion; + CB_GameOrigin.SelectedValue = pk6.Version; + CB_EncounterType.SelectedValue = pk6.Gen4 ? pk6.EncounterType : 0; + CB_Ball.SelectedValue = pk6.Ball; + + if (pk6.Met_Month == 0) { pk6.Met_Month = 1; } + if (pk6.Met_Day == 0) { pk6.Met_Day = 1; } + try { CAL_MetDate.Value = new DateTime(pk6.Met_Year + 2000, pk6.Met_Month, pk6.Met_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + + if (pk6.Egg_Location != 0) + { + // Was obtained initially as an egg. + CHK_AsEgg.Checked = true; + GB_EggConditions.Enabled = true; + + CB_EggLocation.SelectedValue = pk6.Egg_Location; + try { CAL_EggDate.Value = new DateTime(pk6.Egg_Year + 2000, pk6.Egg_Month, pk6.Egg_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + } + else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } + + CB_MetLocation.SelectedValue = pk6.Met_Location; + + // Set CT Gender to None if no CT, else set to gender symbol. + Label_CTGender.Text = pk6.HT_Name == "" ? "" : gendersymbols[pk6.HT_Gender % 2]; + Label_CTGender.ForeColor = pk6.HT_Gender == 1 ? Color.Red : Color.Blue; + + TB_MetLevel.Text = pk6.Met_Level.ToString(); + + // Reset Label and ComboBox visibility, as well as non-data checked status. + Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk6.PKRS_Strain != 0; + Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk6.PKRS_Days != 0; + + // Set SelectedIndexes for PKRS + CB_PKRSStrain.SelectedIndex = pk6.PKRS_Strain; + CHK_Cured.Checked = pk6.PKRS_Strain > 0 && pk6.PKRS_Days == 0; + CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk6.PKRS_Days); // to strip out bad hacked 'rus + + TB_Cool.Text = pk6.CNT_Cool.ToString(); + TB_Beauty.Text = pk6.CNT_Beauty.ToString(); + TB_Cute.Text = pk6.CNT_Cute.ToString(); + TB_Smart.Text = pk6.CNT_Smart.ToString(); + TB_Tough.Text = pk6.CNT_Tough.ToString(); + TB_Sheen.Text = pk6.CNT_Sheen.ToString(); + + TB_HPIV.Text = pk6.IV_HP.ToString(); + TB_ATKIV.Text = pk6.IV_ATK.ToString(); + TB_DEFIV.Text = pk6.IV_DEF.ToString(); + TB_SPEIV.Text = pk6.IV_SPE.ToString(); + TB_SPAIV.Text = pk6.IV_SPA.ToString(); + TB_SPDIV.Text = pk6.IV_SPD.ToString(); + CB_HPType.SelectedValue = pk6.HPType; + + TB_HPEV.Text = pk6.EV_HP.ToString(); + TB_ATKEV.Text = pk6.EV_ATK.ToString(); + TB_DEFEV.Text = pk6.EV_DEF.ToString(); + TB_SPEEV.Text = pk6.EV_SPE.ToString(); + TB_SPAEV.Text = pk6.EV_SPA.ToString(); + TB_SPDEV.Text = pk6.EV_SPD.ToString(); + + CB_Move1.SelectedValue = pk6.Move1; + CB_Move2.SelectedValue = pk6.Move2; + CB_Move3.SelectedValue = pk6.Move3; + CB_Move4.SelectedValue = pk6.Move4; + CB_RelearnMove1.SelectedValue = pk6.RelearnMove1; + CB_RelearnMove2.SelectedValue = pk6.RelearnMove2; + CB_RelearnMove3.SelectedValue = pk6.RelearnMove3; + CB_RelearnMove4.SelectedValue = pk6.RelearnMove4; + CB_PPu1.SelectedIndex = pk6.Move1_PPUps; + CB_PPu2.SelectedIndex = pk6.Move2_PPUps; + CB_PPu3.SelectedIndex = pk6.Move3_PPUps; + CB_PPu4.SelectedIndex = pk6.Move4_PPUps; + TB_PP1.Text = pk6.Move1_PP.ToString(); + TB_PP2.Text = pk6.Move2_PP.ToString(); + TB_PP3.Text = pk6.Move3_PP.ToString(); + TB_PP4.Text = pk6.Move4_PP.ToString(); + + // Set Form if count is enough, else cap. + CB_Form.SelectedIndex = CB_Form.Items.Count > pk6.AltForm ? pk6.AltForm : CB_Form.Items.Count - 1; + + // Load Extrabyte Value + TB_ExtraByte.Text = pk6.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); + + updateStats(); + + TB_EXP.Text = pk6.EXP.ToString(); + Label_Gender.Text = gendersymbols[pk6.Gender]; + Label_Gender.ForeColor = pk6.Gender == 2 ? Label_Species.ForeColor : (pk6.Gender == 1 ? Color.Red : Color.Blue); + + // Highlight the Current Handler + clickGT(pk6.CurrentHandler == 1 ? GB_nOT : GB_OT, null); + + if (HaX) + DEV_Ability.SelectedValue = pk6.Ability; + } + private PKM preparePK6() + { + PK6 pk6 = pkm as PK6; + if (pk6 == null) + return null; + + // Repopulate PK6 with Edited Stuff + if (Util.getIndex(CB_GameOrigin) < 24) + { + uint EC = Util.getHEXval(TB_EC.Text); + uint PID = Util.getHEXval(TB_PID.Text); + uint SID = Util.ToUInt32(TB_TID.Text); + uint TID = Util.ToUInt32(TB_TID.Text); + uint LID = PID & 0xFFFF; + uint HID = PID >> 16; + uint XOR = TID ^ LID ^ SID ^ HID; + + // Ensure we don't have a shiny. + if (XOR >> 3 == 1) // Illegal, fix. (not 16=8) + { + // Keep as shiny, so we have to mod the PID + PID ^= XOR; + TB_PID.Text = PID.ToString("X8"); + TB_EC.Text = PID.ToString("X8"); + } + else if ((XOR ^ 0x8000) >> 3 == 1 && PID != EC) + TB_EC.Text = (PID ^ 0x80000000).ToString("X8"); + else // Not Illegal, no fix. + TB_EC.Text = PID.ToString("X8"); + } + + pk6.EncryptionConstant = Util.getHEXval(TB_EC.Text); + pk6.Checksum = 0; // 0 CHK for now + + // Block A + pk6.Species = Util.getIndex(CB_Species); + pk6.HeldItem = Util.getIndex(CB_HeldItem); + pk6.TID = Util.ToInt32(TB_TID.Text); + pk6.SID = Util.ToInt32(TB_SID.Text); + pk6.EXP = Util.ToUInt32(TB_EXP.Text); + pk6.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + pk6.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number + // pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag) + pk6.PID = Util.getHEXval(TB_PID.Text); + pk6.Nature = (byte)Util.getIndex(CB_Nature); + pk6.FatefulEncounter = CHK_Fateful.Checked; + pk6.Gender = PKX.getGender(Label_Gender.Text); + pk6.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; + pk6.EV_HP = Util.ToInt32(TB_HPEV.Text); // EVs + pk6.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + pk6.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + pk6.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + pk6.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + pk6.EV_SPD = Util.ToInt32(TB_SPDEV.Text); + + pk6.CNT_Cool = Util.ToInt32(TB_Cool.Text); // CNT + pk6.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); + pk6.CNT_Cute = Util.ToInt32(TB_Cute.Text); + pk6.CNT_Smart = Util.ToInt32(TB_Smart.Text); + pk6.CNT_Tough = Util.ToInt32(TB_Tough.Text); + pk6.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); + + pk6.PKRS_Days = CB_PKRSDays.SelectedIndex; + pk6.PKRS_Strain = CB_PKRSStrain.SelectedIndex; + // Already in buff (then transferred to new pkx) + // 0x2C, 0x2D, 0x2E, 0x2F + // 0x30, 0x31, 0x32, 0x33 + // 0x34, 0x35, 0x36, 0x37 + // 0x38, 0x39 + + // Unused + // 0x3A, 0x3B + // 0x3C, 0x3D, 0x3E, 0x3F + + // Block B + // Convert Nickname field back to bytes + pk6.Nickname = TB_Nickname.Text; + pk6.Move1 = Util.getIndex(CB_Move1); + pk6.Move2 = Util.getIndex(CB_Move2); + pk6.Move3 = Util.getIndex(CB_Move3); + pk6.Move4 = Util.getIndex(CB_Move4); + pk6.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; + pk6.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; + pk6.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; + pk6.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; + pk6.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; + pk6.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; + pk6.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; + pk6.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; + pk6.RelearnMove1 = Util.getIndex(CB_RelearnMove1); + pk6.RelearnMove2 = Util.getIndex(CB_RelearnMove2); + pk6.RelearnMove3 = Util.getIndex(CB_RelearnMove3); + pk6.RelearnMove4 = Util.getIndex(CB_RelearnMove4); + // 0x72 - Ribbon editor sets this flag (Secret Super Training) + // 0x73 + pk6.IV_HP = Util.ToInt32(TB_HPIV.Text); + pk6.IV_ATK = Util.ToInt32(TB_ATKIV.Text); + pk6.IV_DEF = Util.ToInt32(TB_DEFIV.Text); + pk6.IV_SPE = Util.ToInt32(TB_SPEIV.Text); + pk6.IV_SPA = Util.ToInt32(TB_SPAIV.Text); + pk6.IV_SPD = Util.ToInt32(TB_SPDIV.Text); + pk6.IsEgg = CHK_IsEgg.Checked; + pk6.IsNicknamed = CHK_Nicknamed.Checked; + + // Block C + pk6.HT_Name = TB_OTt2.Text; + + // 0x90-0xAF + pk6.HT_Gender = PKX.getGender(Label_CTGender.Text); + // Plus more, set by MemoryAmie (already in buff) + + // Block D + pk6.OT_Name = TB_OT.Text; + pk6.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); + + int egg_year = 2000; // Default Dates + int egg_month = 0; + int egg_day = 0; + int egg_location = 0; + if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. + { + egg_year = CAL_EggDate.Value.Year; + egg_month = CAL_EggDate.Value.Month; + egg_day = CAL_EggDate.Value.Day; + egg_location = Util.getIndex(CB_EggLocation); + } + // Egg Met Data + pk6.Egg_Year = egg_year - 2000; + pk6.Egg_Month = egg_month; + pk6.Egg_Day = egg_day; + pk6.Egg_Location = egg_location; + // Met Data + pk6.Met_Year = CAL_MetDate.Value.Year - 2000; + pk6.Met_Month = CAL_MetDate.Value.Month; + pk6.Met_Day = CAL_MetDate.Value.Day; + pk6.Met_Location = Util.getIndex(CB_MetLocation); + + if (pk6.IsEgg && pk6.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! + pk6.Met_Year = pk6.Met_Month = pk6.Met_Day = 0; + + // 0xD7 Unknown + + pk6.Ball = Util.getIndex(CB_Ball); + pk6.Met_Level = Util.ToInt32(TB_MetLevel.Text); + pk6.OT_Gender = PKX.getGender(Label_OTGender.Text); + pk6.EncounterType = Util.getIndex(CB_EncounterType); + pk6.Version = Util.getIndex(CB_GameOrigin); + pk6.Country = Util.getIndex(CB_Country); + pk6.Region = Util.getIndex(CB_SubRegion); + pk6.ConsoleRegion = Util.getIndex(CB_3DSReg); + pk6.Language = Util.getIndex(CB_Language); + // 0xE4-0xE7 + + // Toss in Party Stats + Array.Resize(ref pk6.Data, pk6.SIZE_PARTY); + pk6.Stat_Level = Util.ToInt32(TB_Level.Text); + pk6.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); + pk6.Stat_HPMax = Util.ToInt32(Stat_HP.Text); + pk6.Stat_ATK = Util.ToInt32(Stat_ATK.Text); + pk6.Stat_DEF = Util.ToInt32(Stat_DEF.Text); + pk6.Stat_SPE = Util.ToInt32(Stat_SPE.Text); + pk6.Stat_SPA = Util.ToInt32(Stat_SPA.Text); + pk6.Stat_SPD = Util.ToInt32(Stat_SPD.Text); + + // Unneeded Party Stats (Status, Flags, Unused) + pk6.Data[0xE8] = pk6.Data[0xE9] = pk6.Data[0xEA] = pk6.Data[0xEB] = + pk6.Data[0xED] = pk6.Data[0xEE] = pk6.Data[0xEF] = + pk6.Data[0xFE] = pk6.Data[0xFF] = pk6.Data[0x100] = + pk6.Data[0x101] = pk6.Data[0x102] = pk6.Data[0x103] = 0; + + // Hax Illegality + if (HaX) + { + pk6.Ability = (byte)Util.getIndex(DEV_Ability); + pk6.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); + } + + // Fix Moves if a slot is empty + pk6.FixMoves(); + pk6.FixRelearn(); + + // Fix Handler (Memories & OT) -- no foreign memories for Pokemon without a foreign trainer (none for eggs) + if (Menu_ModifyPKM.Checked) + pk6.FixMemories(); + + // PKX is now filled + pk6.RefreshChecksum(); + return pk6; + } + } +} diff --git a/Misc/ComboItem.cs b/Misc/ComboItem.cs new file mode 100644 index 000000000..076c8dcc1 --- /dev/null +++ b/Misc/ComboItem.cs @@ -0,0 +1,8 @@ +namespace PKHeX +{ + public class ComboItem + { + public string Text { get; set; } + public int Value { get; set; } + } +} diff --git a/Misc/Util.cs b/Misc/Util.cs deleted file mode 100644 index 04d52df11..000000000 --- a/Misc/Util.cs +++ /dev/null @@ -1,489 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Imaging; -using System.Linq; -using System.IO; -using System.Runtime.InteropServices; -using System.Windows.Forms; - -namespace PKHeX -{ - public class Util - { - // Image Layering/Blending Utility - internal static Bitmap LayerImage(Image baseLayer, Image overLayer, int x, int y, double trans) - { - Bitmap img = new Bitmap(baseLayer.Width, baseLayer.Height); - using (Graphics gr = Graphics.FromImage(img)) - { - gr.DrawImage(baseLayer, new Point(0, 0)); - Bitmap o = ChangeOpacity(overLayer, trans); - gr.DrawImage(o, new Rectangle(x, y, overLayer.Width, overLayer.Height)); - } - return img; - } - internal static Bitmap ChangeOpacity(Image img, double trans) - { - if (img == null) - return null; - if (img.PixelFormat.HasFlag(PixelFormat.Indexed)) - return (Bitmap)img; - - Bitmap bmp = (Bitmap)img.Clone(); - BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); - IntPtr ptr = bmpData.Scan0; - - int len = bmp.Width*bmp.Height*4; - byte[] data = new byte[len]; - - Marshal.Copy(ptr, data, 0, len); - - for (int i = 0; i < data.Length; i += 4) - data[i + 3] = (byte)(data[i + 3] * trans); - - Marshal.Copy(data, 0, ptr, len); - bmp.UnlockBits(bmpData); - - return bmp; - } - - // Strings and Paths - internal static string NormalizePath(string path) - { - return Path.GetFullPath(new Uri(path).LocalPath) - .TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); - } - internal static string GetTempFolder() - { - return Path.Combine(Path.GetTempPath(), "3DSSE"); - } - internal static string GetCacheFolder() - { - return Path.Combine(GetBackupLocation(), "cache"); - } - internal static string GetRegistryValue(string key) - { - Microsoft.Win32.RegistryKey currentUser = Microsoft.Win32.Registry.CurrentUser; - Microsoft.Win32.RegistryKey key3 = currentUser.OpenSubKey(GetRegistryBase()); - if (key3 == null) - return null; - - string str = key3.GetValue(key) as string; - key3.Close(); - currentUser.Close(); - return str; - } - internal static string GetRegistryBase() - { - return @"SOFTWARE\CYBER Gadget\3DSSaveEditor"; - } - internal static string GetBackupLocation() - { - string registryValue = GetRegistryValue("Location"); - if (!string.IsNullOrEmpty(registryValue)) - { - Directory.CreateDirectory(registryValue); - return registryValue; - } - string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "3DSSaveBank"); - Directory.CreateDirectory(path); - return path; - } - internal static string get3DSLocation() - { - try - { - string[] DriveList = Environment.GetLogicalDrives(); - for (int i = 1; i < DriveList.Length; i++) // Skip first drive (some users still have floppy drives and would chew up time!) - { - string potentialPath = Path.Combine(DriveList[i], "Nintendo 3DS"); - if (Directory.Exists(potentialPath)) - return potentialPath; - } - } - catch { } - return null; - } - internal static string GetSDFLocation() - { - try - { - // Start by checking if the 3DS file path exists or not. - string path_SDF = null; - string[] DriveList = Environment.GetLogicalDrives(); - for (int i = 1; i < DriveList.Length; i++) // Skip first drive (some users still have floppy drives and would chew up time!) - { - string potentialPath_SDF = NormalizePath(Path.Combine(DriveList[i], "filer", "UserSaveData")); - if (!Directory.Exists(potentialPath_SDF)) continue; - - path_SDF = potentialPath_SDF; break; - } - if (path_SDF == null) - return null; - // 3DS data found in SD card reader. Let's get the title folder location! - string[] folders = Directory.GetDirectories(path_SDF, "*", SearchOption.TopDirectoryOnly); - Array.Sort(folders); // Don't need Modified Date, sort by path names just in case. - - // Loop through all the folders in the Nintendo 3DS folder to see if any of them contain 'title'. - for (int i = folders.Length - 1; i >= 0; i--) - { - if (File.Exists(Path.Combine(folders[i], "000011c4", "main"))) return Path.Combine(folders[i], "000011c4"); // OR - if (File.Exists(Path.Combine(folders[i], "000011c5", "main"))) return Path.Combine(folders[i], "000011c5"); // AS - if (File.Exists(Path.Combine(folders[i], "0000055d", "main"))) return Path.Combine(folders[i], "0000055d"); // X - if (File.Exists(Path.Combine(folders[i], "0000055e", "main"))) return Path.Combine(folders[i], "0000055e"); // Y - } - return null; // Fallthrough - } - catch { return null; } - } - internal static string CleanFileName(string fileName) - { - return Path.GetInvalidFileNameChars().Aggregate(fileName, (current, c) => current.Replace(c.ToString(), string.Empty)); - } - internal static string TrimFromZero(string input) - { - int index = input.IndexOf('\0'); - return index < 0 ? input : input.Substring(0, index); - } - internal static string[] getStringList(string f) - { - object txt = Properties.Resources.ResourceManager.GetObject(f); // Fetch File, \n to list. - if (txt == null) return new string[0]; - string[] rawlist = ((string)txt).Split('\n'); - for (int i = 0; i < rawlist.Length; i++) - rawlist[i] = rawlist[i].Trim(); - return rawlist; - } - internal static string[] getStringList(string f, string l) - { - object txt = Properties.Resources.ResourceManager.GetObject("text_" + f + "_" + l); // Fetch File, \n to list. - if (txt == null) return new string[0]; - string[] rawlist = ((string)txt).Split('\n'); - for (int i = 0; i < rawlist.Length; i++) - rawlist[i] = rawlist[i].Trim(); - return rawlist; - } - internal static string[] getNulledStringArray(string[] SimpleStringList) - { - try - { - string[] newlist = new string[ToInt32(SimpleStringList[SimpleStringList.Length - 1].Split(',')[0]) + 1]; - for (int i = 1; i < SimpleStringList.Length; i++) - newlist[ToInt32(SimpleStringList[i].Split(',')[0])] = SimpleStringList[i].Split(',')[1]; - return newlist; - } - catch { return null; } - } - - // Randomization - internal static readonly Random rand = new Random(); - internal static uint rnd32() - { - return (uint)rand.Next(1 << 30) << 2 | (uint)rand.Next(1 << 2); - } - - // Data Retrieval - internal static int ToInt32(string value) - { - string val = value?.Replace(" ", "").Replace("_", "").Trim(); - return string.IsNullOrWhiteSpace(val) ? 0 : int.Parse(val); - } - internal static uint ToUInt32(string value) - { - string val = value?.Replace(" ", "").Replace("_", "").Trim(); - return string.IsNullOrWhiteSpace(val) ? 0 : uint.Parse(val); - } - internal static uint getHEXval(string s) - { - string str = getOnlyHex(s); - return string.IsNullOrWhiteSpace(str) ? 0 : Convert.ToUInt32(str, 16); - } - internal static int getIndex(ComboBox cb) - { - return (int)(cb?.SelectedValue ?? 0); - } - internal static string getOnlyHex(string s) - { - return string.IsNullOrWhiteSpace(s) ? "0" : s.Select(char.ToUpper).Where("0123456789ABCDEF".Contains).Aggregate("", (str, c) => str + c); - } - - // Data Manipulation - internal static void Shuffle(T[] array) - { - int n = array.Length; - for (int i = 0; i < n; i++) - { - int r = i + (int)(rand.NextDouble() * (n - i)); - T t = array[r]; - array[r] = array[i]; - array[i] = t; - } - } - - // Form Translation - internal static void TranslateInterface(Control form, string lang) - { - // Check to see if a the translation file exists in the same folder as the executable - string externalLangPath = "lang_" + lang + ".txt"; - string[] rawlist; - if (File.Exists(externalLangPath)) - rawlist = File.ReadAllLines(externalLangPath); - else - { - object txt = Properties.Resources.ResourceManager.GetObject("lang_" + lang); - if (txt == null) return; // Translation file does not exist as a resource; abort this function and don't translate UI. - rawlist = ((string)txt).Split(new[] { "\n" }, StringSplitOptions.None); - rawlist = rawlist.Select(i => i.Trim()).ToArray(); // Remove trailing spaces - } - - List stringdata = new List(); - int start = -1; - for (int i = 0; i < rawlist.Length; i++) - { - // Find our starting point - if (!rawlist[i].Contains("! " + form.Name)) continue; - start = i; - break; - } - if (start < 0) - return; - - // Rename Window Title - string[] WindowName = rawlist[start].Split(new[] {" = "}, StringSplitOptions.None); - if (WindowName.Length > 1) form.Text = WindowName[1]; - - // Fetch controls to rename - for (int i = start + 1; i < rawlist.Length; i++) - { - if (rawlist[i].Length == 0) continue; // Skip Over Empty Lines, errhandled - if (rawlist[i][0] == '-') continue; // Keep translating if line is a comment line - if (rawlist[i][0] == '!') // Stop if we have reached the end of translation - break; - stringdata.Add(rawlist[i]); // Add the entry to process later. - } - - if (stringdata.Count == 0) - return; - - // Find control then change display Text. - foreach (string str in stringdata) - { - string[] SplitString = str.Split(new[] {" = "}, StringSplitOptions.None); - if (SplitString.Length < 2) - continue; - - object c = FindControl(SplitString[0], form.Controls); // Find control within Form's controls - if (c == null) // Not found - continue; - - string text = SplitString[1]; // Text to set Control.Text to... - - if (c is Control) - (c as Control).Text = text; - else if (c is ToolStripItem) - (c as ToolStripItem).Text = text; - } - } - private static object FindControl(string name, Control.ControlCollection c) - { - Control control = c.Find(name, true).FirstOrDefault(); - if (control != null) - return control; - foreach (MenuStrip menu in c.OfType()) - { - var item = menu.Items.Find(name, true).FirstOrDefault(); - if (item != null) - return item; - } - foreach (ContextMenuStrip strip in FindContextMenuStrips(c.OfType())) - { - var item = strip.Items.Find(name, true).FirstOrDefault(); - if (item != null) - return item; - } - return null; - } - private static List FindContextMenuStrips(IEnumerable c) - { - List cs = new List(); - foreach (Control control in c) - { - if (control.ContextMenuStrip != null) - cs.Add(control.ContextMenuStrip); - - else if (control.Controls.Count > 0) - cs.AddRange(FindContextMenuStrips(control.Controls.OfType())); - } - return cs; - } - internal static void CenterToForm(Control child, Control parent) - { - int x = parent.Location.X + (parent.Width - child.Width) / 2; - int y = parent.Location.Y + (parent.Height - child.Height) / 2; - child.Location = new Point(Math.Max(x, 0), Math.Max(y, 0)); - } - - // Message Displays - internal static DialogResult Error(params string[] lines) - { - System.Media.SystemSounds.Exclamation.Play(); - string msg = string.Join(Environment.NewLine + Environment.NewLine, lines); - return MessageBox.Show(msg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - internal static DialogResult Alert(params string[] lines) - { - System.Media.SystemSounds.Asterisk.Play(); - string msg = string.Join(Environment.NewLine + Environment.NewLine, lines); - return MessageBox.Show(msg, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Warning); - } - internal static DialogResult Prompt(MessageBoxButtons btn, params string[] lines) - { - System.Media.SystemSounds.Question.Play(); - string msg = string.Join(Environment.NewLine + Environment.NewLine, lines); - return MessageBox.Show(msg, "Prompt", btn, MessageBoxIcon.Asterisk); - } - - // DataSource Providing - public class cbItem - { - public string Text { get; set; } - public int Value { get; set; } - } - internal static List getCBList(string textfile, string lang) - { - // Set up - string[] inputCSV = getStringList(textfile); - - // Get Language we're fetching for - int index = Array.IndexOf(new[] { "ja", "en", "fr", "de", "it", "es", "ko", "zh", }, lang); - - // Set up our Temporary Storage - string[] unsortedList = new string[inputCSV.Length - 1]; - int[] indexes = new int[inputCSV.Length - 1]; - - // Gather our data from the input file - for (int i = 1; i < inputCSV.Length; i++) - { - string[] countryData = inputCSV[i].Split(','); - indexes[i - 1] = Convert.ToInt32(countryData[0]); - unsortedList[i - 1] = countryData[index + 1]; - } - - // Sort our input data - string[] sortedList = new string[inputCSV.Length - 1]; - Array.Copy(unsortedList, sortedList, unsortedList.Length); - Array.Sort(sortedList); - - // Arrange the input data based on original number - return sortedList.Select(s => new cbItem - { - Text = s, - Value = indexes[Array.IndexOf(unsortedList, s)] - }).ToList(); - } - internal static List getCBList(string[] inStrings, params int[][] allowed) - { - List cbList = new List(); - if (allowed?.First() == null) - allowed = new[] { Enumerable.Range(0, inStrings.Length).ToArray() }; - - foreach (int[] list in allowed) - { - // Sort the Rest based on String Name - string[] unsortedChoices = new string[list.Length]; - for (int i = 0; i < list.Length; i++) - unsortedChoices[i] = inStrings[list[i]]; - - string[] sortedChoices = new string[unsortedChoices.Length]; - Array.Copy(unsortedChoices, sortedChoices, unsortedChoices.Length); - Array.Sort(sortedChoices); - - // Add the rest of the items - cbList.AddRange(sortedChoices.Select(s => new cbItem - { - Text = s, - Value = list[Array.IndexOf(unsortedChoices, s)] - })); - } - return cbList; - } - internal static List getOffsetCBList(List cbList, string[] inStrings, int offset, int[] allowed) - { - if (allowed == null) - allowed = Enumerable.Range(0, inStrings.Length).ToArray(); - - int[] list = (int[])allowed.Clone(); - for (int i = 0; i < list.Length; i++) - list[i] -= offset; - - // Sort the Rest based on String Name - string[] unsortedChoices = new string[allowed.Length]; - for (int i = 0; i < allowed.Length; i++) - unsortedChoices[i] = inStrings[list[i]]; - - string[] sortedChoices = new string[unsortedChoices.Length]; - Array.Copy(unsortedChoices, sortedChoices, unsortedChoices.Length); - Array.Sort(sortedChoices); - - // Add the rest of the items - cbList.AddRange(sortedChoices.Select(s => new cbItem - { - Text = s, Value = allowed[Array.IndexOf(unsortedChoices, s)] - })); - return cbList; - } - internal static List getVariedCBList(string[] inStrings, int[] stringNum, int[] stringVal) - { - // Set up - List newlist = new List(); - - for (int i = 4; i > 1; i--) // add 4,3,2 - { - // First 3 Balls are always first - cbItem ncbi = new cbItem - { - Text = inStrings[i], - Value = i - }; - newlist.Add(ncbi); - } - - // Sort the Rest based on String Name - string[] ballnames = new string[stringNum.Length]; - for (int i = 0; i < stringNum.Length; i++) - ballnames[i] = inStrings[stringNum[i]]; - - string[] sortedballs = new string[stringNum.Length]; - Array.Copy(ballnames, sortedballs, ballnames.Length); - Array.Sort(sortedballs); - - // Add the rest of the balls - newlist.AddRange(sortedballs.Select(s => new cbItem - { - Text = s, - Value = stringVal[Array.IndexOf(ballnames, s)] - })); - return newlist; - } - internal static List getUnsortedCBList(string textfile) - { - // Set up - List cbList = new List(); - string[] inputCSV = getStringList(textfile); - - // Gather our data from the input file - for (int i = 1; i < inputCSV.Length; i++) - { - string[] inputData = inputCSV[i].Split(','); - cbItem ncbi = new cbItem - { - Text = inputData[1], - Value = Convert.ToInt32(inputData[0]) - }; - cbList.Add(ncbi); - } - return cbList; - } - } -} \ No newline at end of file diff --git a/MysteryGifts/MysteryGift.cs b/MysteryGifts/MysteryGift.cs index ae40ce583..e7a82211d 100644 --- a/MysteryGifts/MysteryGift.cs +++ b/MysteryGifts/MysteryGift.cs @@ -5,6 +5,10 @@ namespace PKHeX { public abstract class MysteryGift { + internal static bool getIsMysteryGift(long len) + { + return new[] { WC6.SizeFull, WC6.Size, PGF.Size, PGT.Size, PCD.Size }.Contains((int)len); + } internal static MysteryGift getMysteryGift(byte[] data, string ext) { if (data.Length == WC6.SizeFull && ext == ".wc6full") @@ -19,6 +23,23 @@ internal static MysteryGift getMysteryGift(byte[] data, string ext) return new PCD(data); return null; } + internal static MysteryGift getMysteryGift(byte[] data) + { + switch (data.Length) + { + case WC6.SizeFull: + case WC6.Size: + return new WC6(data); + case PGF.Size: + return new PGF(data); + case PGT.Size: + return new PGT(data); + case PCD.Size: + return new PCD(data); + default: + return null; + } + } public abstract string Extension { get; } public virtual byte[] Data { get; set; } diff --git a/MysteryGifts/PGF.cs b/MysteryGifts/PGF.cs index 22892e310..b4cf94520 100644 --- a/MysteryGifts/PGF.cs +++ b/MysteryGifts/PGF.cs @@ -3,7 +3,7 @@ namespace PKHeX { - public class PGF : MysteryGift + public sealed class PGF : MysteryGift { internal const int Size = 0xCC; public override string Extension => ".pgf"; @@ -22,22 +22,22 @@ public PGF(byte[] data = null) public uint PID { get { return BitConverter.ToUInt32(Data, 0x08); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x08); } } private byte RIB0 { get { return Data[0x0C]; } set { Data[0x0C] = value; } } - public bool RIB0_0 { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Country Ribbon - public bool RIB0_1 { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // National Ribbon - public bool RIB0_2 { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Earth Ribbon - public bool RIB0_3 { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // World Ribbon - public bool RIB0_4 { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Classic Ribbon - public bool RIB0_5 { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Premier Ribbon - public bool RIB0_6 { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Event Ribbon - public bool RIB0_7 { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Birthday Ribbon + public bool RibbonCountry { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Country Ribbon + public bool RibbonNational { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // National Ribbon + public bool RibbonEarth { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Earth Ribbon + public bool RibbonWorld { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // World Ribbon + public bool RibbonClassic { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Classic Ribbon + public bool RibbonPremier { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Premier Ribbon + public bool RibbonEvent { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Event Ribbon + public bool RibbonBirthday { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Birthday Ribbon private byte RIB1 { get { return Data[0x0D]; } set { Data[0x0D] = value; } } - public bool RIB1_0 { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Special Ribbon - public bool RIB1_1 { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Souvenir Ribbon - public bool RIB1_2 { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Wishing Ribbon - public bool RIB1_3 { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Battle Champ Ribbon - public bool RIB1_4 { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Regional Champ Ribbon - public bool RIB1_5 { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // National Champ Ribbon - public bool RIB1_6 { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // World Champ Ribbon + public bool RibbonSpecial { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Special Ribbon + public bool RibbonSouvenir { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Souvenir Ribbon + public bool RibbonWishing { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Wishing Ribbon + public bool RibbonChampionBattle { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Battle Champ Ribbon + public bool RibbonChampionRegional { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Regional Champ Ribbon + public bool RibbonChampionNational { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // National Champ Ribbon + public bool RibbonChampionWorld { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // World Champ Ribbon public bool RIB1_7 { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Empty public int Pokéball { get { return Data[0x0E]; } set { Data[0x0E] = (byte)value; } } @@ -141,7 +141,7 @@ public override PKM convertToPKM(SaveFile SAV) HeldItem = HeldItem, Met_Level = currentLevel, Nature = Nature != 0xFF ? Nature : (int)(Util.rnd32() % 25), - Gender = PKX.Personal[Species].Gender == 255 ? 2 : (Gender != 2 ? Gender : PKX.Personal[Species].RandomGender), + Gender = PersonalTable.B2W2[Species].Gender == 255 ? 2 : (Gender != 2 ? Gender : PersonalTable.B2W2[Species].RandomGender), AltForm = Form, Version = OriginGame == 0 ? new[] {20, 21, 22, 23}[Util.rnd32() & 0x3] : OriginGame, Language = Language == 0 ? SAV.Language : Language, @@ -150,10 +150,6 @@ public override PKM convertToPKM(SaveFile SAV) Move2 = Move2, Move3 = Move3, Move4 = Move4, - Move1_PP = PKX.getBasePP(Move1), - Move2_PP = PKX.getBasePP(Move2), - Move3_PP = PKX.getBasePP(Move3), - Move4_PP = PKX.getBasePP(Move4), Met_Location = MetLocation, Met_Day = Day, Met_Month = Month, @@ -169,26 +165,30 @@ public override PKM convertToPKM(SaveFile SAV) EXP = PKX.getEXP(Level, Species), // Ribbons - RIB7_4 = RIB0_0, // Country Ribbon - RIB7_5 = RIB0_1, // National Ribbon - RIB7_6 = RIB0_2, // Earth Ribbon - RIB7_7 = RIB0_3, // World Ribbon - RIB3_2 = RIB0_4, // Classic Ribbon - RIB3_3 = RIB0_5, // Premier Ribbon - RIB2_3 = RIB0_6, // Event Ribbon - RIB2_6 = RIB0_7, // Birthday Ribbon + RibbonCountry = RibbonCountry, + RibbonNational = RibbonNational, + RibbonEarth = RibbonEarth, + RibbonWorld = RibbonWorld, + RibbonClassic = RibbonClassic, + RibbonPremier = RibbonPremier, + RibbonEvent = RibbonEvent, + RibbonBirthday = RibbonBirthday, - RIB2_7 = RIB1_0, // Special Ribbon - RIB3_0 = RIB1_1, // Souvenir Ribbon - RIB3_1 = RIB1_2, // Wishing Ribbon - RIB7_1 = RIB1_3, // Battle Champ Ribbon - RIB7_2 = RIB1_4, // Regional Champ Ribbon - RIB7_3 = RIB1_5, // National Champ Ribbon - RIB2_5 = RIB1_6, // World Champ Ribbon + RibbonSpecial = RibbonSpecial, + RibbonSouvenir = RibbonSouvenir, + RibbonWishing = RibbonWishing, + RibbonChampionBattle = RibbonChampionBattle, + RibbonChampionRegional = RibbonChampionRegional, + RibbonChampionNational = RibbonChampionNational, + RibbonChampionWorld = RibbonChampionWorld, - OT_Friendship = PKX.getBaseFriendship(Species), + OT_Friendship = PersonalTable.B2W2[Species].BaseFriendship, FatefulEncounter = true, }; + pk.Move1_PP = pk.getMovePP(Move1, 0); + pk.Move2_PP = pk.getMovePP(Move2, 0); + pk.Move3_PP = pk.getMovePP(Move3, 0); + pk.Move4_PP = pk.getMovePP(Move4, 0); if (OTGender == 3) // User's { pk.TID = SAV.TID; @@ -228,7 +228,7 @@ public override PKM convertToPKM(SaveFile SAV) break; } pk.HiddenAbility = av == 2; - pk.Ability = PKX.Personal[PKX.Personal[Species].FormeIndex(Species, pk.AltForm)].Abilities[av]; + pk.Ability = PersonalTable.B2W2.getAbilities(Species, pk.AltForm)[av]; if (PID != 0) pk.PID = PID; diff --git a/MysteryGifts/PGT.cs b/MysteryGifts/PGT.cs index d3fb13a51..9eeebbfea 100644 --- a/MysteryGifts/PGT.cs +++ b/MysteryGifts/PGT.cs @@ -8,7 +8,7 @@ namespace PKHeX * http://projectpokemon.org/forums/showthread.php?6524 * See also: http://tccphreak.shiny-clique.net/debugger/pcdfiles.htm */ - public class PCD : MysteryGift + public sealed class PCD : MysteryGift { internal const int Size = 0x358; // 856 public override string Extension => ".pcd"; @@ -85,7 +85,8 @@ public PGT(byte[] data = null) { refreshData((byte[])(data?.Clone() ?? new byte[Size])); } - public void refreshData(byte[] data) + + private void refreshData(byte[] data) { byte[] ekdata = new byte[PKX.SIZE_4PARTY]; Array.Copy(data, 8, ekdata, 0, ekdata.Length); @@ -203,6 +204,8 @@ public override PKM convertToPKM(SaveFile SAV) pk4.AltForm = PKX.getUnownForm(pk4.PID); if (IsEgg || IsManaphyEgg) pk4.IsEgg = true; + + pk4.RefreshChecksum(); return pk4; } } diff --git a/MysteryGifts/PL6.cs b/MysteryGifts/PL6.cs new file mode 100644 index 000000000..b2c984795 --- /dev/null +++ b/MysteryGifts/PL6.cs @@ -0,0 +1,333 @@ +using System; +using System.Linq; +using System.Text; + +namespace PKHeX +{ + public class PL6 //: PokemonLink + { + internal const int Size = 0xA47; + internal const string Filter = "Pokémon Link Data|*.bin|All Files (*.*)|*.*"; + internal const string Extension = ".bin"; + + public byte[] Data; + public PL6(byte[] data = null) + { + Data = (byte[])(data?.Clone() ?? new byte[Size]); + } + // Pokémon Link Flag + public byte PL_Flag { + get { return Data[0x00]; } + set { Data[0x00] = value; } } + public bool PL_enabled { get { return PL_Flag != 0; } set { PL_Flag = (byte)(value ? 1 << 7 : 0); } } + + //Name of data source + public string Origin_app { + get { return Util.TrimFromZero(Encoding.Unicode.GetString(Data, 0x01, 0x6E)); } + set { Encoding.Unicode.GetBytes(value.PadRight(54 + 1, '\0')).CopyTo(Data, 0x01); } } + + //Pokemon transfer flags? + public uint PKM1_flags { + get { return BitConverter.ToUInt32(Data, 0x99); } + set { BitConverter.GetBytes(value).CopyTo(Data, 0x99); } } + public uint PKM2_flags { + get { return BitConverter.ToUInt32(Data, 0x141); } + set { BitConverter.GetBytes(value).CopyTo(Data, 0x141); } } + public uint PKM3_flags { + get { return BitConverter.ToUInt32(Data, 0x1E9); } + set { BitConverter.GetBytes(value).CopyTo(Data, 0x1E9); } } + public uint PKM4_flags { + get { return BitConverter.ToUInt32(Data, 0x291); } + set { BitConverter.GetBytes(value).CopyTo(Data, 0x291); } } + public uint PKM5_flags { + get { return BitConverter.ToUInt32(Data, 0x339); } + set { BitConverter.GetBytes(value).CopyTo(Data, 0x339); } } + public uint PKM6_flags { + get { return BitConverter.ToUInt32(Data, 0x3E1); } + set { BitConverter.GetBytes(value).CopyTo(Data, 0x3E1); } } + + public uint[] Flags + { + get { return new[] {PKM1_flags, PKM2_flags, PKM3_flags, PKM4_flags, PKM5_flags, PKM6_flags}; } + set + { + if (value.Length > 0) PKM1_flags = value[0]; + if (value.Length > 1) PKM2_flags = value[1]; + if (value.Length > 2) PKM3_flags = value[2]; + if (value.Length > 3) PKM4_flags = value[3]; + if (value.Length > 4) PKM5_flags = value[4]; + if (value.Length > 5) PKM6_flags = value[5]; + } + } + + //Pokémon + + public PL6_PKM poke1 { + get { return new PL6_PKM(Data.Skip(0x9D).Take(PL6_PKM.Size).ToArray()); } + set { value.Data.CopyTo(Data, 0x9D); } } + public PL6_PKM poke2 { + get { return new PL6_PKM(Data.Skip(0x145).Take(PL6_PKM.Size).ToArray()); } + set { value.Data.CopyTo(Data, 0x145); } } + public PL6_PKM poke3 { + get { return new PL6_PKM(Data.Skip(0x1ED).Take(PL6_PKM.Size).ToArray()); } + set { value.Data.CopyTo(Data, 0x1ED); } } + public PL6_PKM poke4 { + get { return new PL6_PKM(Data.Skip(0x295).Take(PL6_PKM.Size).ToArray()); } + set { value.Data.CopyTo(Data, 0x295); } } + public PL6_PKM poke5 { + get { return new PL6_PKM(Data.Skip(0x33D).Take(PL6_PKM.Size).ToArray()); } + set { value.Data.CopyTo(Data, 0x33D); } } + public PL6_PKM poke6 { + get { return new PL6_PKM(Data.Skip(0x3E5).Take(PL6_PKM.Size).ToArray()); } + set { value.Data.CopyTo(Data, 0x3E5); } } + + public PL6_PKM[] Pokes + { + get { return new[] {poke1, poke2, poke3, poke4, poke5, poke6}; } + set + { + if (value.Length > 0) poke1 = value[0]; + if (value.Length > 1) poke2 = value[1]; + if (value.Length > 2) poke3 = value[2]; + if (value.Length > 3) poke4 = value[3]; + if (value.Length > 4) poke5 = value[4]; + if (value.Length > 5) poke6 = value[5]; + } + } + + // Item Properties + public int Item_1 { + get { return BitConverter.ToUInt16(Data, 0x489); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x489); } } + public int Quantity_1 { + get { return BitConverter.ToUInt16(Data, 0x48B); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x48B); } } + public int Item_2 { + get { return BitConverter.ToUInt16(Data, 0x48D); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x48D); } } + public int Quantity_2 { + get { return BitConverter.ToUInt16(Data, 0x48F); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x48F); } } + public int Item_3 { + get { return BitConverter.ToUInt16(Data, 0x491); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x491); } } + public int Quantity_3 { + get { return BitConverter.ToUInt16(Data, 0x493); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x493); } } + public int Item_4 { + get { return BitConverter.ToUInt16(Data, 0x495); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x495); } } + public int Quantity_4 { + get { return BitConverter.ToUInt16(Data, 0x497); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x497); } } + public int Item_5 { + get { return BitConverter.ToUInt16(Data, 0x499); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x499); } } + public int Quantity_5 { + get { return BitConverter.ToUInt16(Data, 0x49B); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x49B); } } + public int Item_6 { + get { return BitConverter.ToUInt16(Data, 0x49D); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x49D); } } + public int Quantity_6 { + get { return BitConverter.ToUInt16(Data, 0x49F); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x49F); } } + + public int[] Items + { + get { return new[] {Item_1, Item_2, Item_3, Item_4, Item_5, Item_6}; } + set + { + if (value.Length > 0) Item_1 = value[0]; + if (value.Length > 1) Item_2 = value[1]; + if (value.Length > 2) Item_3 = value[2]; + if (value.Length > 3) Item_4 = value[3]; + if (value.Length > 4) Item_5 = value[4]; + if (value.Length > 5) Item_6 = value[5]; + } + } + + public int[] Quantities + { + get { return new[] {Quantity_1, Quantity_2, Quantity_3, Quantity_4, Quantity_5, Quantity_6}; } + set + { + if (value.Length > 0) Quantity_1 = value[0]; + if (value.Length > 1) Quantity_2 = value[1]; + if (value.Length > 2) Quantity_3 = value[2]; + if (value.Length > 3) Quantity_4 = value[3]; + if (value.Length > 4) Quantity_5 = value[4]; + if (value.Length > 5) Quantity_6 = value[5]; + } + } + + + //Battle Points + public int BattlePoints { + get { return BitConverter.ToUInt16(Data, 0x4A1); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x4A1); } } + //PokéMiles + public int Pokemiles { + get { return BitConverter.ToUInt16(Data, 0x4A3); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x4A3); } } + } + + public class PL6_PKM //: PokemonLink + { + + internal const int Size = 0xA0; + + public readonly byte[] Data; + public PL6_PKM(byte[] data = null) + { + Data = (byte[])(data?.Clone() ?? new byte[Size]); + } + + public int TID { + get { return BitConverter.ToUInt16(Data, 0x00); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x00); } } + public int SID { + get { return BitConverter.ToUInt16(Data, 0x02); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x02); } } + public int OriginGame { + get { return Data[0x04]; } + set { Data[0x04] = (byte)value; } } + public uint EncryptionConstant { + get { return BitConverter.ToUInt32(Data, 0x08); } + set { BitConverter.GetBytes(value).CopyTo(Data, 0x08); } } + public int Pokéball { + get { return Data[0xE]; } + set { Data[0xE] = (byte)value; } } + public int HeldItem { + get { return BitConverter.ToUInt16(Data, 0x10); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x10); } } + public int Move1 { + get { return BitConverter.ToUInt16(Data, 0x12); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x12); } } + public int Move2 { + get { return BitConverter.ToUInt16(Data, 0x14); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x14); } } + public int Move3 { + get { return BitConverter.ToUInt16(Data, 0x16); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x16); } } + public int Move4 { + get { return BitConverter.ToUInt16(Data, 0x18); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x18); } } + public int Species { + get { return BitConverter.ToUInt16(Data, 0x1A); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x1A); } } + public int Form { + get { return Data[0x1C]; } + set { Data[0x1C] = (byte)value; } } + public int Language { + get { return Data[0x1D]; } + set { Data[0x1D] = (byte)value; } } + public string Nickname { + get { return Util.TrimFromZero(Encoding.Unicode.GetString(Data, 0x1E, 0x1A)); } + set { Encoding.Unicode.GetBytes(value.PadRight(12 + 1, '\0')).CopyTo(Data, 0x1E); } } + public int Nature { + get { return Data[0x38]; } + set { Data[0x38] = (byte)value; } } + public int Gender { + get { return Data[0x39]; } + set { Data[0x39] = (byte)value; } } + public int AbilityType { + get { return Data[0x3A]; } + set { Data[0x3A] = (byte)value; } } + public int PIDType { + get { return Data[0x3B]; } + set { Data[0x3B] = (byte)value; } } + public int EggLocation { + get { return BitConverter.ToUInt16(Data, 0x3C); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x3C); } } + public int MetLocation { + get { return BitConverter.ToUInt16(Data, 0x3E); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x3F); } } + public int MetLevel { + get { return Data[0x40]; } + set { Data[0x40] = (byte)value; } } + + public int CNT_Cool { get { return Data[0x41]; } set { Data[0x41] = (byte)value; } } + public int CNT_Beauty { get { return Data[0x42]; } set { Data[0x42] = (byte)value; } } + public int CNT_Cute { get { return Data[0x43]; } set { Data[0x43] = (byte)value; } } + public int CNT_Smart { get { return Data[0x44]; } set { Data[0x44] = (byte)value; } } + public int CNT_Tough { get { return Data[0x45]; } set { Data[0x45] = (byte)value; } } + public int CNT_Sheen { get { return Data[0x46]; } set { Data[0x46] = (byte)value; } } + + public int IV_HP { get { return Data[0x47]; } set { Data[0x47] = (byte)value; } } + public int IV_ATK { get { return Data[0x48]; } set { Data[0x48] = (byte)value; } } + public int IV_DEF { get { return Data[0x49]; } set { Data[0x49] = (byte)value; } } + public int IV_SPE { get { return Data[0x4A]; } set { Data[0x4A] = (byte)value; } } + public int IV_SPA { get { return Data[0x4B]; } set { Data[0x4B] = (byte)value; } } + public int IV_SPD { get { return Data[0x4C]; } set { Data[0x4C] = (byte)value; } } + + public int OTGender { get { return Data[0x4D]; } set { Data[0x4D] = (byte)value; } } + public string OT { + get { return Util.TrimFromZero(Encoding.Unicode.GetString(Data, 0x4E, 0x1A)); } + set { Encoding.Unicode.GetBytes(value.PadRight(value.Length + 1, '\0')).CopyTo(Data, 0x4E); } } + public int Level { get { return Data[0x68]; } set { Data[0x68] = (byte)value; } } + public bool IsEgg { get { return Data[0x69] == 1; } set { Data[0x69] = (byte)(value ? 1 : 0); } } + public uint PID { + get { return BitConverter.ToUInt32(Data, 0x6C); } + set { BitConverter.GetBytes(value).CopyTo(Data, 0x6C); } } + public int RelearnMove1 { + get { return BitConverter.ToUInt16(Data, 0x70); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x70); } } + public int RelearnMove2 { + get { return BitConverter.ToUInt16(Data, 0x72); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x72); } } + public int RelearnMove3 { + get { return BitConverter.ToUInt16(Data, 0x74); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x74); } } + public int RelearnMove4 { + get { return BitConverter.ToUInt16(Data, 0x76); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x76); } } + public int OT_Intensity { get { return Data[0x78]; } set { Data[0x78] = (byte)value; } } + public int OT_Memory { get { return Data[0x79]; } set { Data[0x79] = (byte)value; } } + public int OT_TextVar { get { return BitConverter.ToUInt16(Data, 0x7A); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x7A); } } + public int OT_Feeling { get { return Data[0x7C]; } set { Data[0x7C] = (byte)value; } } + + private byte RIB0 { get { return Data[0x0C]; } set { Data[0x0C] = value; } } + public bool RIB0_0 { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Battle Champ Ribbon + public bool RIB0_1 { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Regional Champ Ribbon + public bool RIB0_2 { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // National Champ Ribbon + public bool RIB0_3 { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Country Ribbon + public bool RIB0_4 { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // National Ribbon + public bool RIB0_5 { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Earth Ribbon + public bool RIB0_6 { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // World Ribbon + public bool RIB0_7 { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Event Ribbon + private byte RIB1 { get { return Data[0x0D]; } set { Data[0x0D] = value; } } + public bool RIB1_0 { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // World Champ Ribbon + public bool RIB1_1 { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Birthday Ribbon + public bool RIB1_2 { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Special Ribbon + public bool RIB1_3 { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Souvenir Ribbon + public bool RIB1_4 { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Wishing Ribbon + public bool RIB1_5 { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Classic Ribbon + public bool RIB1_6 { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Premier Ribbon + public bool RIB1_7 { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Empty + + public int[] Moves + { + get { return new[] {Move1, Move2, Move3, Move4}; } + set + { + if (value.Length > 0) Move1 = value[0]; + if (value.Length > 1) Move2 = value[1]; + if (value.Length > 2) Move3 = value[2]; + if (value.Length > 3) Move4 = value[3]; + } + } + public int[] RelearnMoves + { + get { return new[] { RelearnMove1, RelearnMove2, RelearnMove3, RelearnMove4 }; } + set + { + if (value.Length > 0) RelearnMove1 = value[0]; + if (value.Length > 1) RelearnMove2 = value[1]; + if (value.Length > 2) RelearnMove3 = value[2]; + if (value.Length > 3) RelearnMove4 = value[3]; + } + } + + } +} \ No newline at end of file diff --git a/MysteryGifts/WC6.cs b/MysteryGifts/WC6.cs index 3e3eb7af3..26f8a186c 100644 --- a/MysteryGifts/WC6.cs +++ b/MysteryGifts/WC6.cs @@ -4,7 +4,7 @@ namespace PKHeX { - public class WC6 : MysteryGift + public sealed class WC6 : MysteryGift { internal const int Size = 0x108; internal const int SizeFull = 0x310; @@ -18,7 +18,7 @@ public WC6(byte[] data = null) { Data = Data.Skip(SizeFull - Size).ToArray(); DateTime now = DateTime.Now; - Year = (uint)(now.Year - 2000); + Year = (uint)now.Year; Month = (uint)now.Month; Day = (uint)now.Day; } @@ -162,22 +162,22 @@ public WC6(byte[] data = null) public int OT_Feeling { get { return Data[0xE4]; } set { Data[0xE4] = (byte)value; } } private byte RIB0 { get { return Data[0x74]; } set { Data[0x74] = value; } } - public bool RIB0_0 { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Battle Champ Ribbon - public bool RIB0_1 { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Regional Champ Ribbon - public bool RIB0_2 { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // National Champ Ribbon - public bool RIB0_3 { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Country Ribbon - public bool RIB0_4 { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // National Ribbon - public bool RIB0_5 { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Earth Ribbon - public bool RIB0_6 { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // World Ribbon - public bool RIB0_7 { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Event Ribbon + public bool RibbonChampionBattle { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Battle Champ Ribbon + public bool RibbonChampionRegional { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Regional Champ Ribbon + public bool RibbonChampionNational { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // National Champ Ribbon + public bool RibbonCountry { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Country Ribbon + public bool RibbonNational { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // National Ribbon + public bool RibbonEarth { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Earth Ribbon + public bool RibbonWorld { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // World Ribbon + public bool RibbonEvent { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Event Ribbon private byte RIB1 { get { return Data[0x75]; } set { Data[0x75] = value; } } - public bool RIB1_0 { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // World Champ Ribbon - public bool RIB1_1 { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Birthday Ribbon - public bool RIB1_2 { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Special Ribbon - public bool RIB1_3 { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Souvenir Ribbon - public bool RIB1_4 { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Wishing Ribbon - public bool RIB1_5 { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Classic Ribbon - public bool RIB1_6 { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Premier Ribbon + public bool RibbonChampionWorld { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // World Champ Ribbon + public bool RibbonBirthday { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Birthday Ribbon + public bool RibbonSpecial { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Special Ribbon + public bool RibbonSouvenir { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Souvenir Ribbon + public bool RibbonWishing { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Wishing Ribbon + public bool RibbonClassic { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Classic Ribbon + public bool RibbonPremier { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Premier Ribbon public bool RIB1_7 { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Empty // Meta Accessible Properties @@ -221,7 +221,7 @@ public override PKM convertToPKM(SaveFile SAV) SID = SID, Met_Level = currentLevel, Nature = Nature != 0xFF ? Nature : (int)(Util.rnd32() % 25), - Gender = PKX.Personal[Species].Gender == 255 ? 2 : (Gender != 3 ? Gender : PKX.Personal[Species].RandomGender), + Gender = PersonalTable.AO[Species].Gender == 255 ? 2 : (Gender != 3 ? Gender : PersonalTable.AO[Species].RandomGender), AltForm = Form, EncryptionConstant = EncryptionConstant == 0 ? Util.rnd32() : EncryptionConstant, Version = OriginGame == 0 ? SAV.Game : OriginGame, @@ -231,10 +231,6 @@ public override PKM convertToPKM(SaveFile SAV) Region = SAV.SubRegion, ConsoleRegion = SAV.ConsoleRegion, Move1 = Move1, Move2 = Move2, Move3 = Move3, Move4 = Move4, - Move1_PP = PKX.getBasePP(Move1), - Move2_PP = PKX.getBasePP(Move2), - Move3_PP = PKX.getBasePP(Move3), - Move4_PP = PKX.getBasePP(Move4), RelearnMove1 = RelearnMove1, RelearnMove2 = RelearnMove2, RelearnMove3 = RelearnMove3, RelearnMove4 = RelearnMove4, Met_Location = MetLocation, @@ -255,31 +251,35 @@ public override PKM convertToPKM(SaveFile SAV) EXP = PKX.getEXP(Level, Species), // Ribbons - RIB2_6 = RIB0_3, // Country Ribbon - RIB2_7 = RIB0_4, // National Ribbon + RibbonCountry = RibbonCountry, + RibbonNational = RibbonNational, - RIB3_0 = RIB0_5, // Earth Ribbon - RIB3_1 = RIB0_6, // World Ribbon - RIB3_2 = RIB1_5, // Classic Ribbon - RIB3_3 = RIB1_6, // Premier Ribbon - RIB3_4 = RIB0_7, // Event Ribbon - RIB3_5 = RIB1_1, // Birthday Ribbon - RIB3_6 = RIB1_2, // Special Ribbon - RIB3_7 = RIB1_3, // Souvenir Ribbon + RibbonEarth = RibbonEarth, + RibbonWorld = RibbonWorld, + RibbonClassic = RibbonClassic, + RibbonPremier = RibbonPremier, + RibbonEvent = RibbonEvent, + RibbonBirthday = RibbonBirthday, + RibbonSpecial = RibbonSpecial, + RibbonSouvenir = RibbonSouvenir, - RIB4_0 = RIB1_4, // Wishing Ribbon - RIB4_1 = RIB0_0, // Battle Champ Ribbon - RIB4_2 = RIB0_1, // Regional Champ Ribbon - RIB4_3 = RIB0_2, // National Champ Ribbon - RIB4_4 = RIB1_0, // World Champ Ribbon + RibbonWishing = RibbonWishing, + RibbonChampionBattle = RibbonChampionBattle, + RibbonChampionRegional = RibbonChampionRegional, + RibbonChampionNational = RibbonChampionNational, + RibbonChampionWorld = RibbonChampionWorld, - OT_Friendship = PKX.getBaseFriendship(Species), + OT_Friendship = PersonalTable.AO[Species].BaseFriendship, OT_Intensity = OT_Intensity, OT_Memory = OT_Memory, OT_TextVar = OT_TextVar, OT_Feeling = OT_Feeling, FatefulEncounter = true, }; + pk.Move1_PP = pk.getMovePP(Move1, 0); + pk.Move2_PP = pk.getMovePP(Move2, 0); + pk.Move3_PP = pk.getMovePP(Move3, 0); + pk.Move4_PP = pk.getMovePP(Move4, 0); if (Day + Month + Year == 0) // No datetime set, typical for wc6full { @@ -352,7 +352,7 @@ public override PKM convertToPKM(SaveFile SAV) av = (int)(Util.rnd32()%(AbilityType - 1)); break; } - pk.Ability = PKX.Personal[PKX.Personal[Species].FormeIndex(Species, pk.AltForm)].Abilities[av]; + pk.Ability = PersonalTable.AO.getAbilities(Species, pk.AltForm)[av]; pk.AbilityNumber = 1 << av; switch (PIDType) diff --git a/PKHeX.csproj b/PKHeX.csproj index c3c813445..14445871e 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -61,6 +61,8 @@ + + @@ -74,7 +76,28 @@ + + Form + + + Form + + + Form + + + Form + + + + + + + + + + @@ -92,6 +115,7 @@ QR.cs + @@ -99,11 +123,29 @@ - + Form - - f2-Text.cs + + BatchEditor.cs + + + Form + + + SuperTrainingEditor.cs + + + Form + + + RibbonEditor.cs + + + Form + + + Text.cs Form @@ -112,23 +154,17 @@ About.cs - + Form - - f1-Main.cs + + Main.cs - + Form - - f4-RibbMedal.cs - - - Form - - - f3-MemoryAmie.cs + + MemoryAmie.cs True @@ -137,108 +173,121 @@ - + + Form - + + SAV_CGearSkin.cs + + + Form + + + SAV_Link6.cs + + + Form + + SAV_PokeBlockORAS.cs - + Form - + SAV_Database.cs - + Form - + SAV_PokedexORAS.cs - + Form - + SAV_SecretBase.cs - + Form - + SAV_EventFlags.cs - + Form - + frmReport.cs - + Form - + SAV_BerryFieldXY.cs - + Form - + SAV_BoxLayout.cs - + Form - + SAV_HallOfFame.cs - + Form - + SAV_Inventory.cs - + Form - + SAV_OPower.cs - + Form - + SAV_PokedexXY.cs - + Form - + SAV_Pokepuff.cs - + Form - + SAV_SimpleTrainer.cs - + Form - + SAV_SuperTrain.cs - + Form - + SAV_Trainer.cs - + Form - + SAV_Wondercard.cs @@ -247,44 +296,63 @@ SplashScreen.cs - + + + + + + + + QR.cs Designer - - f2-Text.cs + + BatchEditor.cs + + + SuperTrainingEditor.cs + + + RibbonEditor.cs + + + Text.cs About.cs Designer - - f1-Main.cs + + Main.cs Designer - - f4-RibbMedal.cs + + MemoryAmie.cs - - f3-MemoryAmie.cs + + SAV_CGearSkin.cs - + + SAV_Link6.cs + + SAV_PokeBlockORAS.cs - + SAV_Database.cs - + SAV_PokedexORAS.cs - + SAV_SecretBase.cs - + SAV_EventFlags.cs - + frmReport.cs @@ -292,37 +360,37 @@ Designer Resources.Designer.cs - + SAV_BerryFieldXY.cs - + SAV_BoxLayout.cs - + SAV_HallOfFame.cs - + SAV_Inventory.cs - + SAV_OPower.cs - + SAV_PokedexXY.cs - + SAV_Pokepuff.cs - + SAV_SimpleTrainer.cs - + SAV_SuperTrain.cs - + SAV_Trainer.cs - + SAV_Wondercard.cs @@ -368,18 +436,24 @@ - - - + + + + + + + + + @@ -406,31 +480,272 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + + + - + - + - + @@ -584,7 +899,6 @@ - @@ -674,7 +988,7 @@ - + @@ -682,7 +996,6 @@ - diff --git a/PKM/PK3.cs b/PKM/PK3.cs index ca3a575ae..a6f20bc4c 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -9,7 +9,7 @@ public class PK3 : PKM // 3rd Generation PKM File { 0x2A, 0x2B }; - public override int SIZE_PARTY => PKX.SIZE_3PARTY; + public sealed override int SIZE_PARTY => PKX.SIZE_3PARTY; public override int SIZE_STORED => PKX.SIZE_3STORED; public override int Format => 3; public PK3(byte[] decryptedData = null, string ident = null) @@ -25,16 +25,15 @@ public PK3(byte[] decryptedData = null, string ident = null) // Future Attributes public override uint EncryptionConstant { get { return PID; } set { } } public override int Nature { get { return (int)(PID % 25); } set { } } - public override int AltForm { get { return -1; } set { } } + public override int AltForm { get { return Species == 201 ? PKX.getUnownForm(PID) : 0; } set { } } public override bool IsNicknamed { get { return PKX.getIsNicknamed(Species, Nickname); } set { } } public override int Gender { get { return PKX.getGender(Species, PID); } set { } } public override int Characteristic => -1; public override int CurrentFriendship { get { return OT_Friendship; } set { OT_Friendship = value; } } - public override int Ability { get { return PKX.Gen3Abilities[Species][AbilityNumber]; } set { } } + public override int Ability { get { int[] abils = PersonalTable.RS.getAbilities(Species, 0); return abils[abils[1] == 0 ? 0 : AbilityNumber]; } set { } } public override int CurrentHandler { get { return 0; } set { } } public override int Egg_Location { get { return 0; } set { } } - public override int Met_Level { get { return -1; } set { } } // 0x20 Intro public override uint PID { get { return BitConverter.ToUInt32(Data, 0x00); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x00); } } @@ -106,6 +105,7 @@ public PK3(byte[] decryptedData = null, string ident = null) public override int Met_Location { get { return Data[0x45]; } set { Data[0x45] = (byte)value; } } // Origins private ushort Origins { get { return BitConverter.ToUInt16(Data, 0x46); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x46); } } + public override int Met_Level { get { return Origins & 0x7F; } set { Origins = (ushort)((Origins & ~0x7F) | value); } } public override int Version { get { return (Origins >> 7) & 0xF; } set { Origins = (ushort)((Origins & ~0x780) | ((value & 0xF) << 7));} } public override int Ball { get { return (Origins >> 11) & 0xF; } set { Origins = (ushort)((Origins & ~0x7800) | ((value & 0xF) << 11)); } } public override int OT_Gender { get { return (Origins >> 15) & 1; } set { Origins = (ushort)(Origins & ~(1 << 15) | ((value & 1) << 15)); } } @@ -121,28 +121,28 @@ public PK3(byte[] decryptedData = null, string ident = null) public int AbilityNumber { get { return (int)((IV32 >> 31) & 1); } set { IV32 = (IV32 & 0x7FFFFFFF) | (value == 1 ? 0x80000000 : 0); } } private uint RIB0 { get { return BitConverter.ToUInt32(Data, 0x4C); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x4C); } } - public int Cool_Ribbons { get { return (int)(RIB0 >> 00) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 00)) | (uint)(value & 7)); } } - public int Beauty_Ribbons{ get { return (int)(RIB0 >> 03) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 03)) | (uint)(value & 7)); } } - public int Cute_Ribbons { get { return (int)(RIB0 >> 06) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 06)) | (uint)(value & 7)); } } - public int Smart_Ribbons { get { return (int)(RIB0 >> 09) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 09)) | (uint)(value & 7)); } } - public int Tough_Ribbons { get { return (int)(RIB0 >> 12) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 12)) | (uint)(value & 7)); } } - public bool Champion { get { return (RIB0 & (1 << 15)) == 1 << 15; } set { RIB0 = (uint)(RIB0 & ~(1 << 15) | (uint)(value ? 1 << 0 : 0)); } } - public bool Winning { get { return (RIB0 & (1 << 16)) == 1 << 16; } set { RIB0 = (uint)(RIB0 & ~(1 << 16) | (uint)(value ? 1 << 0 : 0)); } } - public bool Victory { get { return (RIB0 & (1 << 17)) == 1 << 17; } set { RIB0 = (uint)(RIB0 & ~(1 << 17) | (uint)(value ? 1 << 0 : 0)); } } - public bool Artist { get { return (RIB0 & (1 << 18)) == 1 << 18; } set { RIB0 = (uint)(RIB0 & ~(1 << 18) | (uint)(value ? 1 << 0 : 0)); } } - public bool Effort { get { return (RIB0 & (1 << 19)) == 1 << 19; } set { RIB0 = (uint)(RIB0 & ~(1 << 19) | (uint)(value ? 1 << 0 : 0)); } } - public bool Special1 { get { return (RIB0 & (1 << 20)) == 1 << 20; } set { RIB0 = (uint)(RIB0 & ~(1 << 20) | (uint)(value ? 1 << 0 : 0)); } } - public bool Special2 { get { return (RIB0 & (1 << 21)) == 1 << 21; } set { RIB0 = (uint)(RIB0 & ~(1 << 21) | (uint)(value ? 1 << 0 : 0)); } } - public bool Special3 { get { return (RIB0 & (1 << 22)) == 1 << 22; } set { RIB0 = (uint)(RIB0 & ~(1 << 22) | (uint)(value ? 1 << 0 : 0)); } } - public bool Special4 { get { return (RIB0 & (1 << 23)) == 1 << 23; } set { RIB0 = (uint)(RIB0 & ~(1 << 23) | (uint)(value ? 1 << 0 : 0)); } } - public bool Special5 { get { return (RIB0 & (1 << 24)) == 1 << 24; } set { RIB0 = (uint)(RIB0 & ~(1 << 24) | (uint)(value ? 1 << 0 : 0)); } } - public bool Special6 { get { return (RIB0 & (1 << 25)) == 1 << 25; } set { RIB0 = (uint)(RIB0 & ~(1 << 25) | (uint)(value ? 1 << 0 : 0)); } } - public bool Special7 { get { return (RIB0 & (1 << 26)) == 1 << 26; } set { RIB0 = (uint)(RIB0 & ~(1 << 26) | (uint)(value ? 1 << 0 : 0)); } } - public bool Unused1 { get { return (RIB0 & (1 << 27)) == 1 << 27; } set { RIB0 = (uint)(RIB0 & ~(1 << 27) | (uint)(value ? 1 << 0 : 0)); } } - public bool Unused2 { get { return (RIB0 & (1 << 28)) == 1 << 28; } set { RIB0 = (uint)(RIB0 & ~(1 << 28) | (uint)(value ? 1 << 0 : 0)); } } - public bool Unused3 { get { return (RIB0 & (1 << 29)) == 1 << 29; } set { RIB0 = (uint)(RIB0 & ~(1 << 29) | (uint)(value ? 1 << 0 : 0)); } } - public bool Unused4 { get { return (RIB0 & (1 << 30)) == 1 << 30; } set { RIB0 = (uint)(RIB0 & ~(1 << 30) | (uint)(value ? 1 << 0 : 0)); } } - public override bool FatefulEncounter { get { return (RIB0 & (1 << 31)) == 1 << 31; } set { RIB0 = (RIB0 & ~(1 << 31)) | (uint)(value ? 1 << 0 : 0); } } + public int RibbonCountG3Cool { get { return (int)(RIB0 >> 00) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 00)) | (uint)(value & 7) << 00); } } + public int RibbonCountG3Beauty { get { return (int)(RIB0 >> 03) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 03)) | (uint)(value & 7) << 03); } } + public int RibbonCountG3Cute { get { return (int)(RIB0 >> 06) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 06)) | (uint)(value & 7) << 06); } } + public int RibbonCountG3Smart { get { return (int)(RIB0 >> 09) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 09)) | (uint)(value & 7) << 09); } } + public int RibbonCountG3Tough { get { return (int)(RIB0 >> 12) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 12)) | (uint)(value & 7) << 12); } } + public bool RibbonChampionG3Hoenn { get { return (RIB0 & (1 << 15)) == 1 << 15; } set { RIB0 = (uint)(RIB0 & ~(1 << 15) | (uint)(value ? 1 << 15 : 0)); } } + public bool RibbonWinning { get { return (RIB0 & (1 << 16)) == 1 << 16; } set { RIB0 = (uint)(RIB0 & ~(1 << 16) | (uint)(value ? 1 << 16 : 0)); } } + public bool RibbonVictory { get { return (RIB0 & (1 << 17)) == 1 << 17; } set { RIB0 = (uint)(RIB0 & ~(1 << 17) | (uint)(value ? 1 << 17 : 0)); } } + public bool RibbonArtist { get { return (RIB0 & (1 << 18)) == 1 << 18; } set { RIB0 = (uint)(RIB0 & ~(1 << 18) | (uint)(value ? 1 << 18 : 0)); } } + public bool RibbonEffort { get { return (RIB0 & (1 << 19)) == 1 << 19; } set { RIB0 = (uint)(RIB0 & ~(1 << 19) | (uint)(value ? 1 << 19 : 0)); } } + public bool RibbonChampionBattle { get { return (RIB0 & (1 << 20)) == 1 << 20; } set { RIB0 = (uint)(RIB0 & ~(1 << 20) | (uint)(value ? 1 << 20 : 0)); } } + public bool RibbonChampionRegional { get { return (RIB0 & (1 << 21)) == 1 << 21; } set { RIB0 = (uint)(RIB0 & ~(1 << 21) | (uint)(value ? 1 << 21 : 0)); } } + public bool RibbonChampionNational { get { return (RIB0 & (1 << 22)) == 1 << 22; } set { RIB0 = (uint)(RIB0 & ~(1 << 22) | (uint)(value ? 1 << 22 : 0)); } } + public bool RibbonCountry { get { return (RIB0 & (1 << 23)) == 1 << 23; } set { RIB0 = (uint)(RIB0 & ~(1 << 23) | (uint)(value ? 1 << 23 : 0)); } } + public bool RibbonNational { get { return (RIB0 & (1 << 24)) == 1 << 24; } set { RIB0 = (uint)(RIB0 & ~(1 << 24) | (uint)(value ? 1 << 24 : 0)); } } + public bool RibbonEarth { get { return (RIB0 & (1 << 25)) == 1 << 25; } set { RIB0 = (uint)(RIB0 & ~(1 << 25) | (uint)(value ? 1 << 25 : 0)); } } + public bool RibbonWorld { get { return (RIB0 & (1 << 26)) == 1 << 26; } set { RIB0 = (uint)(RIB0 & ~(1 << 26) | (uint)(value ? 1 << 26 : 0)); } } + public bool Unused1 { get { return (RIB0 & (1 << 27)) == 1 << 27; } set { RIB0 = (uint)(RIB0 & ~(1 << 27) | (uint)(value ? 1 << 27 : 0)); } } + public bool Unused2 { get { return (RIB0 & (1 << 28)) == 1 << 28; } set { RIB0 = (uint)(RIB0 & ~(1 << 28) | (uint)(value ? 1 << 28 : 0)); } } + public bool Unused3 { get { return (RIB0 & (1 << 29)) == 1 << 29; } set { RIB0 = (uint)(RIB0 & ~(1 << 29) | (uint)(value ? 1 << 29 : 0)); } } + public bool Unused4 { get { return (RIB0 & (1 << 30)) == 1 << 30; } set { RIB0 = (uint)(RIB0 & ~(1 << 30) | (uint)(value ? 1 << 30 : 0)); } } + public override bool FatefulEncounter { get { return RIB0 >> 31 == 1; } set { RIB0 = (RIB0 & ~(1 << 31)) | (uint)(value ? 1 << 31 : 0); } } #endregion public override int Stat_Level { get { return Data[0x54]; } set { Data[0x54] = (byte)value; } } @@ -165,7 +165,7 @@ public override byte[] Encrypt() } public override bool getGenderIsValid() { - int gv = PKX.Personal[Species].Gender; + int gv = PersonalTable.RS[Species].Gender; if (gv == 255) return Gender == 2; @@ -180,6 +180,10 @@ public override bool getGenderIsValid() return false; } + public override bool CanHoldItem(ushort[] ValidArray) + { + return ValidArray.Contains((ushort)G3Item); + } public PK4 convertToPK4() { @@ -192,11 +196,11 @@ public PK4 convertToPK4() SID = SID, EXP = IsEgg ? PKX.getEXP(5, Species) : EXP, IsEgg = false, - OT_Friendship = 40, - Circle = Circle, - Square = Square, - Triangle = Triangle, - Heart = Heart, + OT_Friendship = 70, + MarkCircle = MarkCircle, + MarkSquare = MarkSquare, + MarkTriangle = MarkTriangle, + MarkHeart = MarkHeart, Language = Language, EV_HP = EV_HP, EV_ATK = EV_ATK, @@ -210,7 +214,6 @@ public PK4 convertToPK4() CNT_Smart = CNT_Smart, CNT_Tough = CNT_Tough, CNT_Sheen = CNT_Sheen, - FatefulEncounter = FatefulEncounter, Move1 = Move1, Move2 = Move2, Move3 = Move3, @@ -219,17 +222,17 @@ public PK4 convertToPK4() Move2_PPUps = Move2_PPUps, Move3_PPUps = Move3_PPUps, Move4_PPUps = Move4_PPUps, - Move1_PP = PKX.getMovePP(Move1, Move1_PPUps), - Move2_PP = PKX.getMovePP(Move2, Move2_PPUps), - Move3_PP = PKX.getMovePP(Move3, Move3_PPUps), - Move4_PP = PKX.getMovePP(Move4, Move4_PPUps), + Move1_PP = getMovePP(Move1, Move1_PPUps), + Move2_PP = getMovePP(Move2, Move2_PPUps), + Move3_PP = getMovePP(Move3, Move3_PPUps), + Move4_PP = getMovePP(Move4, Move4_PPUps), IV_HP = IV_HP, IV_ATK = IV_ATK, IV_DEF = IV_DEF, IV_SPA = IV_SPA, IV_SPD = IV_SPD, IV_SPE = IV_SPE, - Ability = PKX.Gen3Abilities[Species][Ability], + Ability = Ability, Version = Version, Ball = Ball, PKRS_Strain = PKRS_Strain, @@ -239,41 +242,45 @@ public PK4 convertToPK4() Met_Month = moment.Month, Met_Day = moment.Day, Met_Location = 0x37, // Pal Park - RIB6_4 = Champion, - RIB6_5 = Winning, - RIB6_6 = Victory, - RIB6_7 = Artist, - RIB7_0 = Effort, - RIB7_1 = Special1, // Battle Champion Ribbon - RIB7_2 = Special2, // Regional Champion Ribbon - RIB7_3 = Special3, // National Champion Ribbon - RIB7_4 = Special4, // Country Ribbon - RIB7_5 = Special5, // National Ribbon - RIB7_6 = Special6, // Earth Ribbon - RIB7_7 = Special7, // World Ribbon + + RibbonChampionG3Hoenn = RibbonChampionG3Hoenn, + RibbonWinning = RibbonWinning, + RibbonVictory = RibbonVictory, + RibbonArtist = RibbonArtist, + RibbonEffort = RibbonEffort, + RibbonChampionBattle = RibbonChampionBattle, + RibbonChampionRegional = RibbonChampionRegional, + RibbonChampionNational = RibbonChampionNational, + RibbonCountry = RibbonCountry, + RibbonNational = RibbonNational, + RibbonEarth = RibbonEarth, + RibbonWorld = RibbonWorld, }; + if (Met_Location == 0xFF) // Fateful + pk4.FatefulEncounter = Met_Location == 0xFF || FatefulEncounter; // obedience flag + // Remaining Ribbons - pk4.RIB4_0 |= Cool_Ribbons > 0; - pk4.RIB4_1 |= Cool_Ribbons > 1; - pk4.RIB4_2 |= Cool_Ribbons > 2; - pk4.RIB4_3 |= Cool_Ribbons > 3; - pk4.RIB4_4 |= Beauty_Ribbons > 0; - pk4.RIB4_5 |= Beauty_Ribbons > 1; - pk4.RIB4_6 |= Beauty_Ribbons > 2; - pk4.RIB4_7 |= Beauty_Ribbons > 3; - pk4.RIB5_0 |= Cute_Ribbons > 0; - pk4.RIB5_1 |= Cute_Ribbons > 1; - pk4.RIB5_2 |= Cute_Ribbons > 2; - pk4.RIB5_3 |= Cute_Ribbons > 3; - pk4.RIB5_4 |= Smart_Ribbons > 0; - pk4.RIB5_5 |= Smart_Ribbons > 1; - pk4.RIB5_6 |= Smart_Ribbons > 2; - pk4.RIB5_7 |= Smart_Ribbons > 3; - pk4.RIB6_0 |= Tough_Ribbons > 0; - pk4.RIB6_1 |= Tough_Ribbons > 1; - pk4.RIB6_2 |= Tough_Ribbons > 2; - pk4.RIB6_3 |= Tough_Ribbons > 3; + pk4.RibbonG3Cool |= RibbonCountG3Cool > 0; + pk4.RibbonG3CoolSuper |= RibbonCountG3Cool > 1; + pk4.RibbonG3CoolHyper |= RibbonCountG3Cool > 2; + pk4.RibbonG3CoolMaster |= RibbonCountG3Cool > 3; + pk4.RibbonG3Beauty |= RibbonCountG3Beauty > 0; + pk4.RibbonG3BeautySuper |= RibbonCountG3Beauty > 1; + pk4.RibbonG3BeautyHyper |= RibbonCountG3Beauty > 2; + pk4.RibbonG3BeautyMaster |= RibbonCountG3Beauty > 3; + pk4.RibbonG3Cute |= RibbonCountG3Cute > 0; + pk4.RibbonG3CuteSuper |= RibbonCountG3Cute > 1; + pk4.RibbonG3CuteHyper |= RibbonCountG3Cute > 2; + pk4.RibbonG3CuteMaster |= RibbonCountG3Cute > 3; + pk4.RibbonG3Smart |= RibbonCountG3Smart > 0; + pk4.RibbonG3SmartSuper |= RibbonCountG3Smart > 1; + pk4.RibbonG3SmartHyper |= RibbonCountG3Smart > 2; + pk4.RibbonG3SmartMaster |= RibbonCountG3Smart > 3; + pk4.RibbonG3Tough |= RibbonCountG3Tough > 0; + pk4.RibbonG3ToughSuper |= RibbonCountG3Tough > 1; + pk4.RibbonG3ToughHyper |= RibbonCountG3Tough > 2; + pk4.RibbonG3ToughMaster |= RibbonCountG3Tough > 3; // Yay for reusing string buffers! PKX.G4TransferTrashBytes[pk4.Language].CopyTo(pk4.Data, 0x48 + 4); @@ -287,8 +294,11 @@ public PK4 convertToPK4() pk4.IsNicknamed = IsNicknamed; // Unown Form - if (Species == 201) - pk4.AltForm = PKX.getUnownForm(PID); + pk4.AltForm = AltForm; + + int item = HeldItem; + if (HeldItem > 0) + pk4.HeldItem = item; // Remove HM moves int[] banned = { 15, 19, 57, 70, 148, 249, 127, 291 }; diff --git a/PKM/PK4.cs b/PKM/PK4.cs index 007cb2b38..f5a73b823 100644 --- a/PKM/PK4.cs +++ b/PKM/PK4.cs @@ -9,7 +9,7 @@ public class PK4 : PKM // 4th Generation PKM File { 0x42, 0x43, 0x5E, 0x63, 0x64, 0x65, 0x66, 0x67, 0x87 }; - public override int SIZE_PARTY => PKX.SIZE_4PARTY; + public sealed override int SIZE_PARTY => PKX.SIZE_4PARTY; public override int SIZE_STORED => PKX.SIZE_4STORED; public override int Format => 4; public PK4(byte[] decryptedData = null, string ident = null) @@ -57,37 +57,37 @@ public PK4(byte[] decryptedData = null, string ident = null) public override int CNT_Sheen { get { return Data[0x23]; } set { Data[0x23] = (byte)value; } } private byte RIB0 { get { return Data[0x24]; } set { Data[0x24] = value; } } // Sinnoh 1 - public bool RIB0_0 { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Sinnoh Champ Ribbon - public bool RIB0_1 { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Ability Ribbon - public bool RIB0_2 { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Great Ability Ribbon - public bool RIB0_3 { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Double Ability Ribbon - public bool RIB0_4 { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Multi Ability Ribbon - public bool RIB0_5 { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Pair Ability Ribbon - public bool RIB0_6 { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // World Ability Ribbon - public bool RIB0_7 { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Alert Ribbon - private byte RIB1 { get { return Data[0x25]; } set { Data[0x25] = value; } } // Sinnoh 2 - public bool RIB1_0 { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Shock Ribbon - public bool RIB1_1 { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Downcast Ribbon - public bool RIB1_2 { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Careless Ribbon - public bool RIB1_3 { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Relax Ribbon - public bool RIB1_4 { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Snooze Ribbon - public bool RIB1_5 { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Smile Ribbon - public bool RIB1_6 { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Gorgeous Ribbon - public bool RIB1_7 { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Royal Ribbon + private byte RIB1 { get { return Data[0x25]; } set { Data[0x25] = value; } } // Sinnoh 2 private byte RIB2 { get { return Data[0x26]; } set { Data[0x26] = value; } } // Unova 1 - public bool RIB2_0 { get { return (RIB2 & (1 << 0)) == 1 << 0; } set { RIB2 = (byte)(RIB2 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Gorgeous Royal Ribbon - public bool RIB2_1 { get { return (RIB2 & (1 << 1)) == 1 << 1; } set { RIB2 = (byte)(RIB2 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Footprint Ribbon - public bool RIB2_2 { get { return (RIB2 & (1 << 2)) == 1 << 2; } set { RIB2 = (byte)(RIB2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Record Ribbon - public bool RIB2_3 { get { return (RIB2 & (1 << 3)) == 1 << 3; } set { RIB2 = (byte)(RIB2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Event Ribbon - public bool RIB2_4 { get { return (RIB2 & (1 << 4)) == 1 << 4; } set { RIB2 = (byte)(RIB2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Legend Ribbon - public bool RIB2_5 { get { return (RIB2 & (1 << 5)) == 1 << 5; } set { RIB2 = (byte)(RIB2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // World Champion Ribbon - public bool RIB2_6 { get { return (RIB2 & (1 << 6)) == 1 << 6; } set { RIB2 = (byte)(RIB2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Birthday Ribbon - public bool RIB2_7 { get { return (RIB2 & (1 << 7)) == 1 << 7; } set { RIB2 = (byte)(RIB2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Special Ribbon - private byte RIB3 { get { return Data[0x27]; } set { Data[0x27] = value; } } // Unova 2 - public bool RIB3_0 { get { return (RIB3 & (1 << 0)) == 1 << 0; } set { RIB3 = (byte)(RIB3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Souvenir Ribbon - public bool RIB3_1 { get { return (RIB3 & (1 << 1)) == 1 << 1; } set { RIB3 = (byte)(RIB3 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Wishing Ribbon - public bool RIB3_2 { get { return (RIB3 & (1 << 2)) == 1 << 2; } set { RIB3 = (byte)(RIB3 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Classic Ribbon - public bool RIB3_3 { get { return (RIB3 & (1 << 3)) == 1 << 3; } set { RIB3 = (byte)(RIB3 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Premier Ribbon + private byte RIB3 { get { return Data[0x27]; } set { Data[0x27] = value; } } // Unova 2 + public bool RibbonChampionSinnoh { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonAbility { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonAbilityGreat { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonAbilityDouble { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonAbilityMulti { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonAbilityPair { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonAbilityWorld { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonAlert { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonShock { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonDowncast { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonCareless { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonRelax { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonSnooze { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonSmile { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonGorgeous { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonRoyal { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonGorgeousRoyal { get { return (RIB2 & (1 << 0)) == 1 << 0; } set { RIB2 = (byte)(RIB2 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonFootprint { get { return (RIB2 & (1 << 1)) == 1 << 1; } set { RIB2 = (byte)(RIB2 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonRecord { get { return (RIB2 & (1 << 2)) == 1 << 2; } set { RIB2 = (byte)(RIB2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonEvent { get { return (RIB2 & (1 << 3)) == 1 << 3; } set { RIB2 = (byte)(RIB2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonLegend { get { return (RIB2 & (1 << 4)) == 1 << 4; } set { RIB2 = (byte)(RIB2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonWorldChampion { get { return (RIB2 & (1 << 5)) == 1 << 5; } set { RIB2 = (byte)(RIB2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonBirthday { get { return (RIB2 & (1 << 6)) == 1 << 6; } set { RIB2 = (byte)(RIB2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonSpecial { get { return (RIB2 & (1 << 7)) == 1 << 7; } set { RIB2 = (byte)(RIB2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonSouvenir { get { return (RIB3 & (1 << 0)) == 1 << 0; } set { RIB3 = (byte)(RIB3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonWishing { get { return (RIB3 & (1 << 1)) == 1 << 1; } set { RIB3 = (byte)(RIB3 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonClassic { get { return (RIB3 & (1 << 2)) == 1 << 2; } set { RIB3 = (byte)(RIB3 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonPremier { get { return (RIB3 & (1 << 3)) == 1 << 3; } set { RIB3 = (byte)(RIB3 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } public bool RIB3_4 { get { return (RIB3 & (1 << 4)) == 1 << 4; } set { RIB3 = (byte)(RIB3 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Unused public bool RIB3_5 { get { return (RIB3 & (1 << 5)) == 1 << 5; } set { RIB3 = (byte)(RIB3 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Unused public bool RIB3_6 { get { return (RIB3 & (1 << 6)) == 1 << 6; } set { RIB3 = (byte)(RIB3 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Unused @@ -118,41 +118,41 @@ public PK4(byte[] decryptedData = null, string ident = null) public override bool IsNicknamed { get { return ((IV32 >> 31) & 1) == 1; } set { IV32 = (IV32 & 0x7FFFFFFF) | (value ? 0x80000000 : 0); } } private byte RIB4 { get { return Data[0x3C]; } set { Data[0x3C] = value; } } // Hoenn 1a - public bool RIB4_0 { get { return (RIB4 & (1 << 0)) == 1 << 0; } set { RIB4 = (byte)(RIB4 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Cool Ribbon - public bool RIB4_1 { get { return (RIB4 & (1 << 1)) == 1 << 1; } set { RIB4 = (byte)(RIB4 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Cool Ribbon Super - public bool RIB4_2 { get { return (RIB4 & (1 << 2)) == 1 << 2; } set { RIB4 = (byte)(RIB4 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Cool Ribbon Hyper - public bool RIB4_3 { get { return (RIB4 & (1 << 3)) == 1 << 3; } set { RIB4 = (byte)(RIB4 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Cool Ribbon Master - public bool RIB4_4 { get { return (RIB4 & (1 << 4)) == 1 << 4; } set { RIB4 = (byte)(RIB4 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Beauty Ribbon - public bool RIB4_5 { get { return (RIB4 & (1 << 5)) == 1 << 5; } set { RIB4 = (byte)(RIB4 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Beauty Ribbon Super - public bool RIB4_6 { get { return (RIB4 & (1 << 6)) == 1 << 6; } set { RIB4 = (byte)(RIB4 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Beauty Ribbon Hyper - public bool RIB4_7 { get { return (RIB4 & (1 << 7)) == 1 << 7; } set { RIB4 = (byte)(RIB4 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Beauty Ribbon Master - private byte RIB5 { get { return Data[0x3D]; } set { Data[0x3D] = value; } } // Hoenn 1b - public bool RIB5_0 { get { return (RIB5 & (1 << 0)) == 1 << 0; } set { RIB5 = (byte)(RIB5 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Cute Ribbon - public bool RIB5_1 { get { return (RIB5 & (1 << 1)) == 1 << 1; } set { RIB5 = (byte)(RIB5 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Cute Ribbon Super - public bool RIB5_2 { get { return (RIB5 & (1 << 2)) == 1 << 2; } set { RIB5 = (byte)(RIB5 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Cute Ribbon Hyper - public bool RIB5_3 { get { return (RIB5 & (1 << 3)) == 1 << 3; } set { RIB5 = (byte)(RIB5 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Cute Ribbon Master - public bool RIB5_4 { get { return (RIB5 & (1 << 4)) == 1 << 4; } set { RIB5 = (byte)(RIB5 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Smart Ribbon - public bool RIB5_5 { get { return (RIB5 & (1 << 5)) == 1 << 5; } set { RIB5 = (byte)(RIB5 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Smart Ribbon Super - public bool RIB5_6 { get { return (RIB5 & (1 << 6)) == 1 << 6; } set { RIB5 = (byte)(RIB5 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Smart Ribbon Hyper - public bool RIB5_7 { get { return (RIB5 & (1 << 7)) == 1 << 7; } set { RIB5 = (byte)(RIB5 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Smart Ribbon Master + private byte RIB5 { get { return Data[0x3D]; } set { Data[0x3D] = value; } } // Hoenn 1b private byte RIB6 { get { return Data[0x3E]; } set { Data[0x3E] = value; } } // Hoenn 2a - public bool RIB6_0 { get { return (RIB6 & (1 << 0)) == 1 << 0; } set { RIB6 = (byte)(RIB6 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Tough Ribbon - public bool RIB6_1 { get { return (RIB6 & (1 << 1)) == 1 << 1; } set { RIB6 = (byte)(RIB6 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Tough Ribbon Super - public bool RIB6_2 { get { return (RIB6 & (1 << 2)) == 1 << 2; } set { RIB6 = (byte)(RIB6 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Tough Ribbon Hyper - public bool RIB6_3 { get { return (RIB6 & (1 << 3)) == 1 << 3; } set { RIB6 = (byte)(RIB6 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Tough Ribbon Master - public bool RIB6_4 { get { return (RIB6 & (1 << 4)) == 1 << 4; } set { RIB6 = (byte)(RIB6 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Champion Ribbon - public bool RIB6_5 { get { return (RIB6 & (1 << 5)) == 1 << 5; } set { RIB6 = (byte)(RIB6 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Winning Ribbon - public bool RIB6_6 { get { return (RIB6 & (1 << 6)) == 1 << 6; } set { RIB6 = (byte)(RIB6 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Victory Ribbon - public bool RIB6_7 { get { return (RIB6 & (1 << 7)) == 1 << 7; } set { RIB6 = (byte)(RIB6 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Artist Ribbon - private byte RIB7 { get { return Data[0x3F]; } set { Data[0x3F] = value; } } // Hoenn 2b - public bool RIB7_0 { get { return (RIB7 & (1 << 0)) == 1 << 0; } set { RIB7 = (byte)(RIB7 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Effort Ribbon - public bool RIB7_1 { get { return (RIB7 & (1 << 1)) == 1 << 1; } set { RIB7 = (byte)(RIB7 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Battle Champion Ribbon - public bool RIB7_2 { get { return (RIB7 & (1 << 2)) == 1 << 2; } set { RIB7 = (byte)(RIB7 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Regional Champion Ribbon - public bool RIB7_3 { get { return (RIB7 & (1 << 3)) == 1 << 3; } set { RIB7 = (byte)(RIB7 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // National Champion Ribbon - public bool RIB7_4 { get { return (RIB7 & (1 << 4)) == 1 << 4; } set { RIB7 = (byte)(RIB7 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Country Ribbon - public bool RIB7_5 { get { return (RIB7 & (1 << 5)) == 1 << 5; } set { RIB7 = (byte)(RIB7 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // National Ribbon - public bool RIB7_6 { get { return (RIB7 & (1 << 6)) == 1 << 6; } set { RIB7 = (byte)(RIB7 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Earth Ribbon - public bool RIB7_7 { get { return (RIB7 & (1 << 7)) == 1 << 7; } set { RIB7 = (byte)(RIB7 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // World Ribbon + private byte RIB7 { get { return Data[0x3F]; } set { Data[0x3F] = value; } } // Hoenn 2b + public bool RibbonG3Cool { get { return (RIB4 & (1 << 0)) == 1 << 0; } set { RIB4 = (byte)(RIB4 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG3CoolSuper { get { return (RIB4 & (1 << 1)) == 1 << 1; } set { RIB4 = (byte)(RIB4 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG3CoolHyper { get { return (RIB4 & (1 << 2)) == 1 << 2; } set { RIB4 = (byte)(RIB4 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG3CoolMaster { get { return (RIB4 & (1 << 3)) == 1 << 3; } set { RIB4 = (byte)(RIB4 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonG3Beauty { get { return (RIB4 & (1 << 4)) == 1 << 4; } set { RIB4 = (byte)(RIB4 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonG3BeautySuper { get { return (RIB4 & (1 << 5)) == 1 << 5; } set { RIB4 = (byte)(RIB4 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonG3BeautyHyper { get { return (RIB4 & (1 << 6)) == 1 << 6; } set { RIB4 = (byte)(RIB4 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonG3BeautyMaster { get { return (RIB4 & (1 << 7)) == 1 << 7; } set { RIB4 = (byte)(RIB4 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonG3Cute { get { return (RIB5 & (1 << 0)) == 1 << 0; } set { RIB5 = (byte)(RIB5 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG3CuteSuper { get { return (RIB5 & (1 << 1)) == 1 << 1; } set { RIB5 = (byte)(RIB5 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG3CuteHyper { get { return (RIB5 & (1 << 2)) == 1 << 2; } set { RIB5 = (byte)(RIB5 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG3CuteMaster { get { return (RIB5 & (1 << 3)) == 1 << 3; } set { RIB5 = (byte)(RIB5 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonG3Smart { get { return (RIB5 & (1 << 4)) == 1 << 4; } set { RIB5 = (byte)(RIB5 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonG3SmartSuper { get { return (RIB5 & (1 << 5)) == 1 << 5; } set { RIB5 = (byte)(RIB5 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonG3SmartHyper { get { return (RIB5 & (1 << 6)) == 1 << 6; } set { RIB5 = (byte)(RIB5 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonG3SmartMaster { get { return (RIB5 & (1 << 7)) == 1 << 7; } set { RIB5 = (byte)(RIB5 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonG3Tough { get { return (RIB6 & (1 << 0)) == 1 << 0; } set { RIB6 = (byte)(RIB6 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG3ToughSuper { get { return (RIB6 & (1 << 1)) == 1 << 1; } set { RIB6 = (byte)(RIB6 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG3ToughHyper { get { return (RIB6 & (1 << 2)) == 1 << 2; } set { RIB6 = (byte)(RIB6 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG3ToughMaster { get { return (RIB6 & (1 << 3)) == 1 << 3; } set { RIB6 = (byte)(RIB6 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonChampionG3Hoenn { get { return (RIB6 & (1 << 4)) == 1 << 4; } set { RIB6 = (byte)(RIB6 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonWinning { get { return (RIB6 & (1 << 5)) == 1 << 5; } set { RIB6 = (byte)(RIB6 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonVictory { get { return (RIB6 & (1 << 6)) == 1 << 6; } set { RIB6 = (byte)(RIB6 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonArtist { get { return (RIB6 & (1 << 7)) == 1 << 7; } set { RIB6 = (byte)(RIB6 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonEffort { get { return (RIB7 & (1 << 0)) == 1 << 0; } set { RIB7 = (byte)(RIB7 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonChampionBattle { get { return (RIB7 & (1 << 1)) == 1 << 1; } set { RIB7 = (byte)(RIB7 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonChampionRegional{ get { return (RIB7 & (1 << 2)) == 1 << 2; } set { RIB7 = (byte)(RIB7 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonChampionNational{ get { return (RIB7 & (1 << 3)) == 1 << 3; } set { RIB7 = (byte)(RIB7 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonCountry { get { return (RIB7 & (1 << 4)) == 1 << 4; } set { RIB7 = (byte)(RIB7 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonNational { get { return (RIB7 & (1 << 5)) == 1 << 5; } set { RIB7 = (byte)(RIB7 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonEarth { get { return (RIB7 & (1 << 6)) == 1 << 6; } set { RIB7 = (byte)(RIB7 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonWorld { get { return (RIB7 & (1 << 7)) == 1 << 7; } set { RIB7 = (byte)(RIB7 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } public override bool FatefulEncounter { get { return (Data[0x40] & 1) == 1; } set { Data[0x40] = (byte)(Data[0x40] & ~0x01 | (value ? 1 : 0)); } } public override int Gender { get { return (Data[0x40] >> 1) & 0x3; } set { Data[0x40] = (byte)(Data[0x40] & ~0x06 | (value << 1)); } } @@ -184,33 +184,33 @@ public override string Nickname // 0x5E unused public override int Version { get { return Data[0x5F]; } set { Data[0x5F] = (byte)value; } } private byte RIB8 { get { return Data[0x60]; } set { Data[0x60] = value; } } // Sinnoh 3 - public bool RIB8_0 { get { return (RIB8 & (1 << 0)) == 1 << 0; } set { RIB8 = (byte)(RIB8 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Cool Ribbon - public bool RIB8_1 { get { return (RIB8 & (1 << 1)) == 1 << 1; } set { RIB8 = (byte)(RIB8 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Cool Ribbon Great - public bool RIB8_2 { get { return (RIB8 & (1 << 2)) == 1 << 2; } set { RIB8 = (byte)(RIB8 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Cool Ribbon Ultra - public bool RIB8_3 { get { return (RIB8 & (1 << 3)) == 1 << 3; } set { RIB8 = (byte)(RIB8 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Cool Ribbon Master - public bool RIB8_4 { get { return (RIB8 & (1 << 4)) == 1 << 4; } set { RIB8 = (byte)(RIB8 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Beauty Ribbon - public bool RIB8_5 { get { return (RIB8 & (1 << 5)) == 1 << 5; } set { RIB8 = (byte)(RIB8 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Beauty Ribbon Great - public bool RIB8_6 { get { return (RIB8 & (1 << 6)) == 1 << 6; } set { RIB8 = (byte)(RIB8 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Beauty Ribbon Ultra - public bool RIB8_7 { get { return (RIB8 & (1 << 7)) == 1 << 7; } set { RIB8 = (byte)(RIB8 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Beauty Ribbon Master - private byte RIB9 { get { return Data[0x61]; } set { Data[0x61] = value; } } // Sinnoh 4 - public bool RIB9_0 { get { return (RIB9 & (1 << 0)) == 1 << 0; } set { RIB9 = (byte)(RIB9 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Cute Ribbon - public bool RIB9_1 { get { return (RIB9 & (1 << 1)) == 1 << 1; } set { RIB9 = (byte)(RIB9 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Cute Ribbon Great - public bool RIB9_2 { get { return (RIB9 & (1 << 2)) == 1 << 2; } set { RIB9 = (byte)(RIB9 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Cute Ribbon Ultra - public bool RIB9_3 { get { return (RIB9 & (1 << 3)) == 1 << 3; } set { RIB9 = (byte)(RIB9 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Cute Ribbon Master - public bool RIB9_4 { get { return (RIB9 & (1 << 4)) == 1 << 4; } set { RIB9 = (byte)(RIB9 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Smart Ribbon - public bool RIB9_5 { get { return (RIB9 & (1 << 5)) == 1 << 5; } set { RIB9 = (byte)(RIB9 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Smart Ribbon Great - public bool RIB9_6 { get { return (RIB9 & (1 << 6)) == 1 << 6; } set { RIB9 = (byte)(RIB9 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Smart Ribbon Ultra - public bool RIB9_7 { get { return (RIB9 & (1 << 7)) == 1 << 7; } set { RIB9 = (byte)(RIB9 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Smart Ribbon Master + private byte RIB9 { get { return Data[0x61]; } set { Data[0x61] = value; } } // Sinnoh 4 private byte RIBA { get { return Data[0x62]; } set { Data[0x62] = value; } } // Sinnoh 5 - public bool RIBA_0 { get { return (RIBA & (1 << 0)) == 1 << 0; } set { RIBA = (byte)(RIBA & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Tough Ribbon - public bool RIBA_1 { get { return (RIBA & (1 << 1)) == 1 << 1; } set { RIBA = (byte)(RIBA & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Tough Ribbon Great - public bool RIBA_2 { get { return (RIBA & (1 << 2)) == 1 << 2; } set { RIBA = (byte)(RIBA & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Tough Ribbon Ultra - public bool RIBA_3 { get { return (RIBA & (1 << 3)) == 1 << 3; } set { RIBA = (byte)(RIBA & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Tough Ribbon Master + private byte RIBB { get { return Data[0x63]; } set { Data[0x63] = value; } } // Sinnoh 6 + public bool RibbonG4Cool { get { return (RIB8 & (1 << 0)) == 1 << 0; } set { RIB8 = (byte)(RIB8 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG4CoolGreat { get { return (RIB8 & (1 << 1)) == 1 << 1; } set { RIB8 = (byte)(RIB8 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG4CoolUltra { get { return (RIB8 & (1 << 2)) == 1 << 2; } set { RIB8 = (byte)(RIB8 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG4CoolMaster { get { return (RIB8 & (1 << 3)) == 1 << 3; } set { RIB8 = (byte)(RIB8 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonG4Beauty { get { return (RIB8 & (1 << 4)) == 1 << 4; } set { RIB8 = (byte)(RIB8 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonG4BeautyGreat { get { return (RIB8 & (1 << 5)) == 1 << 5; } set { RIB8 = (byte)(RIB8 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonG4BeautyUltra { get { return (RIB8 & (1 << 6)) == 1 << 6; } set { RIB8 = (byte)(RIB8 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonG4BeautyMaster { get { return (RIB8 & (1 << 7)) == 1 << 7; } set { RIB8 = (byte)(RIB8 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonG4Cute { get { return (RIB9 & (1 << 0)) == 1 << 0; } set { RIB9 = (byte)(RIB9 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG4CuteGreat { get { return (RIB9 & (1 << 1)) == 1 << 1; } set { RIB9 = (byte)(RIB9 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG4CuteUltra { get { return (RIB9 & (1 << 2)) == 1 << 2; } set { RIB9 = (byte)(RIB9 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG4CuteMaster { get { return (RIB9 & (1 << 3)) == 1 << 3; } set { RIB9 = (byte)(RIB9 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonG4Smart { get { return (RIB9 & (1 << 4)) == 1 << 4; } set { RIB9 = (byte)(RIB9 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonG4SmartGreat { get { return (RIB9 & (1 << 5)) == 1 << 5; } set { RIB9 = (byte)(RIB9 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonG4SmartUltra { get { return (RIB9 & (1 << 6)) == 1 << 6; } set { RIB9 = (byte)(RIB9 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonG4SmartMaster { get { return (RIB9 & (1 << 7)) == 1 << 7; } set { RIB9 = (byte)(RIB9 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonG4Tough { get { return (RIBA & (1 << 0)) == 1 << 0; } set { RIBA = (byte)(RIBA & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG4ToughGreat { get { return (RIBA & (1 << 1)) == 1 << 1; } set { RIBA = (byte)(RIBA & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG4ToughUltra { get { return (RIBA & (1 << 2)) == 1 << 2; } set { RIBA = (byte)(RIBA & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG4ToughMaster { get { return (RIBA & (1 << 3)) == 1 << 3; } set { RIBA = (byte)(RIBA & ~(1 << 3) | (value ? 1 << 3 : 0)); } } public bool RIBA_4 { get { return (RIBA & (1 << 4)) == 1 << 4; } set { RIBA = (byte)(RIBA & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Unused public bool RIBA_5 { get { return (RIBA & (1 << 5)) == 1 << 5; } set { RIBA = (byte)(RIBA & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Unused public bool RIBA_6 { get { return (RIBA & (1 << 6)) == 1 << 6; } set { RIBA = (byte)(RIBA & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Unused public bool RIBA_7 { get { return (RIBA & (1 << 7)) == 1 << 7; } set { RIBA = (byte)(RIBA & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Unused - private byte RIBB { get { return Data[0x63]; } set { Data[0x63] = value; } } // Sinnoh 6 public bool RIBB_0 { get { return (RIBB & (1 << 0)) == 1 << 0; } set { RIBB = (byte)(RIBB & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Unused public bool RIBB_1 { get { return (RIBB & (1 << 1)) == 1 << 1; } set { RIBB = (byte)(RIBB & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Unused public bool RIBB_2 { get { return (RIBB & (1 << 2)) == 1 << 2; } set { RIBB = (byte)(RIBB & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Unused @@ -261,10 +261,21 @@ public override int Egg_Location } set { - if (PtHGSS) + if (value == 0) + { + BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x44); + BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x7E); + } + else if (PtHGSS) { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x44); - BitConverter.GetBytes(0x7D0).CopyTo(Data, 0x7E); + BitConverter.GetBytes(0xBBA).CopyTo(Data, 0x7E); // Faraway Place (for DP display) + } + else if ((value < 2000 && value > 111) || (value < 3000 && value > 2010)) + { + // Met location not in DP, set to Mystery Zone (0, illegal) as opposed to Faraway Place + BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x44); + BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x7E); } else { @@ -284,10 +295,21 @@ public override int Met_Location } set { - if (PtHGSS) + if (value == 0) + { + BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x46); + BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x80); + } + else if (PtHGSS) { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x46); - BitConverter.GetBytes(0x7D0).CopyTo(Data, 0x80); + BitConverter.GetBytes(0xBBA).CopyTo(Data, 0x80); // Faraway Place (for DP display) + } + else if ((value < 2000 && value > 111) || (value < 3000 && value > 2010)) + { + // Met location not in DP, set to Mystery Zone (0, illegal) as opposed to Faraway Place + BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x46); + BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x80); } else { @@ -299,11 +321,26 @@ public override int Met_Location private byte PKRS { get { return Data[0x82]; } set { Data[0x82] = value; } } public override int PKRS_Days { get { return PKRS & 0xF; } set { PKRS = (byte)(PKRS & ~0xF | value); } } public override int PKRS_Strain { get { return PKRS >> 4; } set { PKRS = (byte)(PKRS & 0xF | (value << 4)); } } - public override int Ball { get { return Data[0x83]; } set { Data[0x83] = (byte)value; } } + public override int Ball + { + get { return Data[HGSS ? 0x86 : 0x83]; } + set + { + if (HGSS) + { + Data[0x83] = (byte)(value <= 0x10 ? value : 4); // Ball to display in DP (cap at Cherish) + Data[0x86] = (byte)(value <= 0x18 ? value : 4); // Cap at Comp Ball + } + else + { + Data[0x83] = (byte)(value <= 0x10 ? value : 4); // Cap at Cherish Ball + Data[0x86] = 0; // Unused + } + } + } public override int Met_Level { get { return Data[0x84] & ~0x80; } set { Data[0x84] = (byte)((Data[0x84] & 0x80) | value); } } public override int OT_Gender { get { return Data[0x84] >> 7; } set { Data[0x84] = (byte)((Data[0x84] & ~0x80) | value << 7); } } public override int EncounterType { get { return Data[0x85]; } set { Data[0x85] = (byte)value; } } - public int HGSSBall { get { return Data[0x86]; } set { Data[0x86] = (byte)value; } } // Unused 0x87 #endregion @@ -340,7 +377,7 @@ public override int Characteristic // Methods public override bool getGenderIsValid() { - int gv = PKX.Personal[Species].Gender; + int gv = PersonalTable.HGSS[Species].Gender; if (gv == 255) return Gender == 2; @@ -380,10 +417,10 @@ public PK5 convertToPK5() }; // Fix PP - pk5.Move1_PP = PKX.getMovePP(pk5.Move1_PP, pk5.Move1_PPUps); - pk5.Move2_PP = PKX.getMovePP(pk5.Move2_PP, pk5.Move2_PPUps); - pk5.Move3_PP = PKX.getMovePP(pk5.Move3_PP, pk5.Move3_PPUps); - pk5.Move4_PP = PKX.getMovePP(pk5.Move4_PP, pk5.Move4_PPUps); + pk5.Move1_PP = getMovePP(pk5.Move1_PP, pk5.Move1_PPUps); + pk5.Move2_PP = getMovePP(pk5.Move2_PP, pk5.Move2_PPUps); + pk5.Move3_PP = getMovePP(pk5.Move3_PP, pk5.Move3_PPUps); + pk5.Move4_PP = getMovePP(pk5.Move4_PP, pk5.Move4_PPUps); // Disassociate Nature and PID pk5.Nature = (int)(pk5.PID % 25); @@ -392,14 +429,13 @@ public PK5 convertToPK5() BitConverter.GetBytes((uint)0).CopyTo(pk5.Data, 0x44); // Met / Crown Data Detection - pk5.Met_Location = pk5.FatefulEncounter && Array.IndexOf(new[] {251, 243, 244, 245}, pk5.Species) >= 0 + pk5.Met_Location = pk5.Gen4 && pk5.FatefulEncounter && Array.IndexOf(new[] {251, 243, 244, 245}, pk5.Species) >= 0 ? (pk5.Species == 251 ? 30010 : 30012) // Celebi : Beast : 30001; // Pokétransfer (not Crown) // Delete HGSS Data BitConverter.GetBytes((ushort)0).CopyTo(pk5.Data, 0x86); - if (HGSSBall > 0 && HGSSBall != 4) - pk5.Ball = HGSSBall; + pk5.Ball = Ball; // Transfer Nickname and OT Name pk5.Nickname = Nickname; @@ -409,9 +445,9 @@ public PK5 convertToPK5() pk5.Met_Level = PKX.getLevel(pk5.Species, pk5.EXP); // Remove HM moves; Defog should be kept if both are learned. - int[] banned = Moves.Contains(250) /*Whirlpool*/ && !Moves.Contains(432) /*Defog*/ - ? new[] {15, 19, 57, 70, 432, 249, 127, 431} // No Defog - : new[] {15, 19, 57, 70, 250, 249, 127, 431};// No Whirlpool + int[] banned = Moves.Contains(250) && Moves.Contains(432) // Whirlpool & Defog + ? new[] {15, 19, 57, 70, 250, 249, 127, 431} // No Whirlpool + : new[] {15, 19, 57, 70, 249, 127, 431};// Transfer via advantageous game int[] newMoves = pk5.Moves; for (int i = 0; i < 4; i++) diff --git a/PKM/PK5.cs b/PKM/PK5.cs index 89c5c389a..d8a302b1a 100644 --- a/PKM/PK5.cs +++ b/PKM/PK5.cs @@ -10,7 +10,7 @@ public class PK5 : PKM // 5th Generation PKM File { 0x42, 0x43, 0x5E, 0x63, 0x64, 0x65, 0x66, 0x67, 0x87 }; - public override int SIZE_PARTY => PKX.SIZE_5PARTY; + public sealed override int SIZE_PARTY => PKX.SIZE_5PARTY; public override int SIZE_STORED => PKX.SIZE_5STORED; public override int Format => 5; public PK5(byte[] decryptedData = null, string ident = null) @@ -57,37 +57,37 @@ public PK5(byte[] decryptedData = null, string ident = null) public override int CNT_Sheen { get { return Data[0x23]; } set { Data[0x23] = (byte)value; } } private byte RIB0 { get { return Data[0x24]; } set { Data[0x24] = value; } } // Sinnoh 1 - public bool RIB0_0 { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Sinnoh Champ Ribbon - public bool RIB0_1 { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Ability Ribbon - public bool RIB0_2 { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Great Ability Ribbon - public bool RIB0_3 { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Double Ability Ribbon - public bool RIB0_4 { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Multi Ability Ribbon - public bool RIB0_5 { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Pair Ability Ribbon - public bool RIB0_6 { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // World Ability Ribbon - public bool RIB0_7 { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Alert Ribbon - private byte RIB1 { get { return Data[0x25]; } set { Data[0x25] = value; } } // Sinnoh 2 - public bool RIB1_0 { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Shock Ribbon - public bool RIB1_1 { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Downcast Ribbon - public bool RIB1_2 { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Careless Ribbon - public bool RIB1_3 { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Relax Ribbon - public bool RIB1_4 { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Snooze Ribbon - public bool RIB1_5 { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Smile Ribbon - public bool RIB1_6 { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Gorgeous Ribbon - public bool RIB1_7 { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Royal Ribbon + private byte RIB1 { get { return Data[0x25]; } set { Data[0x25] = value; } } // Sinnoh 2 private byte RIB2 { get { return Data[0x26]; } set { Data[0x26] = value; } } // Unova 1 - public bool RIB2_0 { get { return (RIB2 & (1 << 0)) == 1 << 0; } set { RIB2 = (byte)(RIB2 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Gorgeous Royal Ribbon - public bool RIB2_1 { get { return (RIB2 & (1 << 1)) == 1 << 1; } set { RIB2 = (byte)(RIB2 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Footprint Ribbon - public bool RIB2_2 { get { return (RIB2 & (1 << 2)) == 1 << 2; } set { RIB2 = (byte)(RIB2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Record Ribbon - public bool RIB2_3 { get { return (RIB2 & (1 << 3)) == 1 << 3; } set { RIB2 = (byte)(RIB2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Event Ribbon - public bool RIB2_4 { get { return (RIB2 & (1 << 4)) == 1 << 4; } set { RIB2 = (byte)(RIB2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Legend Ribbon - public bool RIB2_5 { get { return (RIB2 & (1 << 5)) == 1 << 5; } set { RIB2 = (byte)(RIB2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // World Champion Ribbon - public bool RIB2_6 { get { return (RIB2 & (1 << 6)) == 1 << 6; } set { RIB2 = (byte)(RIB2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Birthday Ribbon - public bool RIB2_7 { get { return (RIB2 & (1 << 7)) == 1 << 7; } set { RIB2 = (byte)(RIB2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Special Ribbon - private byte RIB3 { get { return Data[0x27]; } set { Data[0x27] = value; } } // Unova 2 - public bool RIB3_0 { get { return (RIB3 & (1 << 0)) == 1 << 0; } set { RIB3 = (byte)(RIB3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Souvenir Ribbon - public bool RIB3_1 { get { return (RIB3 & (1 << 1)) == 1 << 1; } set { RIB3 = (byte)(RIB3 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Wishing Ribbon - public bool RIB3_2 { get { return (RIB3 & (1 << 2)) == 1 << 2; } set { RIB3 = (byte)(RIB3 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Classic Ribbon - public bool RIB3_3 { get { return (RIB3 & (1 << 3)) == 1 << 3; } set { RIB3 = (byte)(RIB3 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Premier Ribbon + private byte RIB3 { get { return Data[0x27]; } set { Data[0x27] = value; } } // Unova 2 + public bool RibbonChampionSinnoh { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonAbility { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonAbilityGreat { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonAbilityDouble { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonAbilityMulti { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonAbilityPair { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonAbilityWorld { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonAlert { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonShock { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonDowncast { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonCareless { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonRelax { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonSnooze { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonSmile { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonGorgeous { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonRoyal { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonGorgeousRoyal { get { return (RIB2 & (1 << 0)) == 1 << 0; } set { RIB2 = (byte)(RIB2 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonFootprint { get { return (RIB2 & (1 << 1)) == 1 << 1; } set { RIB2 = (byte)(RIB2 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonRecord { get { return (RIB2 & (1 << 2)) == 1 << 2; } set { RIB2 = (byte)(RIB2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonEvent { get { return (RIB2 & (1 << 3)) == 1 << 3; } set { RIB2 = (byte)(RIB2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonLegend { get { return (RIB2 & (1 << 4)) == 1 << 4; } set { RIB2 = (byte)(RIB2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonChampionWorld { get { return (RIB2 & (1 << 5)) == 1 << 5; } set { RIB2 = (byte)(RIB2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonBirthday { get { return (RIB2 & (1 << 6)) == 1 << 6; } set { RIB2 = (byte)(RIB2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonSpecial { get { return (RIB2 & (1 << 7)) == 1 << 7; } set { RIB2 = (byte)(RIB2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonSouvenir { get { return (RIB3 & (1 << 0)) == 1 << 0; } set { RIB3 = (byte)(RIB3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonWishing { get { return (RIB3 & (1 << 1)) == 1 << 1; } set { RIB3 = (byte)(RIB3 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonClassic { get { return (RIB3 & (1 << 2)) == 1 << 2; } set { RIB3 = (byte)(RIB3 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonPremier { get { return (RIB3 & (1 << 3)) == 1 << 3; } set { RIB3 = (byte)(RIB3 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } public bool RIB3_4 { get { return (RIB3 & (1 << 4)) == 1 << 4; } set { RIB3 = (byte)(RIB3 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Unused public bool RIB3_5 { get { return (RIB3 & (1 << 5)) == 1 << 5; } set { RIB3 = (byte)(RIB3 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Unused public bool RIB3_6 { get { return (RIB3 & (1 << 6)) == 1 << 6; } set { RIB3 = (byte)(RIB3 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Unused @@ -116,43 +116,43 @@ public PK5(byte[] decryptedData = null, string ident = null) public override int IV_SPD { get { return (int)(IV32 >> 25) & 0x1F; } set { IV32 = (uint)((IV32 & ~(0x1F << 25)) | (uint)((value > 31 ? 31 : value) << 25)); } } public override bool IsEgg { get { return ((IV32 >> 30) & 1) == 1; } set { IV32 = (uint)((IV32 & ~0x40000000) | (uint)(value ? 0x40000000 : 0)); } } public override bool IsNicknamed { get { return ((IV32 >> 31) & 1) == 1; } set { IV32 = (IV32 & 0x7FFFFFFF) | (value ? 0x80000000 : 0); } } - + private byte RIB4 { get { return Data[0x3C]; } set { Data[0x3C] = value; } } // Hoenn 1a - public bool RIB4_0 { get { return (RIB4 & (1 << 0)) == 1 << 0; } set { RIB4 = (byte)(RIB4 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Cool Ribbon - public bool RIB4_1 { get { return (RIB4 & (1 << 1)) == 1 << 1; } set { RIB4 = (byte)(RIB4 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Cool Ribbon Super - public bool RIB4_2 { get { return (RIB4 & (1 << 2)) == 1 << 2; } set { RIB4 = (byte)(RIB4 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Cool Ribbon Hyper - public bool RIB4_3 { get { return (RIB4 & (1 << 3)) == 1 << 3; } set { RIB4 = (byte)(RIB4 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Cool Ribbon Master - public bool RIB4_4 { get { return (RIB4 & (1 << 4)) == 1 << 4; } set { RIB4 = (byte)(RIB4 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Beauty Ribbon - public bool RIB4_5 { get { return (RIB4 & (1 << 5)) == 1 << 5; } set { RIB4 = (byte)(RIB4 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Beauty Ribbon Super - public bool RIB4_6 { get { return (RIB4 & (1 << 6)) == 1 << 6; } set { RIB4 = (byte)(RIB4 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Beauty Ribbon Hyper - public bool RIB4_7 { get { return (RIB4 & (1 << 7)) == 1 << 7; } set { RIB4 = (byte)(RIB4 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Beauty Ribbon Master - private byte RIB5 { get { return Data[0x3D]; } set { Data[0x3D] = value; } } // Hoenn 1b - public bool RIB5_0 { get { return (RIB5 & (1 << 0)) == 1 << 0; } set { RIB5 = (byte)(RIB5 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Cute Ribbon - public bool RIB5_1 { get { return (RIB5 & (1 << 1)) == 1 << 1; } set { RIB5 = (byte)(RIB5 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Cute Ribbon Super - public bool RIB5_2 { get { return (RIB5 & (1 << 2)) == 1 << 2; } set { RIB5 = (byte)(RIB5 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Cute Ribbon Hyper - public bool RIB5_3 { get { return (RIB5 & (1 << 3)) == 1 << 3; } set { RIB5 = (byte)(RIB5 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Cute Ribbon Master - public bool RIB5_4 { get { return (RIB5 & (1 << 4)) == 1 << 4; } set { RIB5 = (byte)(RIB5 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Smart Ribbon - public bool RIB5_5 { get { return (RIB5 & (1 << 5)) == 1 << 5; } set { RIB5 = (byte)(RIB5 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Smart Ribbon Super - public bool RIB5_6 { get { return (RIB5 & (1 << 6)) == 1 << 6; } set { RIB5 = (byte)(RIB5 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Smart Ribbon Hyper - public bool RIB5_7 { get { return (RIB5 & (1 << 7)) == 1 << 7; } set { RIB5 = (byte)(RIB5 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Smart Ribbon Master + private byte RIB5 { get { return Data[0x3D]; } set { Data[0x3D] = value; } } // Hoenn 1b private byte RIB6 { get { return Data[0x3E]; } set { Data[0x3E] = value; } } // Hoenn 2a - public bool RIB6_0 { get { return (RIB6 & (1 << 0)) == 1 << 0; } set { RIB6 = (byte)(RIB6 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Tough Ribbon - public bool RIB6_1 { get { return (RIB6 & (1 << 1)) == 1 << 1; } set { RIB6 = (byte)(RIB6 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Tough Ribbon Super - public bool RIB6_2 { get { return (RIB6 & (1 << 2)) == 1 << 2; } set { RIB6 = (byte)(RIB6 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Tough Ribbon Hyper - public bool RIB6_3 { get { return (RIB6 & (1 << 3)) == 1 << 3; } set { RIB6 = (byte)(RIB6 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Tough Ribbon Master - public bool RIB6_4 { get { return (RIB6 & (1 << 4)) == 1 << 4; } set { RIB6 = (byte)(RIB6 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Champion Ribbon - public bool RIB6_5 { get { return (RIB6 & (1 << 5)) == 1 << 5; } set { RIB6 = (byte)(RIB6 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Winning Ribbon - public bool RIB6_6 { get { return (RIB6 & (1 << 6)) == 1 << 6; } set { RIB6 = (byte)(RIB6 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Victory Ribbon - public bool RIB6_7 { get { return (RIB6 & (1 << 7)) == 1 << 7; } set { RIB6 = (byte)(RIB6 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Artist Ribbon - private byte RIB7 { get { return Data[0x3F]; } set { Data[0x3F] = value; } } // Hoenn 2b - public bool RIB7_0 { get { return (RIB7 & (1 << 0)) == 1 << 0; } set { RIB7 = (byte)(RIB7 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Effort Ribbon - public bool RIB7_1 { get { return (RIB7 & (1 << 1)) == 1 << 1; } set { RIB7 = (byte)(RIB7 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Battle Champion Ribbon - public bool RIB7_2 { get { return (RIB7 & (1 << 2)) == 1 << 2; } set { RIB7 = (byte)(RIB7 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Regional Champion Ribbon - public bool RIB7_3 { get { return (RIB7 & (1 << 3)) == 1 << 3; } set { RIB7 = (byte)(RIB7 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // National Champion Ribbon - public bool RIB7_4 { get { return (RIB7 & (1 << 4)) == 1 << 4; } set { RIB7 = (byte)(RIB7 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Country Ribbon - public bool RIB7_5 { get { return (RIB7 & (1 << 5)) == 1 << 5; } set { RIB7 = (byte)(RIB7 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // National Ribbon - public bool RIB7_6 { get { return (RIB7 & (1 << 6)) == 1 << 6; } set { RIB7 = (byte)(RIB7 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Earth Ribbon - public bool RIB7_7 { get { return (RIB7 & (1 << 7)) == 1 << 7; } set { RIB7 = (byte)(RIB7 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // World Ribbon + private byte RIB7 { get { return Data[0x3F]; } set { Data[0x3F] = value; } } // Hoenn 2b + public bool RibbonG3Cool { get { return (RIB4 & (1 << 0)) == 1 << 0; } set { RIB4 = (byte)(RIB4 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG3CoolSuper { get { return (RIB4 & (1 << 1)) == 1 << 1; } set { RIB4 = (byte)(RIB4 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG3CoolHyper { get { return (RIB4 & (1 << 2)) == 1 << 2; } set { RIB4 = (byte)(RIB4 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG3CoolMaster { get { return (RIB4 & (1 << 3)) == 1 << 3; } set { RIB4 = (byte)(RIB4 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonG3Beauty { get { return (RIB4 & (1 << 4)) == 1 << 4; } set { RIB4 = (byte)(RIB4 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonG3BeautySuper { get { return (RIB4 & (1 << 5)) == 1 << 5; } set { RIB4 = (byte)(RIB4 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonG3BeautyHyper { get { return (RIB4 & (1 << 6)) == 1 << 6; } set { RIB4 = (byte)(RIB4 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonG3BeautyMaster { get { return (RIB4 & (1 << 7)) == 1 << 7; } set { RIB4 = (byte)(RIB4 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonG3Cute { get { return (RIB5 & (1 << 0)) == 1 << 0; } set { RIB5 = (byte)(RIB5 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG3CuteSuper { get { return (RIB5 & (1 << 1)) == 1 << 1; } set { RIB5 = (byte)(RIB5 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG3CuteHyper { get { return (RIB5 & (1 << 2)) == 1 << 2; } set { RIB5 = (byte)(RIB5 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG3CuteMaster { get { return (RIB5 & (1 << 3)) == 1 << 3; } set { RIB5 = (byte)(RIB5 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonG3Smart { get { return (RIB5 & (1 << 4)) == 1 << 4; } set { RIB5 = (byte)(RIB5 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonG3SmartSuper { get { return (RIB5 & (1 << 5)) == 1 << 5; } set { RIB5 = (byte)(RIB5 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonG3SmartHyper { get { return (RIB5 & (1 << 6)) == 1 << 6; } set { RIB5 = (byte)(RIB5 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonG3SmartMaster { get { return (RIB5 & (1 << 7)) == 1 << 7; } set { RIB5 = (byte)(RIB5 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonG3Tough { get { return (RIB6 & (1 << 0)) == 1 << 0; } set { RIB6 = (byte)(RIB6 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG3ToughSuper { get { return (RIB6 & (1 << 1)) == 1 << 1; } set { RIB6 = (byte)(RIB6 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG3ToughHyper { get { return (RIB6 & (1 << 2)) == 1 << 2; } set { RIB6 = (byte)(RIB6 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG3ToughMaster { get { return (RIB6 & (1 << 3)) == 1 << 3; } set { RIB6 = (byte)(RIB6 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonChampionG3Hoenn { get { return (RIB6 & (1 << 4)) == 1 << 4; } set { RIB6 = (byte)(RIB6 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonWinning { get { return (RIB6 & (1 << 5)) == 1 << 5; } set { RIB6 = (byte)(RIB6 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonVictory { get { return (RIB6 & (1 << 6)) == 1 << 6; } set { RIB6 = (byte)(RIB6 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonArtist { get { return (RIB6 & (1 << 7)) == 1 << 7; } set { RIB6 = (byte)(RIB6 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonEffort { get { return (RIB7 & (1 << 0)) == 1 << 0; } set { RIB7 = (byte)(RIB7 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonChampionBattle { get { return (RIB7 & (1 << 1)) == 1 << 1; } set { RIB7 = (byte)(RIB7 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonChampionRegional{ get { return (RIB7 & (1 << 2)) == 1 << 2; } set { RIB7 = (byte)(RIB7 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonChampionNational{ get { return (RIB7 & (1 << 3)) == 1 << 3; } set { RIB7 = (byte)(RIB7 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonCountry { get { return (RIB7 & (1 << 4)) == 1 << 4; } set { RIB7 = (byte)(RIB7 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonNational { get { return (RIB7 & (1 << 5)) == 1 << 5; } set { RIB7 = (byte)(RIB7 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonEarth { get { return (RIB7 & (1 << 6)) == 1 << 6; } set { RIB7 = (byte)(RIB7 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonWorld { get { return (RIB7 & (1 << 7)) == 1 << 7; } set { RIB7 = (byte)(RIB7 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } public override bool FatefulEncounter { get { return (Data[0x40] & 1) == 1; } set { Data[0x40] = (byte)(Data[0x40] & ~0x01 | (value ? 1 : 0)); } } public override int Gender { get { return (Data[0x40] >> 1) & 0x3; } set { Data[0x40] = (byte)(Data[0x40] & ~0x06 | (value << 1)); } } @@ -188,33 +188,33 @@ public override string Nickname // 0x5E unused public override int Version { get { return Data[0x5F]; } set { Data[0x5F] = (byte)value; } } private byte RIB8 { get { return Data[0x60]; } set { Data[0x60] = value; } } // Sinnoh 3 - public bool RIB8_0 { get { return (RIB8 & (1 << 0)) == 1 << 0; } set { RIB8 = (byte)(RIB8 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Cool Ribbon - public bool RIB8_1 { get { return (RIB8 & (1 << 1)) == 1 << 1; } set { RIB8 = (byte)(RIB8 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Cool Ribbon Great - public bool RIB8_2 { get { return (RIB8 & (1 << 2)) == 1 << 2; } set { RIB8 = (byte)(RIB8 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Cool Ribbon Ultra - public bool RIB8_3 { get { return (RIB8 & (1 << 3)) == 1 << 3; } set { RIB8 = (byte)(RIB8 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Cool Ribbon Master - public bool RIB8_4 { get { return (RIB8 & (1 << 4)) == 1 << 4; } set { RIB8 = (byte)(RIB8 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Beauty Ribbon - public bool RIB8_5 { get { return (RIB8 & (1 << 5)) == 1 << 5; } set { RIB8 = (byte)(RIB8 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Beauty Ribbon Great - public bool RIB8_6 { get { return (RIB8 & (1 << 6)) == 1 << 6; } set { RIB8 = (byte)(RIB8 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Beauty Ribbon Ultra - public bool RIB8_7 { get { return (RIB8 & (1 << 7)) == 1 << 7; } set { RIB8 = (byte)(RIB8 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Beauty Ribbon Master - private byte RIB9 { get { return Data[0x61]; } set { Data[0x61] = value; } } // Sinnoh 4 - public bool RIB9_0 { get { return (RIB9 & (1 << 0)) == 1 << 0; } set { RIB9 = (byte)(RIB9 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Cute Ribbon - public bool RIB9_1 { get { return (RIB9 & (1 << 1)) == 1 << 1; } set { RIB9 = (byte)(RIB9 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Cute Ribbon Great - public bool RIB9_2 { get { return (RIB9 & (1 << 2)) == 1 << 2; } set { RIB9 = (byte)(RIB9 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Cute Ribbon Ultra - public bool RIB9_3 { get { return (RIB9 & (1 << 3)) == 1 << 3; } set { RIB9 = (byte)(RIB9 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Cute Ribbon Master - public bool RIB9_4 { get { return (RIB9 & (1 << 4)) == 1 << 4; } set { RIB9 = (byte)(RIB9 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Smart Ribbon - public bool RIB9_5 { get { return (RIB9 & (1 << 5)) == 1 << 5; } set { RIB9 = (byte)(RIB9 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Smart Ribbon Great - public bool RIB9_6 { get { return (RIB9 & (1 << 6)) == 1 << 6; } set { RIB9 = (byte)(RIB9 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Smart Ribbon Ultra - public bool RIB9_7 { get { return (RIB9 & (1 << 7)) == 1 << 7; } set { RIB9 = (byte)(RIB9 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Smart Ribbon Master + private byte RIB9 { get { return Data[0x61]; } set { Data[0x61] = value; } } // Sinnoh 4 private byte RIBA { get { return Data[0x62]; } set { Data[0x62] = value; } } // Sinnoh 5 - public bool RIBA_0 { get { return (RIBA & (1 << 0)) == 1 << 0; } set { RIBA = (byte)(RIBA & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Tough Ribbon - public bool RIBA_1 { get { return (RIBA & (1 << 1)) == 1 << 1; } set { RIBA = (byte)(RIBA & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Tough Ribbon Great - public bool RIBA_2 { get { return (RIBA & (1 << 2)) == 1 << 2; } set { RIBA = (byte)(RIBA & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Tough Ribbon Ultra - public bool RIBA_3 { get { return (RIBA & (1 << 3)) == 1 << 3; } set { RIBA = (byte)(RIBA & ~(1 << 3) | (value ? 1 << 3 : 0)); } } // Tough Ribbon Master + private byte RIBB { get { return Data[0x63]; } set { Data[0x63] = value; } } // Sinnoh 6 + public bool RibbonG4Cool { get { return (RIB8 & (1 << 0)) == 1 << 0; } set { RIB8 = (byte)(RIB8 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG4CoolGreat { get { return (RIB8 & (1 << 1)) == 1 << 1; } set { RIB8 = (byte)(RIB8 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG4CoolUltra { get { return (RIB8 & (1 << 2)) == 1 << 2; } set { RIB8 = (byte)(RIB8 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG4CoolMaster { get { return (RIB8 & (1 << 3)) == 1 << 3; } set { RIB8 = (byte)(RIB8 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonG4Beauty { get { return (RIB8 & (1 << 4)) == 1 << 4; } set { RIB8 = (byte)(RIB8 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonG4BeautyGreat { get { return (RIB8 & (1 << 5)) == 1 << 5; } set { RIB8 = (byte)(RIB8 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonG4BeautyUltra { get { return (RIB8 & (1 << 6)) == 1 << 6; } set { RIB8 = (byte)(RIB8 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonG4BeautyMaster { get { return (RIB8 & (1 << 7)) == 1 << 7; } set { RIB8 = (byte)(RIB8 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonG4Cute { get { return (RIB9 & (1 << 0)) == 1 << 0; } set { RIB9 = (byte)(RIB9 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG4CuteGreat { get { return (RIB9 & (1 << 1)) == 1 << 1; } set { RIB9 = (byte)(RIB9 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG4CuteUltra { get { return (RIB9 & (1 << 2)) == 1 << 2; } set { RIB9 = (byte)(RIB9 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG4CuteMaster { get { return (RIB9 & (1 << 3)) == 1 << 3; } set { RIB9 = (byte)(RIB9 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonG4Smart { get { return (RIB9 & (1 << 4)) == 1 << 4; } set { RIB9 = (byte)(RIB9 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonG4SmartGreat { get { return (RIB9 & (1 << 5)) == 1 << 5; } set { RIB9 = (byte)(RIB9 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonG4SmartUltra { get { return (RIB9 & (1 << 6)) == 1 << 6; } set { RIB9 = (byte)(RIB9 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonG4SmartMaster { get { return (RIB9 & (1 << 7)) == 1 << 7; } set { RIB9 = (byte)(RIB9 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonG4Tough { get { return (RIBA & (1 << 0)) == 1 << 0; } set { RIBA = (byte)(RIBA & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonG4ToughGreat { get { return (RIBA & (1 << 1)) == 1 << 1; } set { RIBA = (byte)(RIBA & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonG4ToughUltra { get { return (RIBA & (1 << 2)) == 1 << 2; } set { RIBA = (byte)(RIBA & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonG4ToughMaster { get { return (RIBA & (1 << 3)) == 1 << 3; } set { RIBA = (byte)(RIBA & ~(1 << 3) | (value ? 1 << 3 : 0)); } } public bool RIBA_4 { get { return (RIBA & (1 << 4)) == 1 << 4; } set { RIBA = (byte)(RIBA & ~(1 << 4) | (value ? 1 << 4 : 0)); } } // Unused public bool RIBA_5 { get { return (RIBA & (1 << 5)) == 1 << 5; } set { RIBA = (byte)(RIBA & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Unused public bool RIBA_6 { get { return (RIBA & (1 << 6)) == 1 << 6; } set { RIBA = (byte)(RIBA & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Unused public bool RIBA_7 { get { return (RIBA & (1 << 7)) == 1 << 7; } set { RIBA = (byte)(RIBA & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Unused - private byte RIBB { get { return Data[0x63]; } set { Data[0x63] = value; } } // Sinnoh 6 public bool RIBB_0 { get { return (RIBB & (1 << 0)) == 1 << 0; } set { RIBB = (byte)(RIBB & ~(1 << 0) | (value ? 1 << 0 : 0)); } } // Unused public bool RIBB_1 { get { return (RIBB & (1 << 1)) == 1 << 1; } set { RIBB = (byte)(RIBB & ~(1 << 1) | (value ? 1 << 1 : 0)); } } // Unused public bool RIBB_2 { get { return (RIBB & (1 << 2)) == 1 << 2; } set { RIBB = (byte)(RIBB & ~(1 << 2) | (value ? 1 << 2 : 0)); } } // Unused @@ -300,17 +300,19 @@ public override int Characteristic // Methods public override bool getGenderIsValid() { - int gv = PKX.Personal[Species].Gender; - if (gv == 255 && Gender == 2) - return true; - if (gv == 0 && Gender == 1) - return true; - if (gv == 254 && Gender == 0) - return true; - if (gv <= (PID & 0xFF) && Gender == 0) - return true; - if (gv > (PID & 0xFF) && Gender == 1) - return true; + int gv = PersonalTable.B2W2[Species].Gender; + + if (gv == 255) + return Gender == 2; + if (gv == 254) + return Gender == 0; + if (gv == 0) + return Gender == 1; + if (gv <= (PID & 0xFF)) + return Gender == 0; + if ((PID & 0xFF) < gv) + return Gender == 1; + return false; } public override byte[] Encrypt() @@ -332,19 +334,21 @@ public PK6 convertToPK6() Ability = Ability }; - int abilnum = PKX.getAbilityNumber(Species, Ability, AltForm); - if (abilnum > 0) pk6.AbilityNumber = abilnum; + int[] abilities = PersonalTable.AO.getAbilities(Species, AltForm); + int abilval = Array.IndexOf(abilities, Ability); + if (abilval >= 0) + pk6.AbilityNumber = 1 << abilval; else // Fallback (shouldn't happen) { if (HiddenAbility) pk6.AbilityNumber = 4; // Hidden, else G5 or G3/4 correlation. else pk6.AbilityNumber = Gen5 ? 1 << (int)(PID >> 16 & 1) : 1 << (int)(PID & 1); } - pk6.Circle = Circle; - pk6.Square = Square; - pk6.Triangle = Triangle; - pk6.Heart = Heart; - pk6.Star = Star; - pk6.Diamond = Diamond; + pk6.MarkCircle = MarkCircle; + pk6.MarkSquare = MarkSquare; + pk6.MarkTriangle = MarkTriangle; + pk6.MarkHeart = MarkHeart; + pk6.MarkStar = MarkStar; + pk6.MarkDiamond = MarkDiamond; pk6.Language = Language; pk6.CNT_Cool = CNT_Cool; @@ -366,10 +370,10 @@ public PK6 convertToPK6() pk6.Move3 = Move3; pk6.Move4 = Move4; - pk6.Move1_PP = PKX.getMovePP(Move1, Move1_PPUps); - pk6.Move2_PP = PKX.getMovePP(Move2, Move2_PPUps); - pk6.Move3_PP = PKX.getMovePP(Move3, Move3_PPUps); - pk6.Move4_PP = PKX.getMovePP(Move4, Move4_PPUps); + pk6.Move1_PP = getMovePP(Move1, Move1_PPUps); + pk6.Move2_PP = getMovePP(Move2, Move2_PPUps); + pk6.Move3_PP = getMovePP(Move3, Move3_PPUps); + pk6.Move4_PP = getMovePP(Move4, Move4_PPUps); pk6.Move1_PPUps = Move1_PPUps; pk6.Move2_PPUps = Move2_PPUps; @@ -426,7 +430,7 @@ public PK6 convertToPK6() // Contest Ribbon Counter for (int i = 0; i < 8; i++) // Sinnoh 3, Hoenn 1 { - if (((Data[0x60] >> i) & 1) == 1) contestribbons++; + if ((Data[0x60] >> i & 1) == 1) contestribbons++; if (((Data[0x61] >> i) & 1) == 1) contestribbons++; if (((Data[0x3C] >> i) & 1) == 1) contestribbons++; if (((Data[0x3D] >> i) & 1) == 1) contestribbons++; @@ -446,8 +450,8 @@ public PK6 convertToPK6() if (((Data[0x24] >> i) & 1) == 1) battleribbons++; // Fill the Ribbon Counter Bytes - pk6.Memory_ContestCount = contestribbons; - pk6.Memory_BattleCount = battleribbons; + pk6.RibbonCountMemoryContest = contestribbons; + pk6.RibbonCountMemoryBattle = battleribbons; // Copy Ribbons to their new locations. int bx30 = 0; @@ -517,7 +521,7 @@ public PK6 convertToPK6() pk6.HT_Memory = 4; pk6.HT_Feeling = (int)(Util.rnd32() % 10); // When transferred, friendship gets reset. - pk6.OT_Friendship = pk6.HT_Friendship = PKX.getBaseFriendship(Species); + pk6.OT_Friendship = pk6.HT_Friendship = PersonalTable.B2W2[Species].BaseFriendship; // Antishiny Mechanism ushort LID = (ushort)(PID & 0xFFFF); diff --git a/PKM/PK6.cs b/PKM/PK6.cs index 329bc1960..ca81c2eb2 100644 --- a/PKM/PK6.cs +++ b/PKM/PK6.cs @@ -10,7 +10,7 @@ public class PK6 : PKM { 0x36, 0x37, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x58, 0x59, 0x73, 0x90, 0x91, 0x9E, 0x9F, 0xA0, 0xA1, 0xA7, 0xAA, 0xAB, 0xAC, 0xAD, 0xC8, 0xC9, 0xD7, 0xE4, 0xE5, 0xE6, 0xE7 }; - public override int SIZE_PARTY => PKX.SIZE_6PARTY; + public sealed override int SIZE_PARTY => PKX.SIZE_6PARTY; public override int SIZE_STORED => PKX.SIZE_6STORED; public override int Format => 6; public PK6(byte[] decryptedData = null, string ident = null) @@ -97,104 +97,104 @@ public override uint PID private byte ST1 { get { return Data[0x2C]; } set { Data[0x2C] = value; } } public bool Unused0 { get { return (ST1 & (1 << 0)) == 1 << 0; } set { ST1 = (byte)(ST1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } public bool Unused1 { get { return (ST1 & (1 << 1)) == 1 << 1; } set { ST1 = (byte)(ST1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool ST1_SPA { get { return (ST1 & (1 << 2)) == 1 << 2; } set { ST1 = (byte)(ST1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool ST1_HP { get { return (ST1 & (1 << 3)) == 1 << 3; } set { ST1 = (byte)(ST1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool ST1_ATK { get { return (ST1 & (1 << 4)) == 1 << 4; } set { ST1 = (byte)(ST1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool ST1_SPD { get { return (ST1 & (1 << 5)) == 1 << 5; } set { ST1 = (byte)(ST1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool ST1_SPE { get { return (ST1 & (1 << 6)) == 1 << 6; } set { ST1 = (byte)(ST1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool ST1_DEF { get { return (ST1 & (1 << 7)) == 1 << 7; } set { ST1 = (byte)(ST1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool SuperTrain1_SPA { get { return (ST1 & (1 << 2)) == 1 << 2; } set { ST1 = (byte)(ST1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool SuperTrain1_HP { get { return (ST1 & (1 << 3)) == 1 << 3; } set { ST1 = (byte)(ST1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool SuperTrain1_ATK { get { return (ST1 & (1 << 4)) == 1 << 4; } set { ST1 = (byte)(ST1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool SuperTrain1_SPD { get { return (ST1 & (1 << 5)) == 1 << 5; } set { ST1 = (byte)(ST1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool SuperTrain1_SPE { get { return (ST1 & (1 << 6)) == 1 << 6; } set { ST1 = (byte)(ST1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool SuperTrain1_DEF { get { return (ST1 & (1 << 7)) == 1 << 7; } set { ST1 = (byte)(ST1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte ST2 { get { return Data[0x2D]; } set { Data[0x2D] = value; } } - public bool ST2_SPA { get { return (ST2 & (1 << 0)) == 1 << 0; } set { ST2 = (byte)(ST2 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool ST2_HP { get { return (ST2 & (1 << 1)) == 1 << 1; } set { ST2 = (byte)(ST2 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool ST2_ATK { get { return (ST2 & (1 << 2)) == 1 << 2; } set { ST2 = (byte)(ST2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool ST2_SPD { get { return (ST2 & (1 << 3)) == 1 << 3; } set { ST2 = (byte)(ST2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool ST2_SPE { get { return (ST2 & (1 << 4)) == 1 << 4; } set { ST2 = (byte)(ST2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool ST2_DEF { get { return (ST2 & (1 << 5)) == 1 << 5; } set { ST2 = (byte)(ST2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool ST3_SPA { get { return (ST2 & (1 << 6)) == 1 << 6; } set { ST2 = (byte)(ST2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool ST3_HP { get { return (ST2 & (1 << 7)) == 1 << 7; } set { ST2 = (byte)(ST2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool SuperTrain2_SPA { get { return (ST2 & (1 << 0)) == 1 << 0; } set { ST2 = (byte)(ST2 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool SuperTrain2_HP { get { return (ST2 & (1 << 1)) == 1 << 1; } set { ST2 = (byte)(ST2 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool SuperTrain2_ATK { get { return (ST2 & (1 << 2)) == 1 << 2; } set { ST2 = (byte)(ST2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool SuperTrain2_SPD { get { return (ST2 & (1 << 3)) == 1 << 3; } set { ST2 = (byte)(ST2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool SuperTrain2_SPE { get { return (ST2 & (1 << 4)) == 1 << 4; } set { ST2 = (byte)(ST2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool SuperTrain2_DEF { get { return (ST2 & (1 << 5)) == 1 << 5; } set { ST2 = (byte)(ST2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool SuperTrain3_SPA { get { return (ST2 & (1 << 6)) == 1 << 6; } set { ST2 = (byte)(ST2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool SuperTrain3_HP { get { return (ST2 & (1 << 7)) == 1 << 7; } set { ST2 = (byte)(ST2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte ST3 { get { return Data[0x2E]; } set { Data[0x2E] = value; } } - public bool ST3_ATK { get { return (ST3 & (1 << 0)) == 1 << 0; } set { ST3 = (byte)(ST3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool ST3_SPD { get { return (ST3 & (1 << 1)) == 1 << 1; } set { ST3 = (byte)(ST3 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool ST3_SPE { get { return (ST3 & (1 << 2)) == 1 << 2; } set { ST3 = (byte)(ST3 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool ST3_DEF { get { return (ST3 & (1 << 3)) == 1 << 3; } set { ST3 = (byte)(ST3 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool ST4_1 { get { return (ST3 & (1 << 4)) == 1 << 4; } set { ST3 = (byte)(ST3 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool ST5_1 { get { return (ST3 & (1 << 5)) == 1 << 5; } set { ST3 = (byte)(ST3 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool ST5_2 { get { return (ST3 & (1 << 6)) == 1 << 6; } set { ST3 = (byte)(ST3 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool ST5_3 { get { return (ST3 & (1 << 7)) == 1 << 7; } set { ST3 = (byte)(ST3 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool SuperTrain3_ATK { get { return (ST3 & (1 << 0)) == 1 << 0; } set { ST3 = (byte)(ST3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool SuperTrain3_SPD { get { return (ST3 & (1 << 1)) == 1 << 1; } set { ST3 = (byte)(ST3 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool SuperTrain3_SPE { get { return (ST3 & (1 << 2)) == 1 << 2; } set { ST3 = (byte)(ST3 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool SuperTrain3_DEF { get { return (ST3 & (1 << 3)) == 1 << 3; } set { ST3 = (byte)(ST3 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool SuperTrain4_1 { get { return (ST3 & (1 << 4)) == 1 << 4; } set { ST3 = (byte)(ST3 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool SuperTrain5_1 { get { return (ST3 & (1 << 5)) == 1 << 5; } set { ST3 = (byte)(ST3 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool SuperTrain5_2 { get { return (ST3 & (1 << 6)) == 1 << 6; } set { ST3 = (byte)(ST3 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool SuperTrain5_3 { get { return (ST3 & (1 << 7)) == 1 << 7; } set { ST3 = (byte)(ST3 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte ST4 { get { return Data[0x2F]; } set { Data[0x2F] = value; } } - public bool ST5_4 { get { return (ST4 & (1 << 0)) == 1 << 0; } set { ST4 = (byte)(ST4 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool ST6_1 { get { return (ST4 & (1 << 1)) == 1 << 1; } set { ST4 = (byte)(ST4 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool ST6_2 { get { return (ST4 & (1 << 2)) == 1 << 2; } set { ST4 = (byte)(ST4 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool ST6_3 { get { return (ST4 & (1 << 3)) == 1 << 3; } set { ST4 = (byte)(ST4 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool ST7_1 { get { return (ST4 & (1 << 4)) == 1 << 4; } set { ST4 = (byte)(ST4 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool ST7_2 { get { return (ST4 & (1 << 5)) == 1 << 5; } set { ST4 = (byte)(ST4 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool ST7_3 { get { return (ST4 & (1 << 6)) == 1 << 6; } set { ST4 = (byte)(ST4 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool ST8_1 { get { return (ST4 & (1 << 7)) == 1 << 7; } set { ST4 = (byte)(ST4 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool SuperTrain5_4 { get { return (ST4 & (1 << 0)) == 1 << 0; } set { ST4 = (byte)(ST4 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool SuperTrain6_1 { get { return (ST4 & (1 << 1)) == 1 << 1; } set { ST4 = (byte)(ST4 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool SuperTrain6_2 { get { return (ST4 & (1 << 2)) == 1 << 2; } set { ST4 = (byte)(ST4 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool SuperTrain6_3 { get { return (ST4 & (1 << 3)) == 1 << 3; } set { ST4 = (byte)(ST4 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool SuperTrain7_1 { get { return (ST4 & (1 << 4)) == 1 << 4; } set { ST4 = (byte)(ST4 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool SuperTrain7_2 { get { return (ST4 & (1 << 5)) == 1 << 5; } set { ST4 = (byte)(ST4 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool SuperTrain7_3 { get { return (ST4 & (1 << 6)) == 1 << 6; } set { ST4 = (byte)(ST4 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool SuperTrain8_1 { get { return (ST4 & (1 << 7)) == 1 << 7; } set { ST4 = (byte)(ST4 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte RIB0 { get { return Data[0x30]; } set { Data[0x30] = value; } } - public bool RIB0_0 { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool RIB0_1 { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool RIB0_2 { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool RIB0_3 { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool RIB0_4 { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool RIB0_5 { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool RIB0_6 { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool RIB0_7 { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte RIB1 { get { return Data[0x31]; } set { Data[0x31] = value; } } - public bool RIB1_0 { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool RIB1_1 { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool RIB1_2 { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool RIB1_3 { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool RIB1_4 { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool RIB1_5 { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool RIB1_6 { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool RIB1_7 { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte RIB2 { get { return Data[0x32]; } set { Data[0x32] = value; } } - public bool RIB2_0 { get { return (RIB2 & (1 << 0)) == 1 << 0; } set { RIB2 = (byte)(RIB2 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool RIB2_1 { get { return (RIB2 & (1 << 1)) == 1 << 1; } set { RIB2 = (byte)(RIB2 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool RIB2_2 { get { return (RIB2 & (1 << 2)) == 1 << 2; } set { RIB2 = (byte)(RIB2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool RIB2_3 { get { return (RIB2 & (1 << 3)) == 1 << 3; } set { RIB2 = (byte)(RIB2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool RIB2_4 { get { return (RIB2 & (1 << 4)) == 1 << 4; } set { RIB2 = (byte)(RIB2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool RIB2_5 { get { return (RIB2 & (1 << 5)) == 1 << 5; } set { RIB2 = (byte)(RIB2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool RIB2_6 { get { return (RIB2 & (1 << 6)) == 1 << 6; } set { RIB2 = (byte)(RIB2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool RIB2_7 { get { return (RIB2 & (1 << 7)) == 1 << 7; } set { RIB2 = (byte)(RIB2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte RIB3 { get { return Data[0x33]; } set { Data[0x33] = value; } } - public bool RIB3_0 { get { return (RIB3 & (1 << 0)) == 1 << 0; } set { RIB3 = (byte)(RIB3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool RIB3_1 { get { return (RIB3 & (1 << 1)) == 1 << 1; } set { RIB3 = (byte)(RIB3 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool RIB3_2 { get { return (RIB3 & (1 << 2)) == 1 << 2; } set { RIB3 = (byte)(RIB3 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool RIB3_3 { get { return (RIB3 & (1 << 3)) == 1 << 3; } set { RIB3 = (byte)(RIB3 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool RIB3_4 { get { return (RIB3 & (1 << 4)) == 1 << 4; } set { RIB3 = (byte)(RIB3 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool RIB3_5 { get { return (RIB3 & (1 << 5)) == 1 << 5; } set { RIB3 = (byte)(RIB3 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool RIB3_6 { get { return (RIB3 & (1 << 6)) == 1 << 6; } set { RIB3 = (byte)(RIB3 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool RIB3_7 { get { return (RIB3 & (1 << 7)) == 1 << 7; } set { RIB3 = (byte)(RIB3 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte RIB4 { get { return Data[0x34]; } set { Data[0x34] = value; } } - public bool RIB4_0 { get { return (RIB4 & (1 << 0)) == 1 << 0; } set { RIB4 = (byte)(RIB4 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool RIB4_1 { get { return (RIB4 & (1 << 1)) == 1 << 1; } set { RIB4 = (byte)(RIB4 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool RIB4_2 { get { return (RIB4 & (1 << 2)) == 1 << 2; } set { RIB4 = (byte)(RIB4 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool RIB4_3 { get { return (RIB4 & (1 << 3)) == 1 << 3; } set { RIB4 = (byte)(RIB4 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool RIB4_4 { get { return (RIB4 & (1 << 4)) == 1 << 4; } set { RIB4 = (byte)(RIB4 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool RIB4_5 { get { return (RIB4 & (1 << 5)) == 1 << 5; } set { RIB4 = (byte)(RIB4 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool RIB4_6 { get { return (RIB4 & (1 << 6)) == 1 << 6; } set { RIB4 = (byte)(RIB4 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool RIB4_7 { get { return (RIB4 & (1 << 7)) == 1 << 7; } set { RIB4 = (byte)(RIB4 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } private byte RIB5 { get { return Data[0x35]; } set { Data[0x35] = value; } } - public bool RIB5_0 { get { return (RIB5 & (1 << 0)) == 1 << 0; } set { RIB5 = (byte)(RIB5 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool RIB5_1 { get { return (RIB5 & (1 << 1)) == 1 << 1; } set { RIB5 = (byte)(RIB5 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool RIB5_2 { get { return (RIB5 & (1 << 2)) == 1 << 2; } set { RIB5 = (byte)(RIB5 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool RIB5_3 { get { return (RIB5 & (1 << 3)) == 1 << 3; } set { RIB5 = (byte)(RIB5 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool RIB5_4 { get { return (RIB5 & (1 << 4)) == 1 << 4; } set { RIB5 = (byte)(RIB5 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool RIB5_5 { get { return (RIB5 & (1 << 5)) == 1 << 5; } set { RIB5 = (byte)(RIB5 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } - public bool RIB5_6 { get { return (RIB5 & (1 << 6)) == 1 << 6; } set { RIB5 = (byte)(RIB5 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } - public bool RIB5_7 { get { return (RIB5 & (1 << 7)) == 1 << 7; } set { RIB5 = (byte)(RIB5 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonChampionKalos { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonChampionG3Hoenn { get { return (RIB0 & (1 << 1)) == 1 << 1; } set { RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonChampionSinnoh { get { return (RIB0 & (1 << 2)) == 1 << 2; } set { RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonBestFriends { get { return (RIB0 & (1 << 3)) == 1 << 3; } set { RIB0 = (byte)(RIB0 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonTraining { get { return (RIB0 & (1 << 4)) == 1 << 4; } set { RIB0 = (byte)(RIB0 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonBattlerSkillful { get { return (RIB0 & (1 << 5)) == 1 << 5; } set { RIB0 = (byte)(RIB0 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonBattlerExpert { get { return (RIB0 & (1 << 6)) == 1 << 6; } set { RIB0 = (byte)(RIB0 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonEffort { get { return (RIB0 & (1 << 7)) == 1 << 7; } set { RIB0 = (byte)(RIB0 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonAlert { get { return (RIB1 & (1 << 0)) == 1 << 0; } set { RIB1 = (byte)(RIB1 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonShock { get { return (RIB1 & (1 << 1)) == 1 << 1; } set { RIB1 = (byte)(RIB1 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonDowncast { get { return (RIB1 & (1 << 2)) == 1 << 2; } set { RIB1 = (byte)(RIB1 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonCareless { get { return (RIB1 & (1 << 3)) == 1 << 3; } set { RIB1 = (byte)(RIB1 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonRelax { get { return (RIB1 & (1 << 4)) == 1 << 4; } set { RIB1 = (byte)(RIB1 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonSnooze { get { return (RIB1 & (1 << 5)) == 1 << 5; } set { RIB1 = (byte)(RIB1 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonSmile { get { return (RIB1 & (1 << 6)) == 1 << 6; } set { RIB1 = (byte)(RIB1 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonGorgeous { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonRoyal { get { return (RIB2 & (1 << 0)) == 1 << 0; } set { RIB2 = (byte)(RIB2 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonGorgeousRoyal { get { return (RIB2 & (1 << 1)) == 1 << 1; } set { RIB2 = (byte)(RIB2 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonArtist { get { return (RIB2 & (1 << 2)) == 1 << 2; } set { RIB2 = (byte)(RIB2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonFootprint { get { return (RIB2 & (1 << 3)) == 1 << 3; } set { RIB2 = (byte)(RIB2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonRecord { get { return (RIB2 & (1 << 4)) == 1 << 4; } set { RIB2 = (byte)(RIB2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonLegend { get { return (RIB2 & (1 << 5)) == 1 << 5; } set { RIB2 = (byte)(RIB2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonCountry { get { return (RIB2 & (1 << 6)) == 1 << 6; } set { RIB2 = (byte)(RIB2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonNational { get { return (RIB2 & (1 << 7)) == 1 << 7; } set { RIB2 = (byte)(RIB2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonEarth { get { return (RIB3 & (1 << 0)) == 1 << 0; } set { RIB3 = (byte)(RIB3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonWorld { get { return (RIB3 & (1 << 1)) == 1 << 1; } set { RIB3 = (byte)(RIB3 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonClassic { get { return (RIB3 & (1 << 2)) == 1 << 2; } set { RIB3 = (byte)(RIB3 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonPremier { get { return (RIB3 & (1 << 3)) == 1 << 3; } set { RIB3 = (byte)(RIB3 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonEvent { get { return (RIB3 & (1 << 4)) == 1 << 4; } set { RIB3 = (byte)(RIB3 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonBirthday { get { return (RIB3 & (1 << 5)) == 1 << 5; } set { RIB3 = (byte)(RIB3 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RibbonSpecial { get { return (RIB3 & (1 << 6)) == 1 << 6; } set { RIB3 = (byte)(RIB3 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } + public bool RibbonSouvenir { get { return (RIB3 & (1 << 7)) == 1 << 7; } set { RIB3 = (byte)(RIB3 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonWishing { get { return (RIB4 & (1 << 0)) == 1 << 0; } set { RIB4 = (byte)(RIB4 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonChampionBattle { get { return (RIB4 & (1 << 1)) == 1 << 1; } set { RIB4 = (byte)(RIB4 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonChampionRegional { get { return (RIB4 & (1 << 2)) == 1 << 2; } set { RIB4 = (byte)(RIB4 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonChampionNational { get { return (RIB4 & (1 << 3)) == 1 << 3; } set { RIB4 = (byte)(RIB4 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonChampionWorld { get { return (RIB4 & (1 << 4)) == 1 << 4; } set { RIB4 = (byte)(RIB4 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RIB4_5 { get { return (RIB4 & (1 << 5)) == 1 << 5; } set { RIB4 = (byte)(RIB4 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } // Unused + public bool RIB4_6 { get { return (RIB4 & (1 << 6)) == 1 << 6; } set { RIB4 = (byte)(RIB4 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Unused + public bool RibbonChampionG6Hoenn { get { return (RIB4 & (1 << 7)) == 1 << 7; } set { RIB4 = (byte)(RIB4 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } + public bool RibbonContestStar { get { return (RIB5 & (1 << 0)) == 1 << 0; } set { RIB5 = (byte)(RIB5 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool RibbonMasterCoolness { get { return (RIB5 & (1 << 1)) == 1 << 1; } set { RIB5 = (byte)(RIB5 & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool RibbonMasterBeauty { get { return (RIB5 & (1 << 2)) == 1 << 2; } set { RIB5 = (byte)(RIB5 & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool RibbonMasterCuteness { get { return (RIB5 & (1 << 3)) == 1 << 3; } set { RIB5 = (byte)(RIB5 & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool RibbonMasterCleverness { get { return (RIB5 & (1 << 4)) == 1 << 4; } set { RIB5 = (byte)(RIB5 & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool RibbonMasterToughness { get { return (RIB5 & (1 << 5)) == 1 << 5; } set { RIB5 = (byte)(RIB5 & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool RIB5_6 { get { return (RIB5 & (1 << 6)) == 1 << 6; } set { RIB5 = (byte)(RIB5 & ~(1 << 6) | (value ? 1 << 6 : 0)); } } // Unused + public bool RIB5_7 { get { return (RIB5 & (1 << 7)) == 1 << 7; } set { RIB5 = (byte)(RIB5 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Unused public byte _0x36 { get { return Data[0x36]; } set { Data[0x36] = value; } } public byte _0x37 { get { return Data[0x37]; } set { Data[0x37] = value; } } - public int Memory_ContestCount { get { return Data[0x38]; } set { Data[0x38] = (byte)value; } } - public int Memory_BattleCount { get { return Data[0x39]; } set { Data[0x39] = (byte)value; } } + public int RibbonCountMemoryContest { get { return Data[0x38]; } set { Data[0x38] = (byte)value; } } + public int RibbonCountMemoryBattle { get { return Data[0x39]; } set { Data[0x39] = (byte)value; } } private byte DistByte { get { return Data[0x3A]; } set { Data[0x3A] = value; } } - public bool Dist1 { get { return (DistByte & (1 << 0)) == 1 << 0; } set { DistByte = (byte)(DistByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool Dist2 { get { return (DistByte & (1 << 1)) == 1 << 1; } set { DistByte = (byte)(DistByte & ~(1 << 1) | (value ? 1 << 1 : 0)); } } - public bool Dist3 { get { return (DistByte & (1 << 2)) == 1 << 2; } set { DistByte = (byte)(DistByte & ~(1 << 2) | (value ? 1 << 2 : 0)); } } - public bool Dist4 { get { return (DistByte & (1 << 3)) == 1 << 3; } set { DistByte = (byte)(DistByte & ~(1 << 3) | (value ? 1 << 3 : 0)); } } - public bool Dist5 { get { return (DistByte & (1 << 4)) == 1 << 4; } set { DistByte = (byte)(DistByte & ~(1 << 4) | (value ? 1 << 4 : 0)); } } - public bool Dist6 { get { return (DistByte & (1 << 5)) == 1 << 5; } set { DistByte = (byte)(DistByte & ~(1 << 5) | (value ? 1 << 5 : 0)); } } + public bool DistSuperTrain1 { get { return (DistByte & (1 << 0)) == 1 << 0; } set { DistByte = (byte)(DistByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool DistSuperTrain2 { get { return (DistByte & (1 << 1)) == 1 << 1; } set { DistByte = (byte)(DistByte & ~(1 << 1) | (value ? 1 << 1 : 0)); } } + public bool DistSuperTrain3 { get { return (DistByte & (1 << 2)) == 1 << 2; } set { DistByte = (byte)(DistByte & ~(1 << 2) | (value ? 1 << 2 : 0)); } } + public bool DistSuperTrain4 { get { return (DistByte & (1 << 3)) == 1 << 3; } set { DistByte = (byte)(DistByte & ~(1 << 3) | (value ? 1 << 3 : 0)); } } + public bool DistSuperTrain5 { get { return (DistByte & (1 << 4)) == 1 << 4; } set { DistByte = (byte)(DistByte & ~(1 << 4) | (value ? 1 << 4 : 0)); } } + public bool DistSuperTrain6 { get { return (DistByte & (1 << 5)) == 1 << 5; } set { DistByte = (byte)(DistByte & ~(1 << 5) | (value ? 1 << 5 : 0)); } } public bool Dist7 { get { return (DistByte & (1 << 6)) == 1 << 6; } set { DistByte = (byte)(DistByte & ~(1 << 6) | (value ? 1 << 6 : 0)); } } public bool Dist8 { get { return (DistByte & (1 << 7)) == 1 << 7; } set { DistByte = (byte)(DistByte & ~(1 << 7) | (value ? 1 << 7 : 0)); } } public byte _0x3B { get { return Data[0x3B]; } set { Data[0x3B] = value; } } @@ -449,7 +449,7 @@ public override byte[] Encrypt() } public override bool getGenderIsValid() { - int gv = PKX.Personal[Species].Gender; + int gv = PersonalTable.AO[Species].Gender; if (gv == 255) return Gender == 2; @@ -629,7 +629,7 @@ public void TradeFriendshipAffection(string SAV_TRAINER) return; // Reset - HT_Friendship = PKX.getBaseFriendship(Species); + HT_Friendship = PersonalTable.AO[Species].BaseFriendship; HT_Affection = 0; } diff --git a/PKM/PKM.cs b/PKM/PKM.cs index eabb37437..1d3134d82 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -13,6 +13,8 @@ public abstract class PKM // Internal Attributes set on creation public byte[] Data; // Raw Storage public string Identifier; // User or Form Custom Attribute + public int Box { get; set; } = -1; // Batch Editor + public int Slot { get; set; } = -1; // Batch Editor public byte[] EncryptedPartyData => Encrypt().Take(SIZE_PARTY).ToArray(); public byte[] EncryptedBoxData => Encrypt().Take(SIZE_STORED).ToArray(); @@ -145,25 +147,37 @@ public byte[] Write() 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; - public bool PtHGSS => new[] {GameVersion.Pt, GameVersion.HG, GameVersion.SS}.Contains((GameVersion)Version); + protected bool PtHGSS => GameVersion.Pt == (GameVersion)Version || HGSS; + public bool HGSS => new[] {GameVersion.HG, GameVersion.SS}.Contains((GameVersion)Version); public bool Gen5 => Version >= 20 && Version <= 23; public bool Gen4 => Version >= 10 && Version < 12 || Version >= 7 && Version <= 8; public bool Gen3 => Version >= 1 && Version <= 5 || Version == 15; public bool GenU => !(Gen6 || Gen5 || Gen4 || Gen3); + public int GenNumber + { + get + { + if (Gen6) return 6; + if (Gen5) return 5; + if (Gen4) return 4; + if (Gen3) return 3; + return -1; + } + } public bool PKRS_Infected => PKRS_Strain > 0; public bool PKRS_Cured => PKRS_Days == 0 && PKRS_Strain > 0; public bool ChecksumValid => Checksum == CalculateChecksum(); public int CurrentLevel => PKX.getLevel(Species, EXP); - public bool Circle { get { return Markings[0]; } set { Markings[0] = value; } } - public bool Triangle { get { return Markings[1]; } set { Markings[1] = value; } } - public bool Square { get { return Markings[2]; } set { Markings[2] = value; } } - public bool Heart { get { return Markings[3]; } set { Markings[3] = value; } } - public bool Star { get { return Markings[4]; } set { Markings[4] = value; } } - public bool Diamond { get { return Markings[5]; } set { Markings[5] = value; } } + public bool MarkCircle { get { return (MarkByte & (1 << 0)) == 1 << 0; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool MarkTriangle { get { return (MarkByte & (1 << 1)) == 1 << 1; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool MarkSquare { get { return (MarkByte & (1 << 2)) == 1 << 2; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool MarkHeart { get { return (MarkByte & (1 << 3)) == 1 << 3; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool MarkStar { get { return (MarkByte & (1 << 4)) == 1 << 4; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool MarkDiamond { get { return (MarkByte & (1 << 5)) == 1 << 5; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } public Image Sprite => PKX.getSprite(this); public string ShowdownText => ShowdownSet.getShowdownText(this); public string[] QRText => PKX.getQRText(this); - public string FileName => PKX.getFileName(this); + public string FileName => $"{Species.ToString("000")}{(IsShiny ? " ★" : "")} - {Nickname} - {Checksum.ToString("X4")}{EncryptionConstant.ToString("X8")}.{Extension}"; public int[] IVs { get { return new[] { IV_HP, IV_ATK, IV_DEF, IV_SPE, IV_SPA, IV_SPD }; } @@ -268,10 +282,28 @@ public int PotentialRating return ivTotal <= 150 ? 2 : 3; } } - - public void CalculateStats() + + public ushort[] getStats(PersonalInfo p) + { + int level = CurrentLevel; + ushort[] Stats = new ushort[6]; + Stats[0] = (ushort)(p.HP == 1 ? 1 : (IV_HP + 2 * p.HP + EV_HP / 4 + 100) * level / 100 + 10); + Stats[1] = (ushort)((IV_ATK + 2 * p.ATK + EV_ATK / 4) * level / 100 + 5); + Stats[2] = (ushort)((IV_DEF + 2 * p.DEF + EV_DEF / 4) * level / 100 + 5); + Stats[4] = (ushort)((IV_SPA + 2 * p.SPA + EV_SPA / 4) * level / 100 + 5); + Stats[5] = (ushort)((IV_SPD + 2 * p.SPD + EV_SPD / 4) * level / 100 + 5); + Stats[3] = (ushort)((IV_SPE + 2 * p.SPE + EV_SPE / 4) * level / 100 + 5); + + // Account for nature + int incr = Nature / 5 + 1; + int decr = Nature % 5 + 1; + if (incr == decr) return Stats; + Stats[incr] *= 11; Stats[incr] /= 10; + Stats[decr] *= 9; Stats[decr] /= 10; + return Stats; + } + public void setStats(ushort[] Stats) { - ushort[] Stats = PKX.getStats(this); Stat_HPMax = Stat_HPCurrent = Stats[0]; Stat_ATK = Stats[1]; Stat_DEF = Stats[2]; @@ -279,7 +311,48 @@ public void CalculateStats() Stat_SPA = Stats[4]; Stat_SPD = Stats[5]; } + public virtual bool CanHoldItem(ushort[] ValidArray) + { + return ValidArray.Contains((ushort)HeldItem); + } public abstract PKM Clone(); + + public int getMovePP(int move, int ppup) + { + return getBasePP(move) * (5 + ppup) / 5; + } + + private int getBasePP(int move) + { + int[] pptable; + switch (Format) + { + case 3: pptable = Legal.MovePP_RS; break; + case 4: pptable = Legal.MovePP_DP; break; + case 5: pptable = Legal.MovePP_BW; break; + case 6: pptable = Legal.MovePP_XY; break; + default: pptable = new int[1]; break; + } + if (move >= pptable.Length) + move = 0; + return pptable[move]; + } + + public void setShinyPID() + { + do PID = PKX.getRandomPID(Species, Gender, Version, Nature, AltForm, PID); while (!IsShiny); + EncryptionConstant = PID; + } + public void setPIDGender(int gender) + { + do PID = PKX.getRandomPID(Species, gender, Version, Nature, AltForm, PID); while (IsShiny); + EncryptionConstant = PID; + } + public void setPIDNature(int nature) + { + do PID = PKX.getRandomPID(Species, Gender, Version, nature, AltForm, PID); while (IsShiny); + EncryptionConstant = PID; + } } } diff --git a/PKM/PKMConverter.cs b/PKM/PKMConverter.cs index 12115760b..be573542a 100644 --- a/PKM/PKMConverter.cs +++ b/PKM/PKMConverter.cs @@ -2,9 +2,9 @@ namespace PKHeX { - internal static class PKMConverter + public static class PKMConverter { - internal static int Country = 31; + internal static int Country = 49; internal static int Region = 7; internal static int ConsoleRegion = 1; internal static string OT_Name = "PKHeX"; @@ -19,7 +19,12 @@ internal static void updateConfig(int SUBREGION, int COUNTRY, int _3DSREGION, st OT_Gender = TRAINERGENDER; } - private static int getPKMDataFormat(byte[] data) + /// + /// Gets the generation of the Pokemon data. + /// + /// Raw data representing a Pokemon. + /// An integer indicating the generation of the PKM file, or -1 if the data is invalid. + public static int getPKMDataFormat(byte[] data) { if (!PKX.getIsPKM(data.Length)) return -1; @@ -40,19 +45,27 @@ private static int getPKMDataFormat(byte[] data) case PKX.SIZE_6PARTY: // collision with PGT, same size. if (BitConverter.ToUInt16(data, 0x4) != 0) // Bad Sanity? return -1; + if (BitConverter.ToUInt32(data, 0x06) == PKX.getCHK(data)) + return 6; if (BitConverter.ToUInt16(data, 0x58) != 0) // Encrypted? { - PKX.getCHK(data); for (int i = data.Length - 0x10; i < data.Length; i++) // 0x10 of 00's at the end != PK6 if (data[i] != 0) - break; - return 6; + return 6; + return -1; } - return -1; + return 6; } return -1; } - internal static PKM getPKMfromBytes(byte[] data, string ident = null) + + /// + /// Creates an instance of from the given data. + /// + /// Raw data of the Pokemon file. + /// Optional identifier for the Pokemon. Usually the full path of the source file. + /// An instance of created from the given , or null if is invalid. + public static PKM getPKMfromBytes(byte[] data, string ident = null) { checkEncrypted(ref data); switch (getPKMDataFormat(data)) @@ -103,11 +116,11 @@ internal static PKM convertToFormat(PKM pk, int Format, out string comment) pkm.Met_Location = 30001; // Pokétransfer } if (pkm.Format == 3 && Format > 3) - pkm = (pkm as PK3).convertToPK4(); + pkm = ((PK3) pkm).convertToPK4(); if (pkm.Format == 4 && Format > 4) - pkm = (pkm as PK4).convertToPK5(); + pkm = ((PK4) pkm).convertToPK5(); if (pkm.Format == 5 && Format > 5) - pkm = (pkm as PK5).convertToPK6(); + pkm = ((PK5) pkm).convertToPK6(); comment = $"Converted from pk{currentFormat} to pk{Format}"; return pkm; } diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 922bdf9e5..8aebbcbae 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -7,7 +7,7 @@ namespace PKHeX { - internal static class PKX + public static class PKX { internal const int SIZE_3PARTY = 100; internal const int SIZE_3STORED = 80; @@ -25,26 +25,30 @@ internal static class PKX internal const int SIZE_6STORED = 0xE8; internal const int SIZE_6BLOCK = 56; - internal static bool getIsPKM(long len) + /// + /// Determines if the given length is valid for a Pokemon file. + /// + /// Length of the data to check. + /// A boolean indicating whether or not the length is valid for a Pokemon file. + public static bool getIsPKM(long len) { return new[] {SIZE_3STORED, SIZE_3PARTY, SIZE_4STORED, SIZE_4PARTY, SIZE_5PARTY, SIZE_6STORED, SIZE_6PARTY}.Contains((int)len); } - // C# PKX Function Library // No WinForm object related code, only to calculate information. // May require re-referencing to main form for string array referencing. // Relies on Util for some common operations. // Data - internal static uint LCRNG(uint seed) + public static uint LCRNG(uint seed) { const uint a = 0x41C64E6D; const uint c = 0x00006073; return seed * a + c; } - internal static uint LCRNG(ref uint seed) + public static uint LCRNG(ref uint seed) { const uint a = 0x41C64E6D; const uint c = 0x00006073; @@ -157,79 +161,34 @@ internal static uint LCRNG(ref uint seed) {1000000, 600000, 1640000, 1059860, 800000, 1250000}, }; #endregion - - internal static readonly string[][] SpeciesLang = + + public static readonly string[][] SpeciesLang = { - Util.getStringList("species", "ja"), // none - Util.getStringList("species", "ja"), // 1 - Util.getStringList("species", "en"), // 2 - Util.getStringList("species", "fr"), // 3 - Util.getStringList("species", "it"), // 4 - Util.getStringList("species", "de"), // 5 - Util.getStringList("species", "es"), // none - Util.getStringList("species", "es"), // 7 - Util.getStringList("species", "ko"), // 8 + Util.getSpeciesList("ja"), // none + Util.getSpeciesList("ja"), // 1 + Util.getSpeciesList("en"), // 2 + Util.getSpeciesList("fr"), // 3 + Util.getSpeciesList("it"), // 4 + Util.getSpeciesList("de"), // 5 + Util.getSpeciesList("es"), // none + Util.getSpeciesList("es"), // 7 + Util.getSpeciesList("ko"), // 8 }; - internal static string getSpeciesName(int species, int lang) + public static string getSpeciesName(int species, int lang) { try { return SpeciesLang[lang][species]; } catch { return ""; } } - internal static bool getIsNicknamed(int species, string nick) + public static bool getIsNicknamed(int species, string nick) { try { return SpeciesLang.All(list => list[species].ToUpper() != nick); } catch { return false; } } - internal static PersonalInfo[] Personal = Legal.PersonalAO; + public static readonly PersonalTable Personal = PersonalTable.AO; // Stat Fetching - internal static int getMovePP(int move, int ppup) - { - return getBasePP(move) * (5 + ppup) / 5; - } - internal static int getBasePP(int move) - { - byte[] movepptable = - { - 00, - 35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 20, 30, 35, 35, 20, 15, 20, - 20, 25, 20, 30, 05, 10, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 10, 15, 30, 35, - 20, 20, 30, 25, 40, 20, 15, 20, 20, 20, 30, 25, 15, 30, 25, 05, 15, 10, 05, 20, - 20, 20, 05, 35, 20, 25, 20, 20, 20, 15, 25, 15, 10, 20, 25, 10, 35, 30, 15, 10, - 40, 10, 15, 30, 15, 20, 10, 15, 10, 05, 10, 10, 25, 10, 20, 40, 30, 30, 20, 20, - 15, 10, 40, 15, 10, 30, 10, 20, 10, 40, 40, 20, 30, 30, 20, 30, 10, 10, 20, 05, - 10, 30, 20, 20, 20, 05, 15, 10, 20, 10, 15, 35, 20, 15, 10, 10, 30, 15, 40, 20, - 15, 10, 05, 10, 30, 10, 15, 20, 15, 40, 20, 10, 05, 15, 10, 10, 10, 15, 30, 30, - 10, 10, 20, 10, 01, 01, 10, 25, 10, 05, 15, 25, 15, 10, 15, 30, 05, 40, 15, 10, - 25, 10, 30, 10, 20, 10, 10, 10, 10, 10, 20, 05, 40, 05, 05, 15, 05, 10, 05, 10, - 10, 10, 10, 20, 20, 40, 15, 10, 20, 20, 25, 05, 15, 10, 05, 20, 15, 20, 25, 20, - 05, 30, 05, 10, 20, 40, 05, 20, 40, 20, 15, 35, 10, 05, 05, 05, 15, 05, 20, 05, - 05, 15, 20, 10, 05, 05, 15, 10, 15, 15, 10, 10, 10, 20, 10, 10, 10, 10, 15, 15, - 15, 10, 20, 20, 10, 20, 20, 20, 20, 20, 10, 10, 10, 20, 20, 05, 15, 10, 10, 15, - 10, 20, 05, 05, 10, 10, 20, 05, 10, 20, 10, 20, 20, 20, 05, 05, 15, 20, 10, 15, - 20, 15, 10, 10, 15, 10, 05, 05, 10, 15, 10, 05, 20, 25, 05, 40, 15, 05, 40, 15, - 20, 20, 05, 15, 20, 20, 15, 15, 05, 10, 30, 20, 30, 15, 05, 40, 15, 05, 20, 05, - 15, 25, 25, 15, 20, 15, 20, 15, 20, 10, 20, 20, 05, 05, 10, 05, 40, 10, 10, 05, - 10, 10, 15, 10, 20, 15, 30, 10, 20, 05, 10, 10, 15, 10, 10, 05, 15, 05, 10, 10, - 30, 20, 20, 10, 10, 05, 05, 10, 05, 20, 10, 20, 10, 15, 10, 20, 20, 20, 15, 15, - 10, 15, 15, 15, 10, 10, 10, 20, 10, 30, 05, 10, 15, 10, 10, 05, 20, 30, 10, 30, - 15, 15, 15, 15, 30, 10, 20, 15, 10, 10, 20, 15, 05, 05, 15, 15, 05, 10, 05, 20, - 05, 15, 20, 05, 20, 20, 20, 20, 10, 20, 10, 15, 20, 15, 10, 10, 05, 10, 05, 05, - 10, 05, 05, 10, 05, 05, 05, 15, 10, 10, 10, 10, 10, 10, 15, 20, 15, 10, 15, 10, - 15, 10, 20, 10, 15, 10, 20, 20, 20, 20, 20, 15, 15, 15, 15, 15, 15, 20, 15, 10, - 15, 15, 15, 15, 10, 10, 10, 10, 10, 15, 15, 15, 15, 05, 05, 15, 05, 10, 10, 10, - 20, 20, 20, 10, 10, 30, 15, 15, 10, 15, 25, 10, 15, 10, 10, 10, 20, 10, 10, 10, - 10, 10, 15, 15, 05, 05, 10, 10, 10, 05, 05, 10, 05, 05, 15, 10, 05, 05, 05, 10, - 10, 10, 10, 20, 25, 10, 20, 30, 25, 20, 20, 15, 20, 15, 20, 20, 10, 10, 10, 10, - 10, 20, 10, 30, 15, 10, 10, 10, 20, 20, 05, 05, 05, 20, 10, 10, 20, 15, 20, 20, - 10, 20, 30, 10, 10, 40, 40, 30, 20, 40, 20, 20, 10, 10, 10, 10, 05, 10, 10, 05, - 05 - }; - if (move < 0) move = 0; - return movepptable[move]; - } - internal static byte[] getRandomEVs() + public static byte[] getRandomEVs() { byte[] evs = new byte[6]; do { @@ -243,11 +202,7 @@ internal static byte[] getRandomEVs() Util.Shuffle(evs); return evs; } - internal static byte getBaseFriendship(int species) - { - return Personal[species].BaseFriendship; - } - internal static int getLevel(int species, uint exp) + public static int getLevel(int species, uint exp) { int growth = Personal[species].EXPGrowth; int tl = 1; // Initial Level. Iterate upwards to find the level @@ -255,31 +210,13 @@ internal static int getLevel(int species, uint exp) if (tl == 100) return 100; return --tl; } - internal static bool getIsShiny(uint PID, uint TID, uint SID) - { - uint PSV = getPSV(PID); - uint TSV = getTSV(TID, SID); - return TSV == PSV; - } - internal static uint getEXP(int level, int species) + public static uint getEXP(int level, int species) { if (level <= 1) return 0; if (level > 100) level = 100; return ExpTable[level, Personal[species].EXPGrowth]; } - internal static byte[] getAbilities(int species, int formnum) - { - return Personal[Personal[species].FormeIndex(species, formnum)].Abilities; - } - internal static int getAbilityNumber(int species, int ability, int formnum) - { - byte[] spec_abilities = getAbilities(species, formnum); - int abilval = Array.IndexOf(spec_abilities, (byte)ability); - if (abilval >= 0) - return 1 << abilval; - return -1; - } - internal static int getGender(string s) + public static int getGender(string s) { if (s == null) return -1; @@ -290,7 +227,7 @@ internal static int getGender(string s) return 2; } - internal static string[] getCountryRegionText(int country, int region, string lang) + public static string[] getCountryRegionText(int country, int region, string lang) { // Get Language we're fetching for int index = Array.IndexOf(new[] { "ja", "en", "fr", "de", "it", "es", "zh", "ko"}, lang); @@ -343,26 +280,25 @@ internal static string[] getCountryRegionText(int country, int region, string la return data; } - internal static string getLocation(PKM pk, bool egg) + public static string getLocation(PKM pk, bool eggmet) { - return getLocation(egg, pk.Version, egg ? pk.Egg_Location : pk.Met_Location, pk.Format); - } - internal static string getLocation(bool eggmet, int gameorigin, int locval, int format) - { - if (gameorigin < 0x10 && (eggmet || format < 5)) + int locval = eggmet ? pk.Egg_Location : pk.Met_Location; + if (pk.Format == 3) + return Main.metRSEFRLG_00000[locval%0x100]; + if (pk.Version < 0x10 && (eggmet || pk.Format < 5)) { if (locval < 2000) return Main.metHGSS_00000[locval]; if (locval < 3000) return Main.metHGSS_02000[locval % 2000]; return Main.metHGSS_03000[locval % 3000]; } - if (gameorigin < 24) + if (pk.Version < 24) { if (locval < 30000) return Main.metBW2_00000[locval]; if (locval < 40000) return Main.metBW2_30000[locval % 10000 - 1]; if (locval < 60000) return Main.metBW2_40000[locval % 10000 - 1]; return Main.metBW2_60000[locval % 10000 - 1]; } - if (gameorigin > 23) + if (pk.Version > 23) { if (locval < 30000) return Main.metXY_00000[locval]; if (locval < 40000) return Main.metXY_30000[locval % 10000 - 1]; @@ -371,7 +307,7 @@ internal static string getLocation(bool eggmet, int gameorigin, int locval, int } return null; // Shouldn't happen. } - internal static string[] getQRText(PKM pkm) + public static string[] getQRText(PKM pkm) { string[] response = new string[3]; // Summarize @@ -399,45 +335,9 @@ internal static string[] getQRText(PKM pkm) return response; } - internal static string getFileName(PKM pkm) - { - return - $"{pkm.Species.ToString("000")}{(pkm.IsShiny ? " ★" : "")} - {pkm.Nickname} - {pkm.Checksum.ToString("X4")}{pkm.EncryptionConstant.ToString("X8")}.{pkm.Extension}"; - } - internal static ushort[] getStats(PKM pkm) - { - return getStats(pkm.Species, pkm.Stat_Level, pkm.Nature, pkm.AltForm, - pkm.EV_HP, pkm.EV_ATK, pkm.EV_DEF, pkm.EV_SPA, pkm.EV_SPD, pkm.EV_SPE, - pkm.IV_HP, pkm.IV_ATK, pkm.IV_DEF, pkm.IV_SPA, pkm.IV_SPD, pkm.IV_SPE); - } - internal static ushort[] getStats(int species, int level, int nature, int form, - int HP_EV, int ATK_EV, int DEF_EV, int SPA_EV, int SPD_EV, int SPE_EV, - int HP_IV, int ATK_IV, int DEF_IV, int SPA_IV, int SPD_IV, int SPE_IV) - { - PersonalInfo p = Personal[Personal[species].FormeIndex(species, form)]; - // Calculate Stats - ushort[] stats = new ushort[6]; // Stats are stored as ushorts in the PKX structure. We'll cap them as such. - stats[0] = (ushort)(p.HP == 1 ? 1 : (HP_IV + 2 * p.HP + HP_EV / 4 + 100) * level / 100 + 10); - stats[1] = (ushort)((ATK_IV + 2 * p.ATK + ATK_EV / 4) * level / 100 + 5); - stats[2] = (ushort)((DEF_IV + 2 * p.DEF + DEF_EV / 4) * level / 100 + 5); - stats[4] = (ushort)((SPA_IV + 2 * p.SPA + SPA_EV / 4) * level / 100 + 5); - stats[5] = (ushort)((SPD_IV + 2 * p.SPD + SPD_EV / 4) * level / 100 + 5); - stats[3] = (ushort)((SPE_IV + 2 * p.SPE + SPE_EV / 4) * level / 100 + 5); - - // Account for nature - int incr = nature / 5 + 1; - int decr = nature % 5 + 1; - if (incr == decr) return stats; // if neutral return stats without mod - stats[incr] *= 11; stats[incr] /= 10; - stats[decr] *= 9; stats[decr] /= 10; - - // Return Result - return stats; - } - // PKX Manipulation - internal static readonly byte[][] blockPosition = + public static readonly byte[][] blockPosition = { new byte[] {0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 2, 3, 1, 1, 2, 3, 2, 3, 1, 1, 2, 3, 2, 3}, new byte[] {1, 1, 2, 3, 2, 3, 0, 0, 0, 0, 0, 0, 2, 3, 1, 1, 3, 2, 2, 3, 1, 1, 3, 2}, @@ -445,11 +345,11 @@ internal static ushort[] getStats(PKM pkm) new byte[] {3, 2, 3, 2, 1, 1, 3, 2, 3, 2, 1, 1, 3, 2, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0}, }; - internal static readonly byte[] blockPositionInvert = + public static readonly byte[] blockPositionInvert = { 0, 1, 2, 4, 3, 5, 6, 7, 12, 18, 13, 19, 8, 10, 14, 20, 16, 22, 9, 11, 15, 21, 17, 23 }; - internal static byte[] shuffleArray(byte[] data, uint sv) + public static byte[] shuffleArray(byte[] data, uint sv) { byte[] sdata = new byte[data.Length]; Array.Copy(data, sdata, 8); // Copy unshuffled bytes @@ -464,7 +364,7 @@ internal static byte[] shuffleArray(byte[] data, uint sv) return sdata; } - internal static byte[] decryptArray(byte[] ekx) + public static byte[] decryptArray(byte[] ekx) { byte[] pkx = (byte[])ekx.Clone(); @@ -488,7 +388,7 @@ internal static byte[] decryptArray(byte[] ekx) return pkx; } - internal static byte[] encryptArray(byte[] pkx) + public static byte[] encryptArray(byte[] pkx) { // Shuffle uint pv = BitConverter.ToUInt32(pkx, 0); @@ -515,7 +415,7 @@ internal static byte[] encryptArray(byte[] pkx) // Done return ekx; } - internal static ushort getCHK(byte[] data) + public static ushort getCHK(byte[] data) { ushort chk = 0; for (int i = 8; i < 232; i += 2) // Loop through the entire PKX @@ -523,40 +423,10 @@ internal static ushort getCHK(byte[] data) return chk; } - internal static bool verifychk(byte[] input) - { - ushort checksum = 0; - if (input.Length == 100 || input.Length == 80) // Gen 3 Files - { - for (int i = 32; i < 80; i += 2) - checksum += BitConverter.ToUInt16(input, i); - - return checksum == BitConverter.ToUInt16(input, 28); - } - - if (input.Length == 236 || input.Length == 220 || input.Length == 136) // Gen 4/5 - Array.Resize(ref input, 136); - else if (input.Length == 232 || input.Length == 260) // Gen 6 - Array.Resize(ref input, 232); - else throw new ArgumentException("Wrong sized input array to verifychecksum"); - - ushort chk = 0; - for (int i = 8; i < input.Length; i += 2) - chk += BitConverter.ToUInt16(input, i); - - return chk == BitConverter.ToUInt16(input, 0x6); - } - - internal static uint getPSV(uint PID) - { - return (PID >> 16 ^ PID & 0xFFFF) >> 4; - } - internal static uint getTSV(uint TID, uint SID) - { - return (TID ^ SID) >> 4; - } - internal static uint getRandomPID(int species, int cg, int origin, int nature, int form) + + public static uint getRandomPID(int species, int cg, int origin, int nature, int form, uint OLDPID) { + uint bits = OLDPID & 0x00010001; int gt = Personal[species].Gender; if (origin >= 24) return Util.rnd32(); @@ -577,6 +447,8 @@ internal static uint getRandomPID(int species, int cg, int origin, int nature, i if (pidLetter != form) continue; } + else if (bits != (pid & 0x00010001)) // keep ability bits + continue; // Gen 3/4/5: Gender derived from PID uint gv = pid & 0xFF; @@ -588,9 +460,9 @@ internal static uint getRandomPID(int species, int cg, int origin, int nature, i return pid; // PID Passes } } - + // Data Requests - internal static Image getSprite(int species, int form, int gender, int item, bool isegg, bool shiny) + public static Image getSprite(int species, int form, int gender, int item, bool isegg, bool shiny, int generation = -1) { if (species == 0) return (Image)Resources.ResourceManager.GetObject("_0"); @@ -632,14 +504,17 @@ internal static Image getSprite(int species, int form, int gender, int item, boo if (item > 0) { Image itemimg = (Image)Resources.ResourceManager.GetObject("item_" + item) ?? Resources.helditem; + if ((generation == 3 || generation == 4) && 328 <= item && item <= 419) // gen3/4 TM + itemimg = Resources.item_tm; + // Redraw baseImage = Util.LayerImage(baseImage, itemimg, 22 + (15 - itemimg.Width) / 2, 15 + (15 - itemimg.Height), 1); } return baseImage; } - internal static Image getSprite(PKM pkm) + public static Image getSprite(PKM pkm) { - return getSprite(pkm.Species, pkm.AltForm, pkm.Gender, pkm.HeldItem, pkm.IsEgg, pkm.IsShiny); + return getSprite(pkm.Species, pkm.AltForm, pkm.Gender, pkm.HeldItem, pkm.IsEgg, pkm.IsShiny, pkm.Format); } // Font Related @@ -654,7 +529,7 @@ private static FontFamily[] FontFamilies return s_FontCollection.Families; } } - internal static Font getPKXFont(float size) + public static Font getPKXFont(float size) { return new Font(FontFamilies[0], size); } @@ -671,9 +546,9 @@ private static void setPKXFont() } catch { Util.Error("Unable to add ingame font."); } } - + // Personal.dat - internal static string[] getFormList(int species, string[] t, string[] f, string[] g) + public static string[] getFormList(int species, string[] t, string[] f, string[] g) { // Mega List if (Array.IndexOf(new[] @@ -687,7 +562,6 @@ internal static string[] getFormList(int species, string[] t, string[] f, string t[000], // Normal f[723], // Mega };} - // MegaXY List switch (species) { case 6: @@ -709,6 +583,12 @@ internal static string[] getFormList(int species, string[] t, string[] f, string f[733], // Libre f[734], // Cosplay }; + case 172: + return new[] + { + t[000], // Normal + f[000], // Spiky + }; case 201: return new[] { @@ -991,13 +871,13 @@ internal static string[] getFormList(int species, string[] t, string[] f, string /// Hidden Power Type /// Order: HP,ATK,DEF,SPEED,SPA,SPD /// Hidden Power Type - internal static int[] setHPIVs(int type, int[] ivs) + public static int[] setHPIVs(int type, int[] ivs) { for (int i = 0; i < 6; i++) ivs[i] = (ivs[i] & 0x1E) + hpivs[type, i]; return ivs; } - internal static readonly int[,] hpivs = { + public static readonly int[,] hpivs = { { 1, 1, 0, 0, 0, 0 }, // Fighting { 0, 0, 0, 0, 0, 1 }, // Flying { 1, 1, 0, 0, 0, 1 }, // Poison @@ -1016,7 +896,7 @@ internal static int[] setHPIVs(int type, int[] ivs) { 1, 1, 1, 1, 1, 1 }, // Dark }; - internal static string TrimFromFFFF(string input) + public static string TrimFromFFFF(string input) { int index = input.IndexOf((char)0xFFFF); return index < 0 ? input : input.Substring(0, index); @@ -1024,7 +904,7 @@ internal static string TrimFromFFFF(string input) // Past Gen Manipulation - internal static byte[] shuffleArray45(byte[] data, uint sv) + public static byte[] shuffleArray45(byte[] data, uint sv) { byte[] sdata = new byte[data.Length]; Array.Copy(data, sdata, 8); // Copy unshuffled bytes @@ -1040,7 +920,7 @@ internal static byte[] shuffleArray45(byte[] data, uint sv) return sdata; } - internal static byte[] decryptArray45(byte[] ekm) + public static byte[] decryptArray45(byte[] ekm) { byte[] pkm = (byte[])ekm.Clone(); @@ -1066,7 +946,7 @@ internal static byte[] decryptArray45(byte[] ekm) return pkm; } - internal static byte[] encryptArray45(byte[] pkm) + public static byte[] encryptArray45(byte[] pkm) { uint pv = BitConverter.ToUInt32(pkm, 0); uint sv = ((pv & 0x3E000) >> 0xD) % 24; @@ -1093,26 +973,26 @@ internal static byte[] encryptArray45(byte[] pkm) // Done return ekm; } - - internal static int getUnownForm(uint PID) + + public static int getUnownForm(uint PID) { byte[] data = BitConverter.GetBytes(PID); return (((data[3] & 3) << 6) + ((data[2] & 3) << 4) + ((data[1] & 3) << 2) + ((data[0] & 3) << 0)) % 28; } - internal static ushort val2charG4(ushort val) + public static ushort val2charG4(ushort val) { int index = Array.IndexOf(G4Values, val); return index > -1 ? G4Chars[index] : (ushort)0xFFFF; } - internal static ushort char2valG4(ushort chr) + public static ushort char2valG4(ushort chr) { int index = Array.IndexOf(G4Chars, chr); return index > -1 ? G4Values[index] : (ushort)0xFFFF; } - internal static string array2strG4(byte[] strdata) + public static string array2strG4(byte[] strdata) { string s = ""; for (int i = 0; i < strdata.Length; i += 2) @@ -1126,7 +1006,7 @@ internal static string array2strG4(byte[] strdata) return s; } - internal static byte[] str2arrayG4(string str) + public static byte[] str2arrayG4(string str) { byte[] strdata = new byte[str.Length * 2 + 2]; // +2 for 0xFFFF for (int i = 0; i < str.Length; i++) @@ -1142,16 +1022,16 @@ internal static byte[] str2arrayG4(string str) } // Gen3 && 3->4 Conversion has two character tables, and translates to the same character map. - internal static ushort getG4Val(byte val, bool jp) { return jp ? G34_4J[val] : G34_4E[val]; } - internal static ushort getG3Char(byte val, bool jp) { return val2charG4(getG4Val(val, jp)); } + public static ushort getG4Val(byte val, bool jp) { return jp ? G34_4J[val] : G34_4E[val]; } + public static ushort getG3Char(byte val, bool jp) { return val2charG4(getG4Val(val, jp)); } - internal static byte setG3Char(ushort chr, bool jp) + public static byte setG3Char(ushort chr, bool jp) { int index = Array.IndexOf(jp ? G34_4J : G34_4E, char2valG4(chr)); return (byte)(index > -1 ? index : 0xFF); } - internal static string getG3Str(byte[] strdata, bool jp) + public static string getG3Str(byte[] strdata, bool jp) { return strdata .TakeWhile(val => val < 247) // Take valid values @@ -1160,7 +1040,7 @@ internal static string getG3Str(byte[] strdata, bool jp) .Aggregate("", (current, chr) => current + (char)chr); } - internal static byte[] setG3Str(string str, bool jp) + public static byte[] setG3Str(string str, bool jp) { byte[] strdata = new byte[str.Length + 1]; // +1 for 0xFF for (int i = 0; i < str.Length; i++) @@ -1171,23 +1051,24 @@ internal static byte[] setG3Str(string str, bool jp) { Array.Resize(ref strdata, i); break; } strdata[i] = val; } - strdata[str.Length] = 0xFF; + if (strdata.Length > 0) + strdata[strdata.Length - 1] = 0xFF; return strdata; } - internal static int getG4Species(int g3index) + public static int getG4Species(int g3index) { int index = Array.IndexOf(oldindex, g3index); return newindex[index > -1 ? index : 0]; } - internal static int getG3Species(int g4index) + public static int getG3Species(int g4index) { int index = Array.IndexOf(newindex, g4index); return oldindex[index > -1 ? index : 0]; } - internal static int getGender(int species, uint PID) + public static int getGender(int species, uint PID) { int genderratio = Personal[species].Gender; switch (genderratio) @@ -1199,11 +1080,11 @@ internal static int getGender(int species, uint PID) } } #region Gen 3 Species Table - internal static readonly int[] newindex = + internal static int[] newindex => new[] { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,77,79,80,81,82,83,84,85,86, + 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86, 87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110, 111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131, 132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152, @@ -1221,7 +1102,7 @@ internal static int getGender(int species, uint PID) 385,386,358, }; - internal static readonly int[] oldindex = + internal static int[] oldindex => new[] { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, @@ -1242,399 +1123,6 @@ internal static int getGender(int species, uint PID) 388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408, 409,410,411, }; - #endregion - #region Gen 3 Ability Table - internal static readonly byte[][] Gen3Abilities = - { - new byte[] {0x00, 0x00}, // 000 - new byte[] {0x41, 0x41}, // 001 - new byte[] {0x41, 0x41}, // 002 - new byte[] {0x41, 0x41}, // 003 - new byte[] {0x42, 0x42}, // 004 - new byte[] {0x42, 0x42}, // 005 - new byte[] {0x42, 0x42}, // 006 - new byte[] {0x43, 0x43}, // 007 - new byte[] {0x43, 0x43}, // 008 - new byte[] {0x43, 0x43}, // 009 - new byte[] {0x13, 0x13}, // 010 - new byte[] {0x3d, 0x3d}, // 011 - new byte[] {0x0e, 0x0e}, // 012 - new byte[] {0x13, 0x13}, // 013 - new byte[] {0x3d, 0x3d}, // 014 - new byte[] {0x44, 0x44}, // 015 - new byte[] {0x33, 0x33}, // 016 - new byte[] {0x33, 0x33}, // 017 - new byte[] {0x33, 0x33}, // 018 - new byte[] {0x32, 0x3e}, // 019 - new byte[] {0x32, 0x3e}, // 020 - new byte[] {0x33, 0x33}, // 021 - new byte[] {0x33, 0x33}, // 022 - new byte[] {0x3d, 0x16}, // 023 - new byte[] {0x3d, 0x16}, // 024 - new byte[] {0x09, 0x09}, // 025 - new byte[] {0x09, 0x09}, // 026 - new byte[] {0x08, 0x08}, // 027 - new byte[] {0x08, 0x08}, // 028 - new byte[] {0x26, 0x26}, // 029 - new byte[] {0x26, 0x26}, // 030 - new byte[] {0x26, 0x26}, // 031 - new byte[] {0x26, 0x26}, // 032 - new byte[] {0x26, 0x26}, // 033 - new byte[] {0x26, 0x26}, // 034 - new byte[] {0x38, 0x38}, // 035 - new byte[] {0x38, 0x38}, // 036 - new byte[] {0x12, 0x12}, // 037 - new byte[] {0x12, 0x12}, // 038 - new byte[] {0x38, 0x38}, // 039 - new byte[] {0x38, 0x38}, // 040 - new byte[] {0x27, 0x27}, // 041 - new byte[] {0x27, 0x27}, // 042 - new byte[] {0x22, 0x22}, // 043 - new byte[] {0x22, 0x22}, // 044 - new byte[] {0x22, 0x22}, // 045 - new byte[] {0x1b, 0x1b}, // 046 - new byte[] {0x1b, 0x1b}, // 047 - new byte[] {0x0e, 0x0e}, // 048 - new byte[] {0x13, 0x13}, // 049 - new byte[] {0x08, 0x47}, // 050 - new byte[] {0x08, 0x47}, // 051 - new byte[] {0x35, 0x35}, // 052 - new byte[] {0x07, 0x07}, // 053 - new byte[] {0x06, 0x0d}, // 054 - new byte[] {0x06, 0x0d}, // 055 - new byte[] {0x48, 0x48}, // 056 - new byte[] {0x48, 0x48}, // 057 - new byte[] {0x16, 0x12}, // 058 - new byte[] {0x16, 0x12}, // 059 - new byte[] {0x06, 0x0b}, // 060 - new byte[] {0x06, 0x0b}, // 061 - new byte[] {0x06, 0x0b}, // 062 - new byte[] {0x1c, 0x27}, // 063 - new byte[] {0x1c, 0x27}, // 064 - new byte[] {0x1c, 0x27}, // 065 - new byte[] {0x3e, 0x3e}, // 066 - new byte[] {0x3e, 0x3e}, // 067 - new byte[] {0x3e, 0x3e}, // 068 - new byte[] {0x22, 0x22}, // 069 - new byte[] {0x22, 0x22}, // 070 - new byte[] {0x22, 0x22}, // 071 - new byte[] {0x1d, 0x40}, // 072 - new byte[] {0x1d, 0x40}, // 073 - new byte[] {0x45, 0x05}, // 074 - new byte[] {0x45, 0x05}, // 075 - new byte[] {0x45, 0x05}, // 076 - new byte[] {0x32, 0x12}, // 077 - new byte[] {0x32, 0x12}, // 078 - new byte[] {0x0c, 0x14}, // 079 - new byte[] {0x0c, 0x14}, // 080 - new byte[] {0x2a, 0x05}, // 081 - new byte[] {0x2a, 0x05}, // 082 - new byte[] {0x33, 0x27}, // 083 - new byte[] {0x32, 0x30}, // 084 - new byte[] {0x32, 0x30}, // 085 - new byte[] {0x2f, 0x2f}, // 086 - new byte[] {0x2f, 0x2f}, // 087 - new byte[] {0x01, 0x3c}, // 088 - new byte[] {0x01, 0x3c}, // 089 - new byte[] {0x4b, 0x4b}, // 090 - new byte[] {0x4b, 0x4b}, // 091 - new byte[] {0x1a, 0x1a}, // 092 - new byte[] {0x1a, 0x1a}, // 093 - new byte[] {0x1a, 0x1a}, // 094 - new byte[] {0x45, 0x05}, // 095 - new byte[] {0x0f, 0x0f}, // 096 - new byte[] {0x0f, 0x0f}, // 097 - new byte[] {0x34, 0x4b}, // 098 - new byte[] {0x34, 0x4b}, // 099 - new byte[] {0x2b, 0x09}, // 100 - new byte[] {0x2b, 0x09}, // 101 - new byte[] {0x22, 0x22}, // 102 - new byte[] {0x22, 0x22}, // 103 - new byte[] {0x45, 0x1f}, // 104 - new byte[] {0x45, 0x1f}, // 105 - new byte[] {0x07, 0x07}, // 106 - new byte[] {0x33, 0x33}, // 107 - new byte[] {0x0c, 0x14}, // 108 - new byte[] {0x1a, 0x1a}, // 109 - new byte[] {0x1a, 0x1a}, // 110 - new byte[] {0x45, 0x1f}, // 111 - new byte[] {0x45, 0x1f}, // 112 - new byte[] {0x1e, 0x20}, // 113 - new byte[] {0x22, 0x22}, // 114 - new byte[] {0x30, 0x30}, // 115 - new byte[] {0x21, 0x21}, // 116 - new byte[] {0x26, 0x26}, // 117 - new byte[] {0x21, 0x29}, // 118 - new byte[] {0x21, 0x29}, // 119 - new byte[] {0x23, 0x1e}, // 120 - new byte[] {0x23, 0x1e}, // 121 - new byte[] {0x2b, 0x2b}, // 122 - new byte[] {0x44, 0x44}, // 123 - new byte[] {0x0c, 0x0c}, // 124 - new byte[] {0x09, 0x09}, // 125 - new byte[] {0x31, 0x31}, // 126 - new byte[] {0x34, 0x34}, // 127 - new byte[] {0x16, 0x16}, // 128 - new byte[] {0x21, 0x21}, // 129 - new byte[] {0x16, 0x16}, // 130 - new byte[] {0x0b, 0x4b}, // 131 - new byte[] {0x07, 0x07}, // 132 - new byte[] {0x32, 0x32}, // 133 - new byte[] {0x0b, 0x0b}, // 134 - new byte[] {0x0a, 0x0a}, // 135 - new byte[] {0x12, 0x12}, // 136 - new byte[] {0x24, 0x24}, // 137 - new byte[] {0x21, 0x4b}, // 138 - new byte[] {0x21, 0x4b}, // 139 - new byte[] {0x21, 0x04}, // 140 - new byte[] {0x21, 0x04}, // 141 - new byte[] {0x45, 0x2e}, // 142 - new byte[] {0x11, 0x2f}, // 143 - new byte[] {0x2e, 0x2e}, // 144 - new byte[] {0x2e, 0x2e}, // 145 - new byte[] {0x2e, 0x2e}, // 146 - new byte[] {0x3d, 0x3d}, // 147 - new byte[] {0x3d, 0x3d}, // 148 - new byte[] {0x27, 0x27}, // 149 - new byte[] {0x2e, 0x2e}, // 150 - new byte[] {0x1c, 0x1c}, // 151 - new byte[] {0x41, 0x41}, // 152 - new byte[] {0x41, 0x41}, // 153 - new byte[] {0x41, 0x41}, // 154 - new byte[] {0x42, 0x42}, // 155 - new byte[] {0x42, 0x42}, // 156 - new byte[] {0x42, 0x42}, // 157 - new byte[] {0x43, 0x43}, // 158 - new byte[] {0x43, 0x43}, // 159 - new byte[] {0x43, 0x43}, // 160 - new byte[] {0x32, 0x33}, // 161 - new byte[] {0x32, 0x33}, // 162 - new byte[] {0x0f, 0x33}, // 163 - new byte[] {0x0f, 0x33}, // 164 - new byte[] {0x44, 0x30}, // 165 - new byte[] {0x44, 0x30}, // 166 - new byte[] {0x0f, 0x44}, // 167 - new byte[] {0x0f, 0x44}, // 168 - new byte[] {0x27, 0x27}, // 169 - new byte[] {0x0a, 0x23}, // 170 - new byte[] {0x0a, 0x23}, // 171 - new byte[] {0x09, 0x09}, // 172 - new byte[] {0x38, 0x38}, // 173 - new byte[] {0x38, 0x38}, // 174 - new byte[] {0x37, 0x20}, // 175 - new byte[] {0x37, 0x20}, // 176 - new byte[] {0x1c, 0x30}, // 177 - new byte[] {0x1c, 0x30}, // 178 - new byte[] {0x09, 0x09}, // 179 - new byte[] {0x09, 0x09}, // 180 - new byte[] {0x09, 0x09}, // 181 - new byte[] {0x22, 0x22}, // 182 - new byte[] {0x2f, 0x25}, // 183 - new byte[] {0x2f, 0x25}, // 184 - new byte[] {0x45, 0x05}, // 185 - new byte[] {0x06, 0x0b}, // 186 - new byte[] {0x22, 0x22}, // 187 - new byte[] {0x22, 0x22}, // 188 - new byte[] {0x22, 0x22}, // 189 - new byte[] {0x32, 0x35}, // 190 - new byte[] {0x22, 0x22}, // 191 - new byte[] {0x22, 0x22}, // 192 - new byte[] {0x03, 0x0e}, // 193 - new byte[] {0x06, 0x0b}, // 194 - new byte[] {0x06, 0x0b}, // 195 - new byte[] {0x1c, 0x1c}, // 196 - new byte[] {0x1c, 0x1c}, // 197 - new byte[] {0x0f, 0x0f}, // 198 - new byte[] {0x0c, 0x14}, // 199 - new byte[] {0x1a, 0x1a}, // 200 - new byte[] {0x1a, 0x1a}, // 201 - new byte[] {0x17, 0x17}, // 202 - new byte[] {0x27, 0x30}, // 203 - new byte[] {0x05, 0x05}, // 204 - new byte[] {0x05, 0x05}, // 205 - new byte[] {0x20, 0x32}, // 206 - new byte[] {0x08, 0x34}, // 207 - new byte[] {0x45, 0x05}, // 208 - new byte[] {0x16, 0x32}, // 209 - new byte[] {0x16, 0x16}, // 210 - new byte[] {0x21, 0x26}, // 211 - new byte[] {0x44, 0x44}, // 212 - new byte[] {0x05, 0x05}, // 213 - new byte[] {0x44, 0x3e}, // 214 - new byte[] {0x27, 0x33}, // 215 - new byte[] {0x35, 0x35}, // 216 - new byte[] {0x3e, 0x3e}, // 217 - new byte[] {0x28, 0x31}, // 218 - new byte[] {0x28, 0x31}, // 219 - new byte[] {0x0c, 0x0c}, // 220 - new byte[] {0x0c, 0x0c}, // 221 - new byte[] {0x37, 0x1e}, // 222 - new byte[] {0x37, 0x37}, // 223 - new byte[] {0x15, 0x15}, // 224 - new byte[] {0x37, 0x48}, // 225 - new byte[] {0x21, 0x0b}, // 226 - new byte[] {0x33, 0x05}, // 227 - new byte[] {0x30, 0x12}, // 228 - new byte[] {0x30, 0x12}, // 229 - new byte[] {0x21, 0x21}, // 230 - new byte[] {0x35, 0x35}, // 231 - new byte[] {0x05, 0x05}, // 232 - new byte[] {0x24, 0x24}, // 233 - new byte[] {0x16, 0x16}, // 234 - new byte[] {0x14, 0x14}, // 235 - new byte[] {0x3e, 0x3e}, // 236 - new byte[] {0x16, 0x16}, // 237 - new byte[] {0x0c, 0x0c}, // 238 - new byte[] {0x09, 0x09}, // 239 - new byte[] {0x31, 0x31}, // 240 - new byte[] {0x2f, 0x2f}, // 241 - new byte[] {0x1e, 0x20}, // 242 - new byte[] {0x2e, 0x2e}, // 243 - new byte[] {0x2e, 0x2e}, // 244 - new byte[] {0x2e, 0x2e}, // 245 - new byte[] {0x3e, 0x3e}, // 246 - new byte[] {0x3d, 0x3d}, // 247 - new byte[] {0x2d, 0x2d}, // 248 - new byte[] {0x2e, 0x2e}, // 249 - new byte[] {0x2e, 0x2e}, // 250 - new byte[] {0x1e, 0x1e}, // 251 - new byte[] {0x41, 0x41}, // 252 - new byte[] {0x41, 0x41}, // 253 - new byte[] {0x41, 0x41}, // 254 - new byte[] {0x42, 0x42}, // 255 - new byte[] {0x42, 0x42}, // 256 - new byte[] {0x42, 0x42}, // 257 - new byte[] {0x43, 0x43}, // 258 - new byte[] {0x43, 0x43}, // 259 - new byte[] {0x43, 0x43}, // 260 - new byte[] {0x32, 0x32}, // 261 - new byte[] {0x16, 0x16}, // 262 - new byte[] {0x35, 0x35}, // 263 - new byte[] {0x35, 0x35}, // 264 - new byte[] {0x13, 0x13}, // 265 - new byte[] {0x3d, 0x3d}, // 266 - new byte[] {0x44, 0x44}, // 267 - new byte[] {0x3d, 0x3d}, // 268 - new byte[] {0x13, 0x13}, // 269 - new byte[] {0x21, 0x2c}, // 270 - new byte[] {0x21, 0x2c}, // 271 - new byte[] {0x21, 0x2c}, // 272 - new byte[] {0x22, 0x30}, // 273 - new byte[] {0x22, 0x30}, // 274 - new byte[] {0x22, 0x30}, // 275 - new byte[] {0x3e, 0x3e}, // 276 - new byte[] {0x3e, 0x3e}, // 277 - new byte[] {0x33, 0x33}, // 278 - new byte[] {0x33, 0x33}, // 279 - new byte[] {0x1c, 0x24}, // 280 - new byte[] {0x1c, 0x24}, // 281 - new byte[] {0x1c, 0x24}, // 282 - new byte[] {0x21, 0x21}, // 283 - new byte[] {0x16, 0x16}, // 284 - new byte[] {0x1b, 0x1b}, // 285 - new byte[] {0x1b, 0x1b}, // 286 - new byte[] {0x36, 0x36}, // 287 - new byte[] {0x48, 0x48}, // 288 - new byte[] {0x36, 0x36}, // 289 - new byte[] {0x0e, 0x0e}, // 290 - new byte[] {0x03, 0x03}, // 291 - new byte[] {0x19, 0x19}, // 292 - new byte[] {0x2b, 0x2b}, // 293 - new byte[] {0x2b, 0x2b}, // 294 - new byte[] {0x2b, 0x2b}, // 295 - new byte[] {0x2f, 0x3e}, // 296 - new byte[] {0x2f, 0x3e}, // 297 - new byte[] {0x2f, 0x3e}, // 298 - new byte[] {0x05, 0x2a}, // 299 - new byte[] {0x38, 0x38}, // 300 - new byte[] {0x38, 0x38}, // 301 - new byte[] {0x33, 0x33}, // 302 - new byte[] {0x34, 0x16}, // 303 - new byte[] {0x45, 0x05}, // 304 - new byte[] {0x45, 0x05}, // 305 - new byte[] {0x45, 0x05}, // 306 - new byte[] {0x4a, 0x4a}, // 307 - new byte[] {0x4a, 0x4a}, // 308 - new byte[] {0x09, 0x1f}, // 309 - new byte[] {0x09, 0x1f}, // 310 - new byte[] {0x39, 0x39}, // 311 - new byte[] {0x3a, 0x3a}, // 312 - new byte[] {0x23, 0x44}, // 313 - new byte[] {0x0c, 0x0c}, // 314 - new byte[] {0x1e, 0x26}, // 315 - new byte[] {0x40, 0x3c}, // 316 - new byte[] {0x40, 0x3c}, // 317 - new byte[] {0x18, 0x18}, // 318 - new byte[] {0x18, 0x18}, // 319 - new byte[] {0x29, 0x0c}, // 320 - new byte[] {0x29, 0x0c}, // 321 - new byte[] {0x0c, 0x0c}, // 322 - new byte[] {0x28, 0x28}, // 323 - new byte[] {0x49, 0x49}, // 324 - new byte[] {0x2f, 0x14}, // 325 - new byte[] {0x2f, 0x14}, // 326 - new byte[] {0x14, 0x14}, // 327 - new byte[] {0x34, 0x47}, // 328 - new byte[] {0x1a, 0x1a}, // 329 - new byte[] {0x1a, 0x1a}, // 330 - new byte[] {0x08, 0x08}, // 331 - new byte[] {0x08, 0x08}, // 332 - new byte[] {0x1e, 0x1e}, // 333 - new byte[] {0x1e, 0x1e}, // 334 - new byte[] {0x11, 0x11}, // 335 - new byte[] {0x3d, 0x3d}, // 336 - new byte[] {0x1a, 0x1a}, // 337 - new byte[] {0x1a, 0x1a}, // 338 - new byte[] {0x0c, 0x0c}, // 339 - new byte[] {0x0c, 0x0c}, // 340 - new byte[] {0x34, 0x4b}, // 341 - new byte[] {0x34, 0x4b}, // 342 - new byte[] {0x1a, 0x1a}, // 343 - new byte[] {0x1a, 0x1a}, // 344 - new byte[] {0x15, 0x15}, // 345 - new byte[] {0x15, 0x15}, // 346 - new byte[] {0x04, 0x04}, // 347 - new byte[] {0x04, 0x04}, // 348 - new byte[] {0x21, 0x21}, // 349 - new byte[] {0x3f, 0x3f}, // 350 - new byte[] {0x3b, 0x3b}, // 351 - new byte[] {0x10, 0x10}, // 352 - new byte[] {0x0f, 0x0f}, // 353 - new byte[] {0x0f, 0x0f}, // 354 - new byte[] {0x1a, 0x1a}, // 355 - new byte[] {0x2e, 0x2e}, // 356 - new byte[] {0x22, 0x22}, // 357 - new byte[] {0x1a, 0x1a}, // 358 - new byte[] {0x2e, 0x2e}, // 359 - new byte[] {0x17, 0x17}, // 360 - new byte[] {0x27, 0x27}, // 361 - new byte[] {0x27, 0x27}, // 362 - new byte[] {0x2f, 0x2f}, // 363 - new byte[] {0x2f, 0x2f}, // 364 - new byte[] {0x2f, 0x2f}, // 365 - new byte[] {0x4b, 0x4b}, // 366 - new byte[] {0x21, 0x21}, // 367 - new byte[] {0x21, 0x21}, // 368 - new byte[] {0x21, 0x45}, // 369 - new byte[] {0x21, 0x21}, // 370 - new byte[] {0x45, 0x45}, // 371 - new byte[] {0x45, 0x45}, // 372 - new byte[] {0x16, 0x16}, // 373 - new byte[] {0x1d, 0x1d}, // 374 - new byte[] {0x1d, 0x1d}, // 375 - new byte[] {0x1d, 0x1d}, // 376 - new byte[] {0x1d, 0x1d}, // 377 - new byte[] {0x1d, 0x1d}, // 378 - new byte[] {0x1d, 0x1d}, // 379 - new byte[] {0x1a, 0x1a}, // 380 - new byte[] {0x1a, 0x1a}, // 381 - new byte[] {0x02, 0x02}, // 382 - new byte[] {0x46, 0x46}, // 383 - new byte[] {0x4d, 0x4d}, // 384 - new byte[] {0x20, 0x20}, // 385 - new byte[] {0x2e, 0x2e}, // 386 - }; - #endregion #region Gen 3/4 Character Tables (Val->Unicode) @@ -1990,48 +1478,46 @@ internal static int getGender(int species, uint PID) internal static readonly ushort[] G34_4E = { - 478, 351, 352, 353, 358, 359, 360, 361, 362, 363, 020, 365, 366, 369, 370, - 371, 415, 376, 377, 378, 368, 382, 383, 384, 046, 358, 359, 392, 393, 394, - 395, 396, 397, 398, 401, 402, 403, 416, 408, 409, 410, 400, 420, 419, 479, - 450, 445, 003, 004, 006, 008, 010, 068, 449, 072, 013, 015, 017, 019, 021, - 023, 025, 027, 029, 031, 033, 035, 038, 040, 042, 049, 052, 055, 058, 061, - 050, 053, 056, 059, 062, 036, 426, 425, 480, 481, 091, 092, 094, 096, 098, - 364, 100, 102, 106, 108, 110, 112, 114, 117, 119, 121, 123, 124, 125, 385, - 127, 128, 131, 134, 137, 140, 396, 144, 145, 146, 147, 149, 151, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 082, 084, 086, 088, 090, 148, 150, 152, - 093, 095, 097, 099, 101, 103, 105, 107, 109, 111, 113, 115, 118, 120, 122, - 129, 132, 135, 138, 141, 130, 133, 136, 139, 142, 116, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 427, 428, 430, 241, 230, 431, 436, 437, 434, - 435, 443, 444, 424, 429, 242, 433, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 289, - 452, 355, 373, 379, 387, 405, 411 + 478, 351, 352, 353, 358, 359, 360, 361, 362, 363, 020, 365, 366, 369, 370, 371, // 0 + 415, 376, 377, 378, 368, 382, 383, 384, 046, 358, 359, 392, 393, 394, 395, 396, // 1 + 397, 398, 401, 402, 403, 416, 408, 409, 410, 400, 420, 419, 479, 450, 445, 003, // 2 + 004, 006, 008, 010, 068, 449, 072, 013, 015, 017, 019, 021, 023, 025, 027, 029, // 3 + 031, 033, 035, 038, 040, 042, 049, 052, 055, 058, 061, 050, 053, 056, 059, 062, // 4 + 036, 426, 425, 480, 481, 091, 092, 094, 096, 098, 364, 100, 102, 106, 108, 110, // 5 + 112, 114, 117, 119, 121, 123, 124, 125, 385, 127, 128, 131, 134, 137, 140, 396, // 6 + 144, 145, 146, 147, 149, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 082, // 7 + 084, 086, 088, 090, 148, 150, 152, 093, 095, 097, 099, 101, 103, 105, 107, 109, // 8 + 111, 113, 115, 118, 120, 122, 129, 132, 135, 138, 141, 130, 133, 136, 139, 142, // 9 + 116, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 427, 428, 430, 446, 230, // A + 431, 436, 437, 434, 435, 443, 444, 424, 429, 242, 433, 299, 300, 301, 302, 303, // B + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, // C + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, // D + 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 289, // E + 452, 355, 373, 379, 387, 405, 411 // F }; internal static readonly ushort[] G34_4J = { - 001, 003, 005, 007, 009, 011, 012, 014, 016, 018, 020, 022, 024, 026, 028, - 030, 032, 034, 037, 039, 041, 043, 044, 045, 046, 047, 048, 051, 054, 057, - 060, 063, 064, 065, 066, 067, 069, 071, 073, 074, 075, 076, 077, 078, 079, - 080, 081, 002, 004, 006, 008, 010, 068, 070, 072, 013, 015, 017, 019, 021, - 023, 025, 027, 029, 031, 033, 035, 038, 040, 042, 049, 052, 055, 058, 061, - 050, 053, 056, 059, 062, 036, 083, 085, 087, 089, 091, 092, 094, 096, 098, - 100, 102, 104, 106, 108, 110, 112, 114, 117, 119, 121, 123, 124, 125, 126, - 127, 128, 131, 134, 137, 140, 143, 144, 145, 146, 147, 149, 151, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 082, 084, 086, 088, 090, 148, 150, 152, - 093, 095, 097, 099, 101, 103, 105, 107, 109, 111, 113, 115, 118, 120, 122, - 129, 132, 135, 138, 141, 130, 133, 136, 139, 142, 116, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 225, 226, 228, 241, 230, 229, 234, 235, 232, - 233, 443, 444, 424, 430, 242, 433, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 289, - 452, 355, 373, 379, 387, 405, 411 + 001, 003, 005, 007, 009, 011, 012, 014, 016, 018, 020, 022, 024, 026, 028, 030, // 0 + 032, 034, 037, 039, 041, 043, 044, 045, 046, 047, 048, 051, 054, 057, 060, 063, // 1 + 064, 065, 066, 067, 069, 071, 073, 074, 075, 076, 077, 078, 079, 080, 081, 002, // 2 + 004, 006, 008, 010, 068, 070, 072, 013, 015, 017, 019, 021, 023, 025, 027, 029, // 3 + 031, 033, 035, 038, 040, 042, 049, 052, 055, 058, 061, 050, 053, 056, 059, 062, // 4 + 036, 083, 085, 087, 089, 091, 092, 094, 096, 098, 100, 102, 104, 106, 108, 110, // 5 + 112, 114, 117, 119, 121, 123, 124, 125, 126, 127, 128, 131, 134, 137, 140, 143, // 6 + 144, 145, 146, 147, 149, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 082, // 7 + 084, 086, 088, 090, 148, 150, 152, 093, 095, 097, 099, 101, 103, 105, 107, 109, // 8 + 111, 113, 115, 118, 120, 122, 129, 132, 135, 138, 141, 130, 133, 136, 139, 142, // 9 + 116, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 225, 226, 228, 446, 230, // A + 229, 234, 235, 232, 233, 443, 444, 424, 430, 242, 433, 172, 173, 174, 175, 176, // B + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, // C + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, // D + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 289, // E + 452, 355, 373, 379, 387, 405, 411 // F }; #endregion - internal static readonly byte[][] G4TransferTrashBytes = { + public static readonly byte[][] G4TransferTrashBytes = { new byte[] { }, // Unused new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, new byte[] { 0x18, 0x20, 0x0D, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xA1, 0x0C, 0x02, 0xE0, 0xFF }, @@ -2042,7 +1528,7 @@ internal static int getGender(int species, uint PID) new byte[] { 0x74, 0x20, 0x0D, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xA1, 0x0C, 0x02, 0xE0, 0xFF }, }; - internal static byte[] decryptArray3(byte[] ekm) + public static byte[] decryptArray3(byte[] ekm) { if (ekm.Length != SIZE_3PARTY && ekm.Length != SIZE_3STORED) return null; @@ -2056,7 +1542,7 @@ internal static byte[] decryptArray3(byte[] ekm) ekm[i] ^= xorkey[i % 4]; return shuffleArray3(ekm, PID%24); } - internal static byte[] shuffleArray3(byte[] data, uint sv) + public static byte[] shuffleArray3(byte[] data, uint sv) { byte[] sdata = new byte[data.Length]; Array.Copy(data, sdata, 32); // Copy unshuffled bytes @@ -2071,7 +1557,7 @@ internal static byte[] shuffleArray3(byte[] data, uint sv) return sdata; } - internal static byte[] encryptArray3(byte[] pkm) + public static byte[] encryptArray3(byte[] pkm) { if (pkm.Length != SIZE_3PARTY && pkm.Length != SIZE_3STORED) return null; @@ -2087,7 +1573,7 @@ internal static byte[] encryptArray3(byte[] pkm) return ekm; } - internal static ushort getG4Item(ushort g3val) + public static ushort getG4Item(ushort g3val) { ushort[] arr = { @@ -2098,7 +1584,7 @@ internal static ushort getG4Item(ushort g3val) 66,67,68,69,43,44,70,71,72,73, 74,75,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, 0xFFFF,0xFFFF,0xFFFF,45,46,47,48,49,50,51, - 52,53,0xFFFF,55,56,57,58,59,60,0xFFFF, + 52,53,0xFFFF,55,56,57,58,59,60,61, 63,64,0xFFFF,76,77,78,79,0xFFFF,0xFFFF,0xFFFF, 0xFFFF,0xFFFF,0xFFFF,80,81,82,83,84,85,0xFFFF, 0xFFFF,0xFFFF,0xFFFF,86,87,0xFFFF,88,89,90,91, @@ -2117,6 +1603,15 @@ internal static ushort getG4Item(ushort g3val) 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, 0xFFFF,0xFFFF,0xFFFF,0xFFFF,260,261,262,263,264, + + 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, + 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, + 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, + 328,329,330,331,332,333,334,335,336,337, + 338,339,340,341,342,343,344,345,346,347, + 348,349,350,351,352,353,354,355,356,357, + 358,359,360,361,362,363,364,365,366,367, + 368,369,370,371,372,373,374,375,376,377, }; if (g3val > arr.Length) return 0xFFFF; diff --git a/PKM/ShowdownSet.cs b/PKM/ShowdownSet.cs index 376791544..4cc9df962 100644 --- a/PKM/ShowdownSet.cs +++ b/PKM/ShowdownSet.cs @@ -9,11 +9,11 @@ public class ShowdownSet internal static readonly string[] StatNames = { "HP", "Atk", "Def", "SpA", "SpD", "Spe" }; public static readonly string[] types = Util.getStringList("types", "en"); public static readonly string[] forms = Util.getStringList("forms", "en"); - private static readonly string[] species = Util.getStringList("species", "en"); + private static readonly string[] species = Util.getSpeciesList("en"); private static readonly string[] items = Util.getStringList("items", "en"); private static readonly string[] natures = Util.getStringList("natures", "en"); - private static readonly string[] moves = Util.getStringList("moves", "en"); - private static readonly string[] abilities = Util.getStringList("abilities", "en"); + private static readonly string[] moves = Util.getMovesList("en"); + private static readonly string[] abilities = Util.getAbilitiesList("en"); private static readonly string[] hptypes = types.Skip(1).ToArray(); // Default Set Data @@ -207,7 +207,7 @@ public string getText() // First Line: Name, Nickname, Gender, Item string result = string.Format(species[Species] != Nickname ? "{0} ({1})" : "{1}", Nickname, - species[Species] + ((Form ?? "") != "" ? "-" + Form.Replace("Mega ", "Mega-") : "")) // Species (& Form if necessary) + species[Species] + ((Form ?? "") != "" ? "-" + Form?.Replace("Mega ", "Mega-") : "")) // Species (& Form if necessary) + Gender + (Item != 0 ? " @ " + items[Item] : "") + Environment.NewLine; // IVs diff --git a/PKX/f4-RibbMedal.Designer.cs b/PKX/f4-RibbMedal.Designer.cs deleted file mode 100644 index 451d54d9d..000000000 --- a/PKX/f4-RibbMedal.Designer.cs +++ /dev/null @@ -1,2983 +0,0 @@ -namespace PKHeX -{ - partial class RibbMedal - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RibbMedal)); - this.BTN_Save = new System.Windows.Forms.Button(); - this.BTN_All = new System.Windows.Forms.Button(); - this.BTN_None = new System.Windows.Forms.Button(); - this.BTN_Cancel = new System.Windows.Forms.Button(); - this.Tab_Medals = new System.Windows.Forms.TabPage(); - this.CHK_D5 = new System.Windows.Forms.CheckBox(); - this.CHK_D4 = new System.Windows.Forms.CheckBox(); - this.L_Distro = new System.Windows.Forms.Label(); - this.CHK_D3 = new System.Windows.Forms.CheckBox(); - this.CHK_D0 = new System.Windows.Forms.CheckBox(); - this.CHK_D1 = new System.Windows.Forms.CheckBox(); - this.CHK_D2 = new System.Windows.Forms.CheckBox(); - this.CHK_Secret = new System.Windows.Forms.CheckBox(); - this.GB_Medals1 = new System.Windows.Forms.GroupBox(); - this.CB_Bag = new System.Windows.Forms.ComboBox(); - this.L_Bag = new System.Windows.Forms.Label(); - this.NUD_BagHits = new System.Windows.Forms.NumericUpDown(); - this.L_Hits = new System.Windows.Forms.Label(); - this.L_SuperTraining = new System.Windows.Forms.Label(); - this.L_Rank3 = new System.Windows.Forms.Label(); - this.L_Rank2 = new System.Windows.Forms.Label(); - this.L_Rank1 = new System.Windows.Forms.Label(); - this.TMedal2_7 = new System.Windows.Forms.CheckBox(); - this.TMedal2_6 = new System.Windows.Forms.CheckBox(); - this.TMedal2_5 = new System.Windows.Forms.CheckBox(); - this.TMedal2_4 = new System.Windows.Forms.CheckBox(); - this.TMedal2_3 = new System.Windows.Forms.CheckBox(); - this.TMedal2_2 = new System.Windows.Forms.CheckBox(); - this.TMedal2_1 = new System.Windows.Forms.CheckBox(); - this.TMedal2_0 = new System.Windows.Forms.CheckBox(); - this.TMedal1_7 = new System.Windows.Forms.CheckBox(); - this.TMedal1_6 = new System.Windows.Forms.CheckBox(); - this.TMedal1_5 = new System.Windows.Forms.CheckBox(); - this.TMedal1_4 = new System.Windows.Forms.CheckBox(); - this.TMedal1_3 = new System.Windows.Forms.CheckBox(); - this.TMedal1_2 = new System.Windows.Forms.CheckBox(); - this.TMedal3_3 = new System.Windows.Forms.CheckBox(); - this.TMedal3_1 = new System.Windows.Forms.CheckBox(); - this.TMedal3_2 = new System.Windows.Forms.CheckBox(); - this.TMedal3_0 = new System.Windows.Forms.CheckBox(); - this.GB_Medals2 = new System.Windows.Forms.GroupBox(); - this.label11 = new System.Windows.Forms.Label(); - this.L_Rank8 = new System.Windows.Forms.Label(); - this.L_Rank7 = new System.Windows.Forms.Label(); - this.L_Rank6 = new System.Windows.Forms.Label(); - this.L_Rank5 = new System.Windows.Forms.Label(); - this.L_Rank4 = new System.Windows.Forms.Label(); - this.TMedal4_7 = new System.Windows.Forms.CheckBox(); - this.TMedal4_6 = new System.Windows.Forms.CheckBox(); - this.TMedal4_5 = new System.Windows.Forms.CheckBox(); - this.TMedal4_4 = new System.Windows.Forms.CheckBox(); - this.TMedal4_3 = new System.Windows.Forms.CheckBox(); - this.TMedal4_2 = new System.Windows.Forms.CheckBox(); - this.TMedal4_1 = new System.Windows.Forms.CheckBox(); - this.TMedal4_0 = new System.Windows.Forms.CheckBox(); - this.TMedal3_7 = new System.Windows.Forms.CheckBox(); - this.TMedal3_6 = new System.Windows.Forms.CheckBox(); - this.TMedal3_5 = new System.Windows.Forms.CheckBox(); - this.TMedal3_4 = new System.Windows.Forms.CheckBox(); - this.TMedal1_0 = new System.Windows.Forms.CheckBox(); - this.TMedal1_1 = new System.Windows.Forms.CheckBox(); - this.Tab_Extra = new System.Windows.Forms.TabPage(); - this.GB_Extra2 = new System.Windows.Forms.GroupBox(); - this.ORAS_5 = new System.Windows.Forms.CheckBox(); - this.ORAS_4 = new System.Windows.Forms.CheckBox(); - this.PB_57 = new System.Windows.Forms.PictureBox(); - this.PB_O5 = new System.Windows.Forms.PictureBox(); - this.ORAS_3 = new System.Windows.Forms.CheckBox(); - this.PB_O4 = new System.Windows.Forms.PictureBox(); - this.PB_O0 = new System.Windows.Forms.PictureBox(); - this.PB_O3 = new System.Windows.Forms.PictureBox(); - this.PB_O2 = new System.Windows.Forms.PictureBox(); - this.PB_O1 = new System.Windows.Forms.PictureBox(); - this.ORAS_2 = new System.Windows.Forms.CheckBox(); - this.ORAS_1 = new System.Windows.Forms.CheckBox(); - this.ORAS_0 = new System.Windows.Forms.CheckBox(); - this.Extra1_7 = new System.Windows.Forms.CheckBox(); - this.GB_Extra1 = new System.Windows.Forms.GroupBox(); - this.PastBattle = new System.Windows.Forms.PictureBox(); - this.PastContest = new System.Windows.Forms.PictureBox(); - this.PB_54 = new System.Windows.Forms.PictureBox(); - this.PB_50 = new System.Windows.Forms.PictureBox(); - this.PB_53 = new System.Windows.Forms.PictureBox(); - this.PB_52 = new System.Windows.Forms.PictureBox(); - this.PB_51 = new System.Windows.Forms.PictureBox(); - this.Extra1_4 = new System.Windows.Forms.CheckBox(); - this.Extra1_3 = new System.Windows.Forms.CheckBox(); - this.Extra1_2 = new System.Windows.Forms.CheckBox(); - this.Extra1_1 = new System.Windows.Forms.CheckBox(); - this.Extra1_0 = new System.Windows.Forms.CheckBox(); - this.L_PastBattle = new System.Windows.Forms.Label(); - this.TB_PastContest = new System.Windows.Forms.MaskedTextBox(); - this.L_PastContest = new System.Windows.Forms.Label(); - this.TB_PastBattle = new System.Windows.Forms.MaskedTextBox(); - this.Tab_Kalos = new System.Windows.Forms.TabPage(); - this.GB_Kalos34 = new System.Windows.Forms.GroupBox(); - this.PB_47 = new System.Windows.Forms.PictureBox(); - this.PB_46 = new System.Windows.Forms.PictureBox(); - this.PB_45 = new System.Windows.Forms.PictureBox(); - this.PB_44 = new System.Windows.Forms.PictureBox(); - this.PB_43 = new System.Windows.Forms.PictureBox(); - this.PB_42 = new System.Windows.Forms.PictureBox(); - this.PB_41 = new System.Windows.Forms.PictureBox(); - this.PB_40 = new System.Windows.Forms.PictureBox(); - this.PB_37 = new System.Windows.Forms.PictureBox(); - this.PB_36 = new System.Windows.Forms.PictureBox(); - this.PB_35 = new System.Windows.Forms.PictureBox(); - this.PB_34 = new System.Windows.Forms.PictureBox(); - this.PB_33 = new System.Windows.Forms.PictureBox(); - this.PB_32 = new System.Windows.Forms.PictureBox(); - this.PB_31 = new System.Windows.Forms.PictureBox(); - this.PB_30 = new System.Windows.Forms.PictureBox(); - this.Kalos2b_7 = new System.Windows.Forms.CheckBox(); - this.Kalos2b_6 = new System.Windows.Forms.CheckBox(); - this.Kalos2b_5 = new System.Windows.Forms.CheckBox(); - this.Kalos2b_4 = new System.Windows.Forms.CheckBox(); - this.Kalos2b_3 = new System.Windows.Forms.CheckBox(); - this.Kalos2b_2 = new System.Windows.Forms.CheckBox(); - this.Kalos2b_1 = new System.Windows.Forms.CheckBox(); - this.Kalos2b_0 = new System.Windows.Forms.CheckBox(); - this.Kalos2a_7 = new System.Windows.Forms.CheckBox(); - this.Kalos2a_6 = new System.Windows.Forms.CheckBox(); - this.Kalos2a_5 = new System.Windows.Forms.CheckBox(); - this.Kalos2a_4 = new System.Windows.Forms.CheckBox(); - this.Kalos2a_3 = new System.Windows.Forms.CheckBox(); - this.Kalos2a_2 = new System.Windows.Forms.CheckBox(); - this.Kalos2a_1 = new System.Windows.Forms.CheckBox(); - this.Kalos2a_0 = new System.Windows.Forms.CheckBox(); - this.GB_Kalos12 = new System.Windows.Forms.GroupBox(); - this.PB_27 = new System.Windows.Forms.PictureBox(); - this.PB_26 = new System.Windows.Forms.PictureBox(); - this.PB_25 = new System.Windows.Forms.PictureBox(); - this.PB_24 = new System.Windows.Forms.PictureBox(); - this.PB_23 = new System.Windows.Forms.PictureBox(); - this.PB_22 = new System.Windows.Forms.PictureBox(); - this.PB_21 = new System.Windows.Forms.PictureBox(); - this.PB_20 = new System.Windows.Forms.PictureBox(); - this.PB_17 = new System.Windows.Forms.PictureBox(); - this.PB_16 = new System.Windows.Forms.PictureBox(); - this.PB_15 = new System.Windows.Forms.PictureBox(); - this.PB_14 = new System.Windows.Forms.PictureBox(); - this.PB_13 = new System.Windows.Forms.PictureBox(); - this.PB_12 = new System.Windows.Forms.PictureBox(); - this.PB_11 = new System.Windows.Forms.PictureBox(); - this.PB_10 = new System.Windows.Forms.PictureBox(); - this.Kalos1b_7 = new System.Windows.Forms.CheckBox(); - this.Kalos1b_6 = new System.Windows.Forms.CheckBox(); - this.Kalos1b_5 = new System.Windows.Forms.CheckBox(); - this.Kalos1b_4 = new System.Windows.Forms.CheckBox(); - this.Kalos1b_3 = new System.Windows.Forms.CheckBox(); - this.Kalos1b_2 = new System.Windows.Forms.CheckBox(); - this.Kalos1b_1 = new System.Windows.Forms.CheckBox(); - this.Kalos1b_0 = new System.Windows.Forms.CheckBox(); - this.Kalos1a_7 = new System.Windows.Forms.CheckBox(); - this.Kalos1a_6 = new System.Windows.Forms.CheckBox(); - this.Kalos1a_5 = new System.Windows.Forms.CheckBox(); - this.Kalos1a_4 = new System.Windows.Forms.CheckBox(); - this.Kalos1a_3 = new System.Windows.Forms.CheckBox(); - this.Kalos1a_2 = new System.Windows.Forms.CheckBox(); - this.Kalos1a_1 = new System.Windows.Forms.CheckBox(); - this.Kalos1a_0 = new System.Windows.Forms.CheckBox(); - this.tabControl1 = new System.Windows.Forms.TabControl(); - this.Sinnoh3a_0 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3a_1 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3a_2 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3a_3 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3a_4 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3a_5 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3a_6 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3a_7 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3b_0 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3b_1 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3b_2 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3b_3 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3b_4 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3b_5 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3b_6 = new System.Windows.Forms.CheckBox(); - this.Sinnoh3b_7 = new System.Windows.Forms.CheckBox(); - this.Sinnoh4a_0 = new System.Windows.Forms.CheckBox(); - this.Sinnoh4a_1 = new System.Windows.Forms.CheckBox(); - this.Sinnoh4a_2 = new System.Windows.Forms.CheckBox(); - this.Sinnoh4a_3 = new System.Windows.Forms.CheckBox(); - this.Hoenn2a_0 = new System.Windows.Forms.CheckBox(); - this.Hoenn2a_1 = new System.Windows.Forms.CheckBox(); - this.Hoenn2a_2 = new System.Windows.Forms.CheckBox(); - this.Hoenn2a_3 = new System.Windows.Forms.CheckBox(); - this.Hoenn2a_4 = new System.Windows.Forms.CheckBox(); - this.Hoenn2a_5 = new System.Windows.Forms.CheckBox(); - this.Hoenn2a_6 = new System.Windows.Forms.CheckBox(); - this.Hoenn2a_7 = new System.Windows.Forms.CheckBox(); - this.Hoenn2b_0 = new System.Windows.Forms.CheckBox(); - this.Hoenn2b_1 = new System.Windows.Forms.CheckBox(); - this.Hoenn2b_2 = new System.Windows.Forms.CheckBox(); - this.Hoenn2b_3 = new System.Windows.Forms.CheckBox(); - this.Hoenn2b_4 = new System.Windows.Forms.CheckBox(); - this.Hoenn2b_5 = new System.Windows.Forms.CheckBox(); - this.Hoenn2b_6 = new System.Windows.Forms.CheckBox(); - this.Hoenn2b_7 = new System.Windows.Forms.CheckBox(); - this.Hoenn1a_0 = new System.Windows.Forms.CheckBox(); - this.Hoenn1a_1 = new System.Windows.Forms.CheckBox(); - this.Hoenn1a_2 = new System.Windows.Forms.CheckBox(); - this.Hoenn1a_3 = new System.Windows.Forms.CheckBox(); - this.Hoenn1a_4 = new System.Windows.Forms.CheckBox(); - this.Hoenn1a_5 = new System.Windows.Forms.CheckBox(); - this.Hoenn1a_6 = new System.Windows.Forms.CheckBox(); - this.Hoenn1a_7 = new System.Windows.Forms.CheckBox(); - this.Hoenn1b_0 = new System.Windows.Forms.CheckBox(); - this.Hoenn1b_1 = new System.Windows.Forms.CheckBox(); - this.Hoenn1b_2 = new System.Windows.Forms.CheckBox(); - this.Hoenn1b_3 = new System.Windows.Forms.CheckBox(); - this.Hoenn1b_4 = new System.Windows.Forms.CheckBox(); - this.Hoenn1b_5 = new System.Windows.Forms.CheckBox(); - this.Hoenn1b_6 = new System.Windows.Forms.CheckBox(); - this.Hoenn1b_7 = new System.Windows.Forms.CheckBox(); - this.Tab_Medals.SuspendLayout(); - this.GB_Medals1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.NUD_BagHits)).BeginInit(); - this.GB_Medals2.SuspendLayout(); - this.Tab_Extra.SuspendLayout(); - this.GB_Extra2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PB_57)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O5)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O4)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O0)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O3)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O2)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O1)).BeginInit(); - this.GB_Extra1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PastBattle)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PastContest)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_54)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_50)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_53)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_52)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_51)).BeginInit(); - this.Tab_Kalos.SuspendLayout(); - this.GB_Kalos34.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PB_47)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_46)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_45)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_44)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_43)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_42)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_41)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_40)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_37)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_36)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_35)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_34)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_33)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_32)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_31)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_30)).BeginInit(); - this.GB_Kalos12.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PB_27)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_26)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_25)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_24)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_23)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_22)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_21)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_20)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_17)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_16)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_15)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_14)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_13)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_12)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_11)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_10)).BeginInit(); - this.tabControl1.SuspendLayout(); - this.SuspendLayout(); - // - // BTN_Save - // - this.BTN_Save.Location = new System.Drawing.Point(412, 261); - this.BTN_Save.Name = "BTN_Save"; - this.BTN_Save.Size = new System.Drawing.Size(90, 23); - this.BTN_Save.TabIndex = 1; - this.BTN_Save.Text = "Save"; - this.BTN_Save.UseVisualStyleBackColor = true; - this.BTN_Save.Click += new System.EventHandler(this.B_Save_Click); - // - // BTN_All - // - this.BTN_All.Location = new System.Drawing.Point(12, 261); - this.BTN_All.Name = "BTN_All"; - this.BTN_All.Size = new System.Drawing.Size(90, 23); - this.BTN_All.TabIndex = 2; - this.BTN_All.Text = "Give All"; - this.BTN_All.UseVisualStyleBackColor = true; - this.BTN_All.Click += new System.EventHandler(this.B_AllRibbons_Click); - // - // BTN_None - // - this.BTN_None.Location = new System.Drawing.Point(108, 261); - this.BTN_None.Name = "BTN_None"; - this.BTN_None.Size = new System.Drawing.Size(90, 23); - this.BTN_None.TabIndex = 3; - this.BTN_None.Text = "Remove All"; - this.BTN_None.UseVisualStyleBackColor = true; - this.BTN_None.Click += new System.EventHandler(this.B_NoRibbons_Click); - // - // BTN_Cancel - // - this.BTN_Cancel.Location = new System.Drawing.Point(316, 261); - this.BTN_Cancel.Name = "BTN_Cancel"; - this.BTN_Cancel.Size = new System.Drawing.Size(90, 23); - this.BTN_Cancel.TabIndex = 4; - this.BTN_Cancel.Text = "Cancel"; - this.BTN_Cancel.UseVisualStyleBackColor = true; - this.BTN_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); - // - // Tab_Medals - // - this.Tab_Medals.Controls.Add(this.CHK_D5); - this.Tab_Medals.Controls.Add(this.CHK_D4); - this.Tab_Medals.Controls.Add(this.L_Distro); - this.Tab_Medals.Controls.Add(this.CHK_D3); - this.Tab_Medals.Controls.Add(this.CHK_D0); - this.Tab_Medals.Controls.Add(this.CHK_D1); - this.Tab_Medals.Controls.Add(this.CHK_D2); - this.Tab_Medals.Controls.Add(this.CHK_Secret); - this.Tab_Medals.Controls.Add(this.GB_Medals1); - this.Tab_Medals.Controls.Add(this.GB_Medals2); - this.Tab_Medals.Location = new System.Drawing.Point(4, 22); - this.Tab_Medals.Name = "Tab_Medals"; - this.Tab_Medals.Padding = new System.Windows.Forms.Padding(3); - this.Tab_Medals.Size = new System.Drawing.Size(482, 214); - this.Tab_Medals.TabIndex = 2; - this.Tab_Medals.Text = "Training Medals"; - this.Tab_Medals.UseVisualStyleBackColor = true; - // - // CHK_D5 - // - this.CHK_D5.AutoSize = true; - this.CHK_D5.Location = new System.Drawing.Point(447, 16); - this.CHK_D5.Name = "CHK_D5"; - this.CHK_D5.Size = new System.Drawing.Size(32, 17); - this.CHK_D5.TabIndex = 44; - this.CHK_D5.Text = "5"; - this.CHK_D5.UseVisualStyleBackColor = true; - // - // CHK_D4 - // - this.CHK_D4.AutoSize = true; - this.CHK_D4.Location = new System.Drawing.Point(415, 16); - this.CHK_D4.Name = "CHK_D4"; - this.CHK_D4.Size = new System.Drawing.Size(32, 17); - this.CHK_D4.TabIndex = 43; - this.CHK_D4.Text = "4"; - this.CHK_D4.UseVisualStyleBackColor = true; - // - // L_Distro - // - this.L_Distro.AutoSize = true; - this.L_Distro.Location = new System.Drawing.Point(318, 3); - this.L_Distro.Name = "L_Distro"; - this.L_Distro.Size = new System.Drawing.Size(62, 13); - this.L_Distro.TabIndex = 38; - this.L_Distro.Text = "Distribution:"; - // - // CHK_D3 - // - this.CHK_D3.AutoSize = true; - this.CHK_D3.Location = new System.Drawing.Point(382, 16); - this.CHK_D3.Name = "CHK_D3"; - this.CHK_D3.Size = new System.Drawing.Size(32, 17); - this.CHK_D3.TabIndex = 42; - this.CHK_D3.Text = "3"; - this.CHK_D3.UseVisualStyleBackColor = true; - // - // CHK_D0 - // - this.CHK_D0.AutoSize = true; - this.CHK_D0.Location = new System.Drawing.Point(382, 2); - this.CHK_D0.Name = "CHK_D0"; - this.CHK_D0.Size = new System.Drawing.Size(32, 17); - this.CHK_D0.TabIndex = 39; - this.CHK_D0.Text = "0"; - this.CHK_D0.UseVisualStyleBackColor = true; - // - // CHK_D1 - // - this.CHK_D1.AutoSize = true; - this.CHK_D1.Location = new System.Drawing.Point(415, 2); - this.CHK_D1.Name = "CHK_D1"; - this.CHK_D1.Size = new System.Drawing.Size(32, 17); - this.CHK_D1.TabIndex = 40; - this.CHK_D1.Text = "1"; - this.CHK_D1.UseVisualStyleBackColor = true; - // - // CHK_D2 - // - this.CHK_D2.AutoSize = true; - this.CHK_D2.Location = new System.Drawing.Point(447, 2); - this.CHK_D2.Name = "CHK_D2"; - this.CHK_D2.Size = new System.Drawing.Size(32, 17); - this.CHK_D2.TabIndex = 41; - this.CHK_D2.Text = "2"; - this.CHK_D2.UseVisualStyleBackColor = true; - // - // CHK_Secret - // - this.CHK_Secret.AutoSize = true; - this.CHK_Secret.Location = new System.Drawing.Point(244, 32); - this.CHK_Secret.Name = "CHK_Secret"; - this.CHK_Secret.Size = new System.Drawing.Size(140, 17); - this.CHK_Secret.TabIndex = 19; - this.CHK_Secret.Text = "Secret Training Enabled"; - this.CHK_Secret.UseVisualStyleBackColor = true; - this.CHK_Secret.CheckedChanged += new System.EventHandler(this.updateSecretSuper); - // - // GB_Medals1 - // - this.GB_Medals1.Controls.Add(this.CB_Bag); - this.GB_Medals1.Controls.Add(this.L_Bag); - this.GB_Medals1.Controls.Add(this.NUD_BagHits); - this.GB_Medals1.Controls.Add(this.L_Hits); - this.GB_Medals1.Controls.Add(this.L_SuperTraining); - this.GB_Medals1.Controls.Add(this.L_Rank3); - this.GB_Medals1.Controls.Add(this.L_Rank2); - this.GB_Medals1.Controls.Add(this.L_Rank1); - this.GB_Medals1.Controls.Add(this.TMedal2_7); - this.GB_Medals1.Controls.Add(this.TMedal2_6); - this.GB_Medals1.Controls.Add(this.TMedal2_5); - this.GB_Medals1.Controls.Add(this.TMedal2_4); - this.GB_Medals1.Controls.Add(this.TMedal2_3); - this.GB_Medals1.Controls.Add(this.TMedal2_2); - this.GB_Medals1.Controls.Add(this.TMedal2_1); - this.GB_Medals1.Controls.Add(this.TMedal2_0); - this.GB_Medals1.Controls.Add(this.TMedal1_7); - this.GB_Medals1.Controls.Add(this.TMedal1_6); - this.GB_Medals1.Controls.Add(this.TMedal1_5); - this.GB_Medals1.Controls.Add(this.TMedal1_4); - this.GB_Medals1.Controls.Add(this.TMedal1_3); - this.GB_Medals1.Controls.Add(this.TMedal1_2); - this.GB_Medals1.Controls.Add(this.TMedal3_3); - this.GB_Medals1.Controls.Add(this.TMedal3_1); - this.GB_Medals1.Controls.Add(this.TMedal3_2); - this.GB_Medals1.Controls.Add(this.TMedal3_0); - this.GB_Medals1.Location = new System.Drawing.Point(8, 3); - this.GB_Medals1.Name = "GB_Medals1"; - this.GB_Medals1.Size = new System.Drawing.Size(230, 210); - this.GB_Medals1.TabIndex = 5; - this.GB_Medals1.TabStop = false; - // - // CB_Bag - // - this.CB_Bag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.CB_Bag.FormattingEnabled = true; - this.CB_Bag.Location = new System.Drawing.Point(105, 166); - this.CB_Bag.Name = "CB_Bag"; - this.CB_Bag.Size = new System.Drawing.Size(110, 21); - this.CB_Bag.TabIndex = 23; - // - // L_Bag - // - this.L_Bag.Location = new System.Drawing.Point(-1, 169); - this.L_Bag.Name = "L_Bag"; - this.L_Bag.Size = new System.Drawing.Size(100, 13); - this.L_Bag.TabIndex = 22; - this.L_Bag.Text = "Last Used Bag:"; - this.L_Bag.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // NUD_BagHits - // - this.NUD_BagHits.Location = new System.Drawing.Point(105, 187); - this.NUD_BagHits.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.NUD_BagHits.Name = "NUD_BagHits"; - this.NUD_BagHits.Size = new System.Drawing.Size(50, 20); - this.NUD_BagHits.TabIndex = 21; - this.NUD_BagHits.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; - this.NUD_BagHits.Value = new decimal(new int[] { - 255, - 0, - 0, - 0}); - // - // L_Hits - // - this.L_Hits.Location = new System.Drawing.Point(-1, 190); - this.L_Hits.Name = "L_Hits"; - this.L_Hits.Size = new System.Drawing.Size(100, 13); - this.L_Hits.TabIndex = 20; - this.L_Hits.Text = "Hits Remaining:"; - this.L_Hits.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // L_SuperTraining - // - this.L_SuperTraining.AutoSize = true; - this.L_SuperTraining.Location = new System.Drawing.Point(59, 15); - this.L_SuperTraining.Name = "L_SuperTraining"; - this.L_SuperTraining.Size = new System.Drawing.Size(112, 13); - this.L_SuperTraining.TabIndex = 19; - this.L_SuperTraining.Text = "Normal Super Training"; - // - // L_Rank3 - // - this.L_Rank3.AutoSize = true; - this.L_Rank3.Location = new System.Drawing.Point(165, 45); - this.L_Rank3.Name = "L_Rank3"; - this.L_Rank3.Size = new System.Drawing.Size(42, 13); - this.L_Rank3.TabIndex = 18; - this.L_Rank3.Text = "Rank 3"; - // - // L_Rank2 - // - this.L_Rank2.AutoSize = true; - this.L_Rank2.Location = new System.Drawing.Point(92, 45); - this.L_Rank2.Name = "L_Rank2"; - this.L_Rank2.Size = new System.Drawing.Size(42, 13); - this.L_Rank2.TabIndex = 17; - this.L_Rank2.Text = "Rank 2"; - // - // L_Rank1 - // - this.L_Rank1.AutoSize = true; - this.L_Rank1.Location = new System.Drawing.Point(19, 45); - this.L_Rank1.Name = "L_Rank1"; - this.L_Rank1.Size = new System.Drawing.Size(42, 13); - this.L_Rank1.TabIndex = 16; - this.L_Rank1.Text = "Rank 1"; - // - // TMedal2_7 - // - this.TMedal2_7.AutoSize = true; - this.TMedal2_7.Location = new System.Drawing.Point(168, 59); - this.TMedal2_7.Name = "TMedal2_7"; - this.TMedal2_7.Size = new System.Drawing.Size(41, 17); - this.TMedal2_7.TabIndex = 13; - this.TMedal2_7.Text = "HP"; - this.TMedal2_7.UseVisualStyleBackColor = true; - // - // TMedal2_6 - // - this.TMedal2_6.AutoSize = true; - this.TMedal2_6.Location = new System.Drawing.Point(168, 110); - this.TMedal2_6.Name = "TMedal2_6"; - this.TMedal2_6.Size = new System.Drawing.Size(46, 17); - this.TMedal2_6.TabIndex = 16; - this.TMedal2_6.Text = "SpA"; - this.TMedal2_6.UseVisualStyleBackColor = true; - // - // TMedal2_5 - // - this.TMedal2_5.AutoSize = true; - this.TMedal2_5.Location = new System.Drawing.Point(95, 93); - this.TMedal2_5.Name = "TMedal2_5"; - this.TMedal2_5.Size = new System.Drawing.Size(43, 17); - this.TMedal2_5.TabIndex = 9; - this.TMedal2_5.Text = "Def"; - this.TMedal2_5.UseVisualStyleBackColor = true; - // - // TMedal2_4 - // - this.TMedal2_4.AutoSize = true; - this.TMedal2_4.Location = new System.Drawing.Point(95, 144); - this.TMedal2_4.Name = "TMedal2_4"; - this.TMedal2_4.Size = new System.Drawing.Size(45, 17); - this.TMedal2_4.TabIndex = 12; - this.TMedal2_4.Text = "Spe"; - this.TMedal2_4.UseVisualStyleBackColor = true; - // - // TMedal2_3 - // - this.TMedal2_3.AutoSize = true; - this.TMedal2_3.Location = new System.Drawing.Point(95, 127); - this.TMedal2_3.Name = "TMedal2_3"; - this.TMedal2_3.Size = new System.Drawing.Size(47, 17); - this.TMedal2_3.TabIndex = 11; - this.TMedal2_3.Text = "SpD"; - this.TMedal2_3.UseVisualStyleBackColor = true; - // - // TMedal2_2 - // - this.TMedal2_2.AutoSize = true; - this.TMedal2_2.Location = new System.Drawing.Point(95, 76); - this.TMedal2_2.Name = "TMedal2_2"; - this.TMedal2_2.Size = new System.Drawing.Size(42, 17); - this.TMedal2_2.TabIndex = 8; - this.TMedal2_2.Text = "Atk"; - this.TMedal2_2.UseVisualStyleBackColor = true; - // - // TMedal2_1 - // - this.TMedal2_1.AutoSize = true; - this.TMedal2_1.Location = new System.Drawing.Point(95, 59); - this.TMedal2_1.Name = "TMedal2_1"; - this.TMedal2_1.Size = new System.Drawing.Size(41, 17); - this.TMedal2_1.TabIndex = 7; - this.TMedal2_1.Text = "HP"; - this.TMedal2_1.UseVisualStyleBackColor = true; - // - // TMedal2_0 - // - this.TMedal2_0.AutoSize = true; - this.TMedal2_0.Location = new System.Drawing.Point(95, 110); - this.TMedal2_0.Name = "TMedal2_0"; - this.TMedal2_0.Size = new System.Drawing.Size(46, 17); - this.TMedal2_0.TabIndex = 10; - this.TMedal2_0.Text = "SpA"; - this.TMedal2_0.UseVisualStyleBackColor = true; - // - // TMedal1_7 - // - this.TMedal1_7.AutoSize = true; - this.TMedal1_7.Location = new System.Drawing.Point(22, 93); - this.TMedal1_7.Name = "TMedal1_7"; - this.TMedal1_7.Size = new System.Drawing.Size(43, 17); - this.TMedal1_7.TabIndex = 3; - this.TMedal1_7.Text = "Def"; - this.TMedal1_7.UseVisualStyleBackColor = true; - // - // TMedal1_6 - // - this.TMedal1_6.AutoSize = true; - this.TMedal1_6.Location = new System.Drawing.Point(22, 144); - this.TMedal1_6.Name = "TMedal1_6"; - this.TMedal1_6.Size = new System.Drawing.Size(45, 17); - this.TMedal1_6.TabIndex = 6; - this.TMedal1_6.Text = "Spe"; - this.TMedal1_6.UseVisualStyleBackColor = true; - // - // TMedal1_5 - // - this.TMedal1_5.AutoSize = true; - this.TMedal1_5.Location = new System.Drawing.Point(22, 127); - this.TMedal1_5.Name = "TMedal1_5"; - this.TMedal1_5.Size = new System.Drawing.Size(47, 17); - this.TMedal1_5.TabIndex = 5; - this.TMedal1_5.Text = "SpD"; - this.TMedal1_5.UseVisualStyleBackColor = true; - // - // TMedal1_4 - // - this.TMedal1_4.AutoSize = true; - this.TMedal1_4.Location = new System.Drawing.Point(22, 76); - this.TMedal1_4.Name = "TMedal1_4"; - this.TMedal1_4.Size = new System.Drawing.Size(42, 17); - this.TMedal1_4.TabIndex = 2; - this.TMedal1_4.Text = "Atk"; - this.TMedal1_4.UseVisualStyleBackColor = true; - // - // TMedal1_3 - // - this.TMedal1_3.AutoSize = true; - this.TMedal1_3.Location = new System.Drawing.Point(22, 59); - this.TMedal1_3.Name = "TMedal1_3"; - this.TMedal1_3.Size = new System.Drawing.Size(41, 17); - this.TMedal1_3.TabIndex = 1; - this.TMedal1_3.Text = "HP"; - this.TMedal1_3.UseVisualStyleBackColor = true; - // - // TMedal1_2 - // - this.TMedal1_2.AutoSize = true; - this.TMedal1_2.Location = new System.Drawing.Point(22, 110); - this.TMedal1_2.Name = "TMedal1_2"; - this.TMedal1_2.Size = new System.Drawing.Size(46, 17); - this.TMedal1_2.TabIndex = 4; - this.TMedal1_2.Text = "SpA"; - this.TMedal1_2.UseVisualStyleBackColor = true; - // - // TMedal3_3 - // - this.TMedal3_3.AutoSize = true; - this.TMedal3_3.Location = new System.Drawing.Point(168, 93); - this.TMedal3_3.Name = "TMedal3_3"; - this.TMedal3_3.Size = new System.Drawing.Size(43, 17); - this.TMedal3_3.TabIndex = 15; - this.TMedal3_3.Text = "Def"; - this.TMedal3_3.UseVisualStyleBackColor = true; - // - // TMedal3_1 - // - this.TMedal3_1.AutoSize = true; - this.TMedal3_1.Location = new System.Drawing.Point(168, 127); - this.TMedal3_1.Name = "TMedal3_1"; - this.TMedal3_1.Size = new System.Drawing.Size(47, 17); - this.TMedal3_1.TabIndex = 17; - this.TMedal3_1.Text = "SpD"; - this.TMedal3_1.UseVisualStyleBackColor = true; - // - // TMedal3_2 - // - this.TMedal3_2.AutoSize = true; - this.TMedal3_2.Location = new System.Drawing.Point(168, 144); - this.TMedal3_2.Name = "TMedal3_2"; - this.TMedal3_2.Size = new System.Drawing.Size(45, 17); - this.TMedal3_2.TabIndex = 18; - this.TMedal3_2.Text = "Spe"; - this.TMedal3_2.UseVisualStyleBackColor = true; - // - // TMedal3_0 - // - this.TMedal3_0.AutoSize = true; - this.TMedal3_0.Location = new System.Drawing.Point(168, 76); - this.TMedal3_0.Name = "TMedal3_0"; - this.TMedal3_0.Size = new System.Drawing.Size(42, 17); - this.TMedal3_0.TabIndex = 14; - this.TMedal3_0.Text = "Atk"; - this.TMedal3_0.UseVisualStyleBackColor = true; - // - // GB_Medals2 - // - this.GB_Medals2.Controls.Add(this.label11); - this.GB_Medals2.Controls.Add(this.L_Rank8); - this.GB_Medals2.Controls.Add(this.L_Rank7); - this.GB_Medals2.Controls.Add(this.L_Rank6); - this.GB_Medals2.Controls.Add(this.L_Rank5); - this.GB_Medals2.Controls.Add(this.L_Rank4); - this.GB_Medals2.Controls.Add(this.TMedal4_7); - this.GB_Medals2.Controls.Add(this.TMedal4_6); - this.GB_Medals2.Controls.Add(this.TMedal4_5); - this.GB_Medals2.Controls.Add(this.TMedal4_4); - this.GB_Medals2.Controls.Add(this.TMedal4_3); - this.GB_Medals2.Controls.Add(this.TMedal4_2); - this.GB_Medals2.Controls.Add(this.TMedal4_1); - this.GB_Medals2.Controls.Add(this.TMedal4_0); - this.GB_Medals2.Controls.Add(this.TMedal3_7); - this.GB_Medals2.Controls.Add(this.TMedal3_6); - this.GB_Medals2.Controls.Add(this.TMedal3_5); - this.GB_Medals2.Controls.Add(this.TMedal3_4); - this.GB_Medals2.Controls.Add(this.TMedal1_0); - this.GB_Medals2.Controls.Add(this.TMedal1_1); - this.GB_Medals2.Enabled = false; - this.GB_Medals2.Location = new System.Drawing.Point(244, 43); - this.GB_Medals2.Name = "GB_Medals2"; - this.GB_Medals2.Size = new System.Drawing.Size(230, 170); - this.GB_Medals2.TabIndex = 4; - this.GB_Medals2.TabStop = false; - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(167, 98); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(44, 13); - this.label11.TabIndex = 25; - this.label11.Text = "Unused"; - this.label11.Visible = false; - // - // L_Rank8 - // - this.L_Rank8.AutoSize = true; - this.L_Rank8.Location = new System.Drawing.Point(93, 98); - this.L_Rank8.Name = "L_Rank8"; - this.L_Rank8.Size = new System.Drawing.Size(42, 13); - this.L_Rank8.TabIndex = 24; - this.L_Rank8.Text = "Rank 8"; - // - // L_Rank7 - // - this.L_Rank7.AutoSize = true; - this.L_Rank7.Location = new System.Drawing.Point(19, 98); - this.L_Rank7.Name = "L_Rank7"; - this.L_Rank7.Size = new System.Drawing.Size(42, 13); - this.L_Rank7.TabIndex = 23; - this.L_Rank7.Text = "Rank 7"; - // - // L_Rank6 - // - this.L_Rank6.AutoSize = true; - this.L_Rank6.Location = new System.Drawing.Point(167, 9); - this.L_Rank6.Name = "L_Rank6"; - this.L_Rank6.Size = new System.Drawing.Size(42, 13); - this.L_Rank6.TabIndex = 22; - this.L_Rank6.Text = "Rank 6"; - // - // L_Rank5 - // - this.L_Rank5.AutoSize = true; - this.L_Rank5.Location = new System.Drawing.Point(93, 9); - this.L_Rank5.Name = "L_Rank5"; - this.L_Rank5.Size = new System.Drawing.Size(42, 13); - this.L_Rank5.TabIndex = 21; - this.L_Rank5.Text = "Rank 5"; - // - // L_Rank4 - // - this.L_Rank4.AutoSize = true; - this.L_Rank4.Location = new System.Drawing.Point(19, 9); - this.L_Rank4.Name = "L_Rank4"; - this.L_Rank4.Size = new System.Drawing.Size(42, 13); - this.L_Rank4.TabIndex = 20; - this.L_Rank4.Text = "Rank 4"; - // - // TMedal4_7 - // - this.TMedal4_7.AutoSize = true; - this.TMedal4_7.Location = new System.Drawing.Point(96, 114); - this.TMedal4_7.Name = "TMedal4_7"; - this.TMedal4_7.Size = new System.Drawing.Size(47, 17); - this.TMedal4_7.TabIndex = 31; - this.TMedal4_7.Text = "Best"; - this.TMedal4_7.UseVisualStyleBackColor = true; - // - // TMedal4_6 - // - this.TMedal4_6.AutoSize = true; - this.TMedal4_6.Location = new System.Drawing.Point(22, 150); - this.TMedal4_6.Name = "TMedal4_6"; - this.TMedal4_6.Size = new System.Drawing.Size(74, 17); - this.TMedal4_6.TabIndex = 30; - this.TMedal4_6.Text = "Hydreigon"; - this.TMedal4_6.UseVisualStyleBackColor = true; - // - // TMedal4_5 - // - this.TMedal4_5.AutoSize = true; - this.TMedal4_5.Location = new System.Drawing.Point(22, 133); - this.TMedal4_5.Name = "TMedal4_5"; - this.TMedal4_5.Size = new System.Drawing.Size(63, 17); - this.TMedal4_5.TabIndex = 29; - this.TMedal4_5.Text = "Barrage"; - this.TMedal4_5.UseVisualStyleBackColor = true; - // - // TMedal4_4 - // - this.TMedal4_4.AutoSize = true; - this.TMedal4_4.Location = new System.Drawing.Point(22, 115); - this.TMedal4_4.Name = "TMedal4_4"; - this.TMedal4_4.Size = new System.Drawing.Size(60, 17); - this.TMedal4_4.TabIndex = 28; - this.TMedal4_4.Text = "Scatter"; - this.TMedal4_4.UseVisualStyleBackColor = true; - // - // TMedal4_3 - // - this.TMedal4_3.AutoSize = true; - this.TMedal4_3.Location = new System.Drawing.Point(170, 60); - this.TMedal4_3.Name = "TMedal4_3"; - this.TMedal4_3.Size = new System.Drawing.Size(50, 17); - this.TMedal4_3.TabIndex = 27; - this.TMedal4_3.Text = "Long"; - this.TMedal4_3.UseVisualStyleBackColor = true; - // - // TMedal4_2 - // - this.TMedal4_2.AutoSize = true; - this.TMedal4_2.Location = new System.Drawing.Point(170, 43); - this.TMedal4_2.Name = "TMedal4_2"; - this.TMedal4_2.Size = new System.Drawing.Size(54, 17); - this.TMedal4_2.TabIndex = 26; - this.TMedal4_2.Text = "Quick"; - this.TMedal4_2.UseVisualStyleBackColor = true; - // - // TMedal4_1 - // - this.TMedal4_1.AutoSize = true; - this.TMedal4_1.Location = new System.Drawing.Point(170, 25); - this.TMedal4_1.Name = "TMedal4_1"; - this.TMedal4_1.Size = new System.Drawing.Size(63, 17); - this.TMedal4_1.TabIndex = 25; - this.TMedal4_1.Text = "Second"; - this.TMedal4_1.UseVisualStyleBackColor = true; - // - // TMedal4_0 - // - this.TMedal4_0.AutoSize = true; - this.TMedal4_0.Location = new System.Drawing.Point(96, 77); - this.TMedal4_0.Name = "TMedal4_0"; - this.TMedal4_0.Size = new System.Drawing.Size(60, 17); - this.TMedal4_0.TabIndex = 24; - this.TMedal4_0.Text = "Fleeing"; - this.TMedal4_0.UseVisualStyleBackColor = true; - // - // TMedal3_7 - // - this.TMedal3_7.AutoSize = true; - this.TMedal3_7.Location = new System.Drawing.Point(96, 60); - this.TMedal3_7.Name = "TMedal3_7"; - this.TMedal3_7.Size = new System.Drawing.Size(55, 17); - this.TMedal3_7.TabIndex = 23; - this.TMedal3_7.Text = "Water"; - this.TMedal3_7.UseVisualStyleBackColor = true; - // - // TMedal3_6 - // - this.TMedal3_6.AutoSize = true; - this.TMedal3_6.Location = new System.Drawing.Point(96, 42); - this.TMedal3_6.Name = "TMedal3_6"; - this.TMedal3_6.Size = new System.Drawing.Size(43, 17); - this.TMedal3_6.TabIndex = 22; - this.TMedal3_6.Text = "Fire"; - this.TMedal3_6.UseVisualStyleBackColor = true; - // - // TMedal3_5 - // - this.TMedal3_5.AutoSize = true; - this.TMedal3_5.Location = new System.Drawing.Point(96, 25); - this.TMedal3_5.Name = "TMedal3_5"; - this.TMedal3_5.Size = new System.Drawing.Size(47, 17); - this.TMedal3_5.TabIndex = 21; - this.TMedal3_5.Text = "Leaf"; - this.TMedal3_5.UseVisualStyleBackColor = true; - // - // TMedal3_4 - // - this.TMedal3_4.AutoSize = true; - this.TMedal3_4.Location = new System.Drawing.Point(22, 25); - this.TMedal3_4.Name = "TMedal3_4"; - this.TMedal3_4.Size = new System.Drawing.Size(67, 17); - this.TMedal3_4.TabIndex = 20; - this.TMedal3_4.Text = "Troubles"; - this.TMedal3_4.UseVisualStyleBackColor = true; - // - // TMedal1_0 - // - this.TMedal1_0.AutoSize = true; - this.TMedal1_0.Enabled = false; - this.TMedal1_0.Location = new System.Drawing.Point(170, 115); - this.TMedal1_0.Name = "TMedal1_0"; - this.TMedal1_0.Size = new System.Drawing.Size(44, 17); - this.TMedal1_0.TabIndex = 32; - this.TMedal1_0.Text = "1_0"; - this.TMedal1_0.UseVisualStyleBackColor = true; - this.TMedal1_0.Visible = false; - this.TMedal1_0.CheckedChanged += new System.EventHandler(this.updateUnused); - // - // TMedal1_1 - // - this.TMedal1_1.AutoSize = true; - this.TMedal1_1.Enabled = false; - this.TMedal1_1.Location = new System.Drawing.Point(170, 132); - this.TMedal1_1.Name = "TMedal1_1"; - this.TMedal1_1.Size = new System.Drawing.Size(44, 17); - this.TMedal1_1.TabIndex = 33; - this.TMedal1_1.Text = "1_1"; - this.TMedal1_1.UseVisualStyleBackColor = true; - this.TMedal1_1.Visible = false; - this.TMedal1_1.CheckedChanged += new System.EventHandler(this.updateUnused); - // - // Tab_Extra - // - this.Tab_Extra.Controls.Add(this.GB_Extra2); - this.Tab_Extra.Controls.Add(this.GB_Extra1); - this.Tab_Extra.Location = new System.Drawing.Point(4, 22); - this.Tab_Extra.Name = "Tab_Extra"; - this.Tab_Extra.Padding = new System.Windows.Forms.Padding(3); - this.Tab_Extra.Size = new System.Drawing.Size(482, 214); - this.Tab_Extra.TabIndex = 1; - this.Tab_Extra.Text = "Extra"; - this.Tab_Extra.UseVisualStyleBackColor = true; - // - // GB_Extra2 - // - this.GB_Extra2.Controls.Add(this.ORAS_5); - this.GB_Extra2.Controls.Add(this.ORAS_4); - this.GB_Extra2.Controls.Add(this.PB_57); - this.GB_Extra2.Controls.Add(this.PB_O5); - this.GB_Extra2.Controls.Add(this.ORAS_3); - this.GB_Extra2.Controls.Add(this.PB_O4); - this.GB_Extra2.Controls.Add(this.PB_O0); - this.GB_Extra2.Controls.Add(this.PB_O3); - this.GB_Extra2.Controls.Add(this.PB_O2); - this.GB_Extra2.Controls.Add(this.PB_O1); - this.GB_Extra2.Controls.Add(this.ORAS_2); - this.GB_Extra2.Controls.Add(this.ORAS_1); - this.GB_Extra2.Controls.Add(this.ORAS_0); - this.GB_Extra2.Controls.Add(this.Extra1_7); - this.GB_Extra2.Location = new System.Drawing.Point(245, 3); - this.GB_Extra2.Name = "GB_Extra2"; - this.GB_Extra2.Size = new System.Drawing.Size(230, 210); - this.GB_Extra2.TabIndex = 3; - this.GB_Extra2.TabStop = false; - this.GB_Extra2.Text = "OR/AS Exclusive"; - // - // ORAS_5 - // - this.ORAS_5.AutoSize = true; - this.ORAS_5.Location = new System.Drawing.Point(63, 109); - this.ORAS_5.Name = "ORAS_5"; - this.ORAS_5.Size = new System.Drawing.Size(114, 17); - this.ORAS_5.TabIndex = 57; - this.ORAS_5.Text = "Toughness Master"; - this.ORAS_5.UseVisualStyleBackColor = true; - this.ORAS_5.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // ORAS_4 - // - this.ORAS_4.AutoSize = true; - this.ORAS_4.Location = new System.Drawing.Point(63, 94); - this.ORAS_4.Name = "ORAS_4"; - this.ORAS_4.Size = new System.Drawing.Size(113, 17); - this.ORAS_4.TabIndex = 56; - this.ORAS_4.Text = "Cleverness Master"; - this.ORAS_4.UseVisualStyleBackColor = true; - this.ORAS_4.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // PB_57 - // - this.PB_57.Image = global::PKHeX.Properties.Resources.ribbon_40; - this.PB_57.Location = new System.Drawing.Point(13, 134); - this.PB_57.Name = "PB_57"; - this.PB_57.Size = new System.Drawing.Size(24, 24); - this.PB_57.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_57.TabIndex = 55; - this.PB_57.TabStop = false; - this.PB_57.Click += new System.EventHandler(this.clickRibbon); - // - // PB_O5 - // - this.PB_O5.Image = global::PKHeX.Properties.Resources.ribbon_46; - this.PB_O5.Location = new System.Drawing.Point(193, 134); - this.PB_O5.Name = "PB_O5"; - this.PB_O5.Size = new System.Drawing.Size(24, 24); - this.PB_O5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_O5.TabIndex = 54; - this.PB_O5.TabStop = false; - this.PB_O5.Click += new System.EventHandler(this.clickRibbon); - // - // ORAS_3 - // - this.ORAS_3.AutoSize = true; - this.ORAS_3.Location = new System.Drawing.Point(63, 79); - this.ORAS_3.Name = "ORAS_3"; - this.ORAS_3.Size = new System.Drawing.Size(105, 17); - this.ORAS_3.TabIndex = 48; - this.ORAS_3.Text = "Cuteness Master"; - this.ORAS_3.UseVisualStyleBackColor = true; - this.ORAS_3.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // PB_O4 - // - this.PB_O4.Image = global::PKHeX.Properties.Resources.ribbon_45; - this.PB_O4.Location = new System.Drawing.Point(163, 134); - this.PB_O4.Name = "PB_O4"; - this.PB_O4.Size = new System.Drawing.Size(24, 24); - this.PB_O4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_O4.TabIndex = 53; - this.PB_O4.TabStop = false; - this.PB_O4.Click += new System.EventHandler(this.clickRibbon); - // - // PB_O0 - // - this.PB_O0.Image = global::PKHeX.Properties.Resources.ribbon_41; - this.PB_O0.Location = new System.Drawing.Point(43, 134); - this.PB_O0.Name = "PB_O0"; - this.PB_O0.Size = new System.Drawing.Size(24, 24); - this.PB_O0.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_O0.TabIndex = 52; - this.PB_O0.TabStop = false; - this.PB_O0.Click += new System.EventHandler(this.clickRibbon); - // - // PB_O3 - // - this.PB_O3.Image = global::PKHeX.Properties.Resources.ribbon_44; - this.PB_O3.Location = new System.Drawing.Point(133, 134); - this.PB_O3.Name = "PB_O3"; - this.PB_O3.Size = new System.Drawing.Size(24, 24); - this.PB_O3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_O3.TabIndex = 51; - this.PB_O3.TabStop = false; - this.PB_O3.Click += new System.EventHandler(this.clickRibbon); - // - // PB_O2 - // - this.PB_O2.Image = global::PKHeX.Properties.Resources.ribbon_43; - this.PB_O2.Location = new System.Drawing.Point(103, 134); - this.PB_O2.Name = "PB_O2"; - this.PB_O2.Size = new System.Drawing.Size(24, 24); - this.PB_O2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_O2.TabIndex = 50; - this.PB_O2.TabStop = false; - this.PB_O2.Click += new System.EventHandler(this.clickRibbon); - // - // PB_O1 - // - this.PB_O1.Image = global::PKHeX.Properties.Resources.ribbon_42; - this.PB_O1.Location = new System.Drawing.Point(73, 134); - this.PB_O1.Name = "PB_O1"; - this.PB_O1.Size = new System.Drawing.Size(24, 24); - this.PB_O1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_O1.TabIndex = 49; - this.PB_O1.TabStop = false; - this.PB_O1.Click += new System.EventHandler(this.clickRibbon); - // - // ORAS_2 - // - this.ORAS_2.AutoSize = true; - this.ORAS_2.Location = new System.Drawing.Point(63, 64); - this.ORAS_2.Name = "ORAS_2"; - this.ORAS_2.Size = new System.Drawing.Size(94, 17); - this.ORAS_2.TabIndex = 47; - this.ORAS_2.Text = "Beauty Master"; - this.ORAS_2.UseVisualStyleBackColor = true; - this.ORAS_2.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // ORAS_1 - // - this.ORAS_1.AutoSize = true; - this.ORAS_1.Location = new System.Drawing.Point(63, 49); - this.ORAS_1.Name = "ORAS_1"; - this.ORAS_1.Size = new System.Drawing.Size(104, 17); - this.ORAS_1.TabIndex = 46; - this.ORAS_1.Text = "Coolness Master"; - this.ORAS_1.UseVisualStyleBackColor = true; - this.ORAS_1.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // ORAS_0 - // - this.ORAS_0.AutoSize = true; - this.ORAS_0.Location = new System.Drawing.Point(63, 34); - this.ORAS_0.Name = "ORAS_0"; - this.ORAS_0.Size = new System.Drawing.Size(84, 17); - this.ORAS_0.TabIndex = 45; - this.ORAS_0.Text = "Contest Star"; - this.ORAS_0.UseVisualStyleBackColor = true; - this.ORAS_0.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Extra1_7 - // - this.Extra1_7.AutoSize = true; - this.Extra1_7.Location = new System.Drawing.Point(63, 19); - this.Extra1_7.Name = "Extra1_7"; - this.Extra1_7.Size = new System.Drawing.Size(108, 17); - this.Extra1_7.TabIndex = 44; - this.Extra1_7.Text = "Hoenn Champion"; - this.Extra1_7.UseVisualStyleBackColor = true; - this.Extra1_7.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // GB_Extra1 - // - this.GB_Extra1.Controls.Add(this.PastBattle); - this.GB_Extra1.Controls.Add(this.PastContest); - this.GB_Extra1.Controls.Add(this.PB_54); - this.GB_Extra1.Controls.Add(this.PB_50); - this.GB_Extra1.Controls.Add(this.PB_53); - this.GB_Extra1.Controls.Add(this.PB_52); - this.GB_Extra1.Controls.Add(this.PB_51); - this.GB_Extra1.Controls.Add(this.Extra1_4); - this.GB_Extra1.Controls.Add(this.Extra1_3); - this.GB_Extra1.Controls.Add(this.Extra1_2); - this.GB_Extra1.Controls.Add(this.Extra1_1); - this.GB_Extra1.Controls.Add(this.Extra1_0); - this.GB_Extra1.Controls.Add(this.L_PastBattle); - this.GB_Extra1.Controls.Add(this.TB_PastContest); - this.GB_Extra1.Controls.Add(this.L_PastContest); - this.GB_Extra1.Controls.Add(this.TB_PastBattle); - this.GB_Extra1.Location = new System.Drawing.Point(8, 3); - this.GB_Extra1.Name = "GB_Extra1"; - this.GB_Extra1.Size = new System.Drawing.Size(230, 210); - this.GB_Extra1.TabIndex = 2; - this.GB_Extra1.TabStop = false; - this.GB_Extra1.Text = "Set 3"; - // - // PastBattle - // - this.PastBattle.Image = global::PKHeX.Properties.Resources.battlememory; - this.PastBattle.Location = new System.Drawing.Point(164, 167); - this.PastBattle.Name = "PastBattle"; - this.PastBattle.Size = new System.Drawing.Size(40, 40); - this.PastBattle.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PastBattle.TabIndex = 43; - this.PastBattle.TabStop = false; - // - // PastContest - // - this.PastContest.Image = global::PKHeX.Properties.Resources.contestmemory; - this.PastContest.Location = new System.Drawing.Point(164, 127); - this.PastContest.Name = "PastContest"; - this.PastContest.Size = new System.Drawing.Size(40, 40); - this.PastContest.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PastContest.TabIndex = 42; - this.PastContest.TabStop = false; - // - // PB_54 - // - this.PB_54.Image = global::PKHeX.Properties.Resources.worldchamp; - this.PB_54.Location = new System.Drawing.Point(163, 101); - this.PB_54.Name = "PB_54"; - this.PB_54.Size = new System.Drawing.Size(24, 24); - this.PB_54.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_54.TabIndex = 41; - this.PB_54.TabStop = false; - this.PB_54.Click += new System.EventHandler(this.clickRibbon); - // - // PB_50 - // - this.PB_50.Image = global::PKHeX.Properties.Resources.wishing; - this.PB_50.Location = new System.Drawing.Point(43, 101); - this.PB_50.Name = "PB_50"; - this.PB_50.Size = new System.Drawing.Size(24, 24); - this.PB_50.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_50.TabIndex = 40; - this.PB_50.TabStop = false; - this.PB_50.Click += new System.EventHandler(this.clickRibbon); - // - // PB_53 - // - this.PB_53.Image = global::PKHeX.Properties.Resources.nationalchamp; - this.PB_53.Location = new System.Drawing.Point(133, 101); - this.PB_53.Name = "PB_53"; - this.PB_53.Size = new System.Drawing.Size(24, 24); - this.PB_53.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_53.TabIndex = 39; - this.PB_53.TabStop = false; - this.PB_53.Click += new System.EventHandler(this.clickRibbon); - // - // PB_52 - // - this.PB_52.Image = global::PKHeX.Properties.Resources.regionalchamp; - this.PB_52.Location = new System.Drawing.Point(103, 101); - this.PB_52.Name = "PB_52"; - this.PB_52.Size = new System.Drawing.Size(24, 24); - this.PB_52.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_52.TabIndex = 38; - this.PB_52.TabStop = false; - this.PB_52.Click += new System.EventHandler(this.clickRibbon); - // - // PB_51 - // - this.PB_51.Image = global::PKHeX.Properties.Resources.battlechamp; - this.PB_51.Location = new System.Drawing.Point(73, 101); - this.PB_51.Name = "PB_51"; - this.PB_51.Size = new System.Drawing.Size(24, 24); - this.PB_51.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_51.TabIndex = 37; - this.PB_51.TabStop = false; - this.PB_51.Click += new System.EventHandler(this.clickRibbon); - // - // Extra1_4 - // - this.Extra1_4.AutoSize = true; - this.Extra1_4.Location = new System.Drawing.Point(63, 79); - this.Extra1_4.Name = "Extra1_4"; - this.Extra1_4.Size = new System.Drawing.Size(90, 17); - this.Extra1_4.TabIndex = 4; - this.Extra1_4.Text = "World Champ"; - this.Extra1_4.UseVisualStyleBackColor = true; - this.Extra1_4.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Extra1_3 - // - this.Extra1_3.AutoSize = true; - this.Extra1_3.Location = new System.Drawing.Point(63, 64); - this.Extra1_3.Name = "Extra1_3"; - this.Extra1_3.Size = new System.Drawing.Size(101, 17); - this.Extra1_3.TabIndex = 3; - this.Extra1_3.Text = "National Champ"; - this.Extra1_3.UseVisualStyleBackColor = true; - this.Extra1_3.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Extra1_2 - // - this.Extra1_2.AutoSize = true; - this.Extra1_2.Location = new System.Drawing.Point(63, 49); - this.Extra1_2.Name = "Extra1_2"; - this.Extra1_2.Size = new System.Drawing.Size(104, 17); - this.Extra1_2.TabIndex = 2; - this.Extra1_2.Text = "Regional Champ"; - this.Extra1_2.UseVisualStyleBackColor = true; - this.Extra1_2.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Extra1_1 - // - this.Extra1_1.AutoSize = true; - this.Extra1_1.Location = new System.Drawing.Point(63, 34); - this.Extra1_1.Name = "Extra1_1"; - this.Extra1_1.Size = new System.Drawing.Size(89, 17); - this.Extra1_1.TabIndex = 1; - this.Extra1_1.Text = "Battle Champ"; - this.Extra1_1.UseVisualStyleBackColor = true; - this.Extra1_1.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Extra1_0 - // - this.Extra1_0.AutoSize = true; - this.Extra1_0.Location = new System.Drawing.Point(63, 19); - this.Extra1_0.Name = "Extra1_0"; - this.Extra1_0.Size = new System.Drawing.Size(64, 17); - this.Extra1_0.TabIndex = 0; - this.Extra1_0.Text = "Wishing"; - this.Extra1_0.UseVisualStyleBackColor = true; - this.Extra1_0.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // L_PastBattle - // - this.L_PastBattle.Location = new System.Drawing.Point(0, 177); - this.L_PastBattle.Name = "L_PastBattle"; - this.L_PastBattle.Size = new System.Drawing.Size(127, 16); - this.L_PastBattle.TabIndex = 21; - this.L_PastBattle.Text = "Past Battle Ribbons:"; - this.L_PastBattle.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // TB_PastContest - // - this.TB_PastContest.Location = new System.Drawing.Point(133, 137); - this.TB_PastContest.Mask = "00"; - this.TB_PastContest.Name = "TB_PastContest"; - this.TB_PastContest.Size = new System.Drawing.Size(21, 20); - this.TB_PastContest.TabIndex = 5; - this.TB_PastContest.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.TB_PastContest.TextChanged += new System.EventHandler(this.updateMemoryRibbon); - // - // L_PastContest - // - this.L_PastContest.Location = new System.Drawing.Point(0, 137); - this.L_PastContest.Name = "L_PastContest"; - this.L_PastContest.Size = new System.Drawing.Size(127, 19); - this.L_PastContest.TabIndex = 20; - this.L_PastContest.Text = "Past Contest Ribbons:"; - this.L_PastContest.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // TB_PastBattle - // - this.TB_PastBattle.Location = new System.Drawing.Point(133, 177); - this.TB_PastBattle.Mask = "00"; - this.TB_PastBattle.Name = "TB_PastBattle"; - this.TB_PastBattle.Size = new System.Drawing.Size(21, 20); - this.TB_PastBattle.TabIndex = 6; - this.TB_PastBattle.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.TB_PastBattle.TextChanged += new System.EventHandler(this.updateMemoryRibbon); - // - // Tab_Kalos - // - this.Tab_Kalos.Controls.Add(this.GB_Kalos34); - this.Tab_Kalos.Controls.Add(this.GB_Kalos12); - this.Tab_Kalos.Location = new System.Drawing.Point(4, 22); - this.Tab_Kalos.Name = "Tab_Kalos"; - this.Tab_Kalos.Padding = new System.Windows.Forms.Padding(3); - this.Tab_Kalos.Size = new System.Drawing.Size(482, 214); - this.Tab_Kalos.TabIndex = 0; - this.Tab_Kalos.Text = "Kalos"; - this.Tab_Kalos.UseVisualStyleBackColor = true; - // - // GB_Kalos34 - // - this.GB_Kalos34.Controls.Add(this.PB_47); - this.GB_Kalos34.Controls.Add(this.PB_46); - this.GB_Kalos34.Controls.Add(this.PB_45); - this.GB_Kalos34.Controls.Add(this.PB_44); - this.GB_Kalos34.Controls.Add(this.PB_43); - this.GB_Kalos34.Controls.Add(this.PB_42); - this.GB_Kalos34.Controls.Add(this.PB_41); - this.GB_Kalos34.Controls.Add(this.PB_40); - this.GB_Kalos34.Controls.Add(this.PB_37); - this.GB_Kalos34.Controls.Add(this.PB_36); - this.GB_Kalos34.Controls.Add(this.PB_35); - this.GB_Kalos34.Controls.Add(this.PB_34); - this.GB_Kalos34.Controls.Add(this.PB_33); - this.GB_Kalos34.Controls.Add(this.PB_32); - this.GB_Kalos34.Controls.Add(this.PB_31); - this.GB_Kalos34.Controls.Add(this.PB_30); - this.GB_Kalos34.Controls.Add(this.Kalos2b_7); - this.GB_Kalos34.Controls.Add(this.Kalos2b_6); - this.GB_Kalos34.Controls.Add(this.Kalos2b_5); - this.GB_Kalos34.Controls.Add(this.Kalos2b_4); - this.GB_Kalos34.Controls.Add(this.Kalos2b_3); - this.GB_Kalos34.Controls.Add(this.Kalos2b_2); - this.GB_Kalos34.Controls.Add(this.Kalos2b_1); - this.GB_Kalos34.Controls.Add(this.Kalos2b_0); - this.GB_Kalos34.Controls.Add(this.Kalos2a_7); - this.GB_Kalos34.Controls.Add(this.Kalos2a_6); - this.GB_Kalos34.Controls.Add(this.Kalos2a_5); - this.GB_Kalos34.Controls.Add(this.Kalos2a_4); - this.GB_Kalos34.Controls.Add(this.Kalos2a_3); - this.GB_Kalos34.Controls.Add(this.Kalos2a_2); - this.GB_Kalos34.Controls.Add(this.Kalos2a_1); - this.GB_Kalos34.Controls.Add(this.Kalos2a_0); - this.GB_Kalos34.Location = new System.Drawing.Point(245, 3); - this.GB_Kalos34.Name = "GB_Kalos34"; - this.GB_Kalos34.Size = new System.Drawing.Size(230, 210); - this.GB_Kalos34.TabIndex = 2; - this.GB_Kalos34.TabStop = false; - this.GB_Kalos34.Text = "Set 2"; - // - // PB_47 - // - this.PB_47.Image = global::PKHeX.Properties.Resources.souvenir; - this.PB_47.Location = new System.Drawing.Point(198, 177); - this.PB_47.Name = "PB_47"; - this.PB_47.Size = new System.Drawing.Size(24, 24); - this.PB_47.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_47.TabIndex = 47; - this.PB_47.TabStop = false; - this.PB_47.Click += new System.EventHandler(this.clickRibbon); - // - // PB_46 - // - this.PB_46.Image = global::PKHeX.Properties.Resources.special; - this.PB_46.Location = new System.Drawing.Point(171, 177); - this.PB_46.Name = "PB_46"; - this.PB_46.Size = new System.Drawing.Size(24, 24); - this.PB_46.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_46.TabIndex = 46; - this.PB_46.TabStop = false; - this.PB_46.Click += new System.EventHandler(this.clickRibbon); - // - // PB_45 - // - this.PB_45.Image = global::PKHeX.Properties.Resources.birthday; - this.PB_45.Location = new System.Drawing.Point(144, 177); - this.PB_45.Name = "PB_45"; - this.PB_45.Size = new System.Drawing.Size(24, 24); - this.PB_45.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_45.TabIndex = 45; - this.PB_45.TabStop = false; - this.PB_45.Click += new System.EventHandler(this.clickRibbon); - // - // PB_44 - // - this.PB_44.Image = global::PKHeX.Properties.Resources._event; - this.PB_44.Location = new System.Drawing.Point(117, 177); - this.PB_44.Name = "PB_44"; - this.PB_44.Size = new System.Drawing.Size(24, 24); - this.PB_44.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_44.TabIndex = 44; - this.PB_44.TabStop = false; - this.PB_44.Click += new System.EventHandler(this.clickRibbon); - // - // PB_43 - // - this.PB_43.Image = global::PKHeX.Properties.Resources.premier; - this.PB_43.Location = new System.Drawing.Point(89, 177); - this.PB_43.Name = "PB_43"; - this.PB_43.Size = new System.Drawing.Size(24, 24); - this.PB_43.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_43.TabIndex = 43; - this.PB_43.TabStop = false; - this.PB_43.Click += new System.EventHandler(this.clickRibbon); - // - // PB_42 - // - this.PB_42.Image = global::PKHeX.Properties.Resources.classic; - this.PB_42.Location = new System.Drawing.Point(62, 177); - this.PB_42.Name = "PB_42"; - this.PB_42.Size = new System.Drawing.Size(24, 24); - this.PB_42.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_42.TabIndex = 42; - this.PB_42.TabStop = false; - this.PB_42.Click += new System.EventHandler(this.clickRibbon); - // - // PB_41 - // - this.PB_41.Image = global::PKHeX.Properties.Resources.world; - this.PB_41.Location = new System.Drawing.Point(35, 177); - this.PB_41.Name = "PB_41"; - this.PB_41.Size = new System.Drawing.Size(24, 24); - this.PB_41.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_41.TabIndex = 41; - this.PB_41.TabStop = false; - this.PB_41.Click += new System.EventHandler(this.clickRibbon); - // - // PB_40 - // - this.PB_40.Image = global::PKHeX.Properties.Resources.earth; - this.PB_40.Location = new System.Drawing.Point(8, 177); - this.PB_40.Name = "PB_40"; - this.PB_40.Size = new System.Drawing.Size(24, 24); - this.PB_40.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_40.TabIndex = 40; - this.PB_40.TabStop = false; - this.PB_40.Click += new System.EventHandler(this.clickRibbon); - // - // PB_37 - // - this.PB_37.Image = global::PKHeX.Properties.Resources.national; - this.PB_37.Location = new System.Drawing.Point(198, 147); - this.PB_37.Name = "PB_37"; - this.PB_37.Size = new System.Drawing.Size(24, 24); - this.PB_37.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_37.TabIndex = 39; - this.PB_37.TabStop = false; - this.PB_37.Click += new System.EventHandler(this.clickRibbon); - // - // PB_36 - // - this.PB_36.Image = global::PKHeX.Properties.Resources.country; - this.PB_36.Location = new System.Drawing.Point(171, 147); - this.PB_36.Name = "PB_36"; - this.PB_36.Size = new System.Drawing.Size(24, 24); - this.PB_36.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_36.TabIndex = 38; - this.PB_36.TabStop = false; - this.PB_36.Click += new System.EventHandler(this.clickRibbon); - // - // PB_35 - // - this.PB_35.Image = global::PKHeX.Properties.Resources.legend; - this.PB_35.Location = new System.Drawing.Point(144, 147); - this.PB_35.Name = "PB_35"; - this.PB_35.Size = new System.Drawing.Size(24, 24); - this.PB_35.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_35.TabIndex = 37; - this.PB_35.TabStop = false; - this.PB_35.Click += new System.EventHandler(this.clickRibbon); - // - // PB_34 - // - this.PB_34.Image = global::PKHeX.Properties.Resources.record; - this.PB_34.Location = new System.Drawing.Point(117, 147); - this.PB_34.Name = "PB_34"; - this.PB_34.Size = new System.Drawing.Size(24, 24); - this.PB_34.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_34.TabIndex = 36; - this.PB_34.TabStop = false; - this.PB_34.Click += new System.EventHandler(this.clickRibbon); - // - // PB_33 - // - this.PB_33.Image = global::PKHeX.Properties.Resources.footprint; - this.PB_33.Location = new System.Drawing.Point(89, 147); - this.PB_33.Name = "PB_33"; - this.PB_33.Size = new System.Drawing.Size(24, 24); - this.PB_33.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_33.TabIndex = 35; - this.PB_33.TabStop = false; - this.PB_33.Click += new System.EventHandler(this.clickRibbon); - // - // PB_32 - // - this.PB_32.Image = global::PKHeX.Properties.Resources.artist; - this.PB_32.Location = new System.Drawing.Point(62, 147); - this.PB_32.Name = "PB_32"; - this.PB_32.Size = new System.Drawing.Size(24, 24); - this.PB_32.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_32.TabIndex = 34; - this.PB_32.TabStop = false; - this.PB_32.Click += new System.EventHandler(this.clickRibbon); - // - // PB_31 - // - this.PB_31.Image = global::PKHeX.Properties.Resources.gorgeousroyal; - this.PB_31.Location = new System.Drawing.Point(35, 147); - this.PB_31.Name = "PB_31"; - this.PB_31.Size = new System.Drawing.Size(24, 24); - this.PB_31.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_31.TabIndex = 33; - this.PB_31.TabStop = false; - this.PB_31.Click += new System.EventHandler(this.clickRibbon); - // - // PB_30 - // - this.PB_30.Image = global::PKHeX.Properties.Resources.royal; - this.PB_30.Location = new System.Drawing.Point(8, 147); - this.PB_30.Name = "PB_30"; - this.PB_30.Size = new System.Drawing.Size(24, 24); - this.PB_30.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_30.TabIndex = 32; - this.PB_30.TabStop = false; - this.PB_30.Click += new System.EventHandler(this.clickRibbon); - // - // Kalos2b_7 - // - this.Kalos2b_7.AutoSize = true; - this.Kalos2b_7.Location = new System.Drawing.Point(124, 124); - this.Kalos2b_7.Name = "Kalos2b_7"; - this.Kalos2b_7.Size = new System.Drawing.Size(68, 17); - this.Kalos2b_7.TabIndex = 15; - this.Kalos2b_7.Text = "Souvenir"; - this.Kalos2b_7.UseVisualStyleBackColor = true; - this.Kalos2b_7.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2b_6 - // - this.Kalos2b_6.AutoSize = true; - this.Kalos2b_6.Location = new System.Drawing.Point(124, 109); - this.Kalos2b_6.Name = "Kalos2b_6"; - this.Kalos2b_6.Size = new System.Drawing.Size(61, 17); - this.Kalos2b_6.TabIndex = 14; - this.Kalos2b_6.Text = "Special"; - this.Kalos2b_6.UseVisualStyleBackColor = true; - this.Kalos2b_6.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2b_5 - // - this.Kalos2b_5.AutoSize = true; - this.Kalos2b_5.Location = new System.Drawing.Point(124, 94); - this.Kalos2b_5.Name = "Kalos2b_5"; - this.Kalos2b_5.Size = new System.Drawing.Size(64, 17); - this.Kalos2b_5.TabIndex = 13; - this.Kalos2b_5.Text = "Birthday"; - this.Kalos2b_5.UseVisualStyleBackColor = true; - this.Kalos2b_5.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2b_4 - // - this.Kalos2b_4.AutoSize = true; - this.Kalos2b_4.Location = new System.Drawing.Point(124, 79); - this.Kalos2b_4.Name = "Kalos2b_4"; - this.Kalos2b_4.Size = new System.Drawing.Size(54, 17); - this.Kalos2b_4.TabIndex = 12; - this.Kalos2b_4.Text = "Event"; - this.Kalos2b_4.UseVisualStyleBackColor = true; - this.Kalos2b_4.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2b_3 - // - this.Kalos2b_3.AutoSize = true; - this.Kalos2b_3.Location = new System.Drawing.Point(124, 64); - this.Kalos2b_3.Name = "Kalos2b_3"; - this.Kalos2b_3.Size = new System.Drawing.Size(61, 17); - this.Kalos2b_3.TabIndex = 11; - this.Kalos2b_3.Text = "Premier"; - this.Kalos2b_3.UseVisualStyleBackColor = true; - this.Kalos2b_3.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2b_2 - // - this.Kalos2b_2.AutoSize = true; - this.Kalos2b_2.Location = new System.Drawing.Point(124, 49); - this.Kalos2b_2.Name = "Kalos2b_2"; - this.Kalos2b_2.Size = new System.Drawing.Size(59, 17); - this.Kalos2b_2.TabIndex = 10; - this.Kalos2b_2.Text = "Classic"; - this.Kalos2b_2.UseVisualStyleBackColor = true; - this.Kalos2b_2.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2b_1 - // - this.Kalos2b_1.AutoSize = true; - this.Kalos2b_1.Location = new System.Drawing.Point(124, 34); - this.Kalos2b_1.Name = "Kalos2b_1"; - this.Kalos2b_1.Size = new System.Drawing.Size(54, 17); - this.Kalos2b_1.TabIndex = 9; - this.Kalos2b_1.Text = "World"; - this.Kalos2b_1.UseVisualStyleBackColor = true; - this.Kalos2b_1.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2b_0 - // - this.Kalos2b_0.AutoSize = true; - this.Kalos2b_0.Location = new System.Drawing.Point(124, 19); - this.Kalos2b_0.Name = "Kalos2b_0"; - this.Kalos2b_0.Size = new System.Drawing.Size(51, 17); - this.Kalos2b_0.TabIndex = 8; - this.Kalos2b_0.Text = "Earth"; - this.Kalos2b_0.UseVisualStyleBackColor = true; - this.Kalos2b_0.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2a_7 - // - this.Kalos2a_7.AutoSize = true; - this.Kalos2a_7.Location = new System.Drawing.Point(19, 124); - this.Kalos2a_7.Name = "Kalos2a_7"; - this.Kalos2a_7.Size = new System.Drawing.Size(65, 17); - this.Kalos2a_7.TabIndex = 7; - this.Kalos2a_7.Text = "National"; - this.Kalos2a_7.UseVisualStyleBackColor = true; - this.Kalos2a_7.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2a_6 - // - this.Kalos2a_6.AutoSize = true; - this.Kalos2a_6.Location = new System.Drawing.Point(19, 109); - this.Kalos2a_6.Name = "Kalos2a_6"; - this.Kalos2a_6.Size = new System.Drawing.Size(62, 17); - this.Kalos2a_6.TabIndex = 6; - this.Kalos2a_6.Text = "Country"; - this.Kalos2a_6.UseVisualStyleBackColor = true; - this.Kalos2a_6.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2a_5 - // - this.Kalos2a_5.AutoSize = true; - this.Kalos2a_5.Location = new System.Drawing.Point(19, 94); - this.Kalos2a_5.Name = "Kalos2a_5"; - this.Kalos2a_5.Size = new System.Drawing.Size(62, 17); - this.Kalos2a_5.TabIndex = 5; - this.Kalos2a_5.Text = "Legend"; - this.Kalos2a_5.UseVisualStyleBackColor = true; - this.Kalos2a_5.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2a_4 - // - this.Kalos2a_4.AutoSize = true; - this.Kalos2a_4.Location = new System.Drawing.Point(19, 79); - this.Kalos2a_4.Name = "Kalos2a_4"; - this.Kalos2a_4.Size = new System.Drawing.Size(61, 17); - this.Kalos2a_4.TabIndex = 4; - this.Kalos2a_4.Text = "Record"; - this.Kalos2a_4.UseVisualStyleBackColor = true; - this.Kalos2a_4.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2a_3 - // - this.Kalos2a_3.AutoSize = true; - this.Kalos2a_3.Location = new System.Drawing.Point(19, 64); - this.Kalos2a_3.Name = "Kalos2a_3"; - this.Kalos2a_3.Size = new System.Drawing.Size(67, 17); - this.Kalos2a_3.TabIndex = 3; - this.Kalos2a_3.Text = "Footprint"; - this.Kalos2a_3.UseVisualStyleBackColor = true; - this.Kalos2a_3.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2a_2 - // - this.Kalos2a_2.AutoSize = true; - this.Kalos2a_2.Location = new System.Drawing.Point(19, 49); - this.Kalos2a_2.Name = "Kalos2a_2"; - this.Kalos2a_2.Size = new System.Drawing.Size(49, 17); - this.Kalos2a_2.TabIndex = 2; - this.Kalos2a_2.Text = "Artist"; - this.Kalos2a_2.UseVisualStyleBackColor = true; - this.Kalos2a_2.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2a_1 - // - this.Kalos2a_1.AutoSize = true; - this.Kalos2a_1.Location = new System.Drawing.Point(19, 34); - this.Kalos2a_1.Name = "Kalos2a_1"; - this.Kalos2a_1.Size = new System.Drawing.Size(102, 17); - this.Kalos2a_1.TabIndex = 1; - this.Kalos2a_1.Text = "Gorgeous Royal"; - this.Kalos2a_1.UseVisualStyleBackColor = true; - this.Kalos2a_1.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos2a_0 - // - this.Kalos2a_0.AutoSize = true; - this.Kalos2a_0.Location = new System.Drawing.Point(19, 19); - this.Kalos2a_0.Name = "Kalos2a_0"; - this.Kalos2a_0.Size = new System.Drawing.Size(53, 17); - this.Kalos2a_0.TabIndex = 0; - this.Kalos2a_0.Text = "Royal"; - this.Kalos2a_0.UseVisualStyleBackColor = true; - this.Kalos2a_0.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // GB_Kalos12 - // - this.GB_Kalos12.Controls.Add(this.PB_27); - this.GB_Kalos12.Controls.Add(this.PB_26); - this.GB_Kalos12.Controls.Add(this.PB_25); - this.GB_Kalos12.Controls.Add(this.PB_24); - this.GB_Kalos12.Controls.Add(this.PB_23); - this.GB_Kalos12.Controls.Add(this.PB_22); - this.GB_Kalos12.Controls.Add(this.PB_21); - this.GB_Kalos12.Controls.Add(this.PB_20); - this.GB_Kalos12.Controls.Add(this.PB_17); - this.GB_Kalos12.Controls.Add(this.PB_16); - this.GB_Kalos12.Controls.Add(this.PB_15); - this.GB_Kalos12.Controls.Add(this.PB_14); - this.GB_Kalos12.Controls.Add(this.PB_13); - this.GB_Kalos12.Controls.Add(this.PB_12); - this.GB_Kalos12.Controls.Add(this.PB_11); - this.GB_Kalos12.Controls.Add(this.PB_10); - this.GB_Kalos12.Controls.Add(this.Kalos1b_7); - this.GB_Kalos12.Controls.Add(this.Kalos1b_6); - this.GB_Kalos12.Controls.Add(this.Kalos1b_5); - this.GB_Kalos12.Controls.Add(this.Kalos1b_4); - this.GB_Kalos12.Controls.Add(this.Kalos1b_3); - this.GB_Kalos12.Controls.Add(this.Kalos1b_2); - this.GB_Kalos12.Controls.Add(this.Kalos1b_1); - this.GB_Kalos12.Controls.Add(this.Kalos1b_0); - this.GB_Kalos12.Controls.Add(this.Kalos1a_7); - this.GB_Kalos12.Controls.Add(this.Kalos1a_6); - this.GB_Kalos12.Controls.Add(this.Kalos1a_5); - this.GB_Kalos12.Controls.Add(this.Kalos1a_4); - this.GB_Kalos12.Controls.Add(this.Kalos1a_3); - this.GB_Kalos12.Controls.Add(this.Kalos1a_2); - this.GB_Kalos12.Controls.Add(this.Kalos1a_1); - this.GB_Kalos12.Controls.Add(this.Kalos1a_0); - this.GB_Kalos12.Location = new System.Drawing.Point(8, 3); - this.GB_Kalos12.Name = "GB_Kalos12"; - this.GB_Kalos12.Size = new System.Drawing.Size(230, 210); - this.GB_Kalos12.TabIndex = 0; - this.GB_Kalos12.TabStop = false; - this.GB_Kalos12.Text = "Set 1"; - // - // PB_27 - // - this.PB_27.Image = global::PKHeX.Properties.Resources.gorgeous; - this.PB_27.Location = new System.Drawing.Point(198, 177); - this.PB_27.Name = "PB_27"; - this.PB_27.Size = new System.Drawing.Size(24, 24); - this.PB_27.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_27.TabIndex = 31; - this.PB_27.TabStop = false; - this.PB_27.Click += new System.EventHandler(this.clickRibbon); - // - // PB_26 - // - this.PB_26.Image = global::PKHeX.Properties.Resources.smile; - this.PB_26.Location = new System.Drawing.Point(171, 177); - this.PB_26.Name = "PB_26"; - this.PB_26.Size = new System.Drawing.Size(24, 24); - this.PB_26.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_26.TabIndex = 30; - this.PB_26.TabStop = false; - this.PB_26.Click += new System.EventHandler(this.clickRibbon); - // - // PB_25 - // - this.PB_25.Image = global::PKHeX.Properties.Resources.snooze; - this.PB_25.Location = new System.Drawing.Point(144, 177); - this.PB_25.Name = "PB_25"; - this.PB_25.Size = new System.Drawing.Size(24, 24); - this.PB_25.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_25.TabIndex = 29; - this.PB_25.TabStop = false; - this.PB_25.Click += new System.EventHandler(this.clickRibbon); - // - // PB_24 - // - this.PB_24.Image = global::PKHeX.Properties.Resources.relax; - this.PB_24.Location = new System.Drawing.Point(117, 177); - this.PB_24.Name = "PB_24"; - this.PB_24.Size = new System.Drawing.Size(24, 24); - this.PB_24.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_24.TabIndex = 28; - this.PB_24.TabStop = false; - this.PB_24.Click += new System.EventHandler(this.clickRibbon); - // - // PB_23 - // - this.PB_23.Image = global::PKHeX.Properties.Resources.careless; - this.PB_23.Location = new System.Drawing.Point(89, 177); - this.PB_23.Name = "PB_23"; - this.PB_23.Size = new System.Drawing.Size(24, 24); - this.PB_23.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_23.TabIndex = 27; - this.PB_23.TabStop = false; - this.PB_23.Click += new System.EventHandler(this.clickRibbon); - // - // PB_22 - // - this.PB_22.Image = global::PKHeX.Properties.Resources.downcast; - this.PB_22.Location = new System.Drawing.Point(62, 177); - this.PB_22.Name = "PB_22"; - this.PB_22.Size = new System.Drawing.Size(24, 24); - this.PB_22.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_22.TabIndex = 26; - this.PB_22.TabStop = false; - this.PB_22.Click += new System.EventHandler(this.clickRibbon); - // - // PB_21 - // - this.PB_21.Image = global::PKHeX.Properties.Resources.shock; - this.PB_21.Location = new System.Drawing.Point(35, 177); - this.PB_21.Name = "PB_21"; - this.PB_21.Size = new System.Drawing.Size(24, 24); - this.PB_21.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_21.TabIndex = 25; - this.PB_21.TabStop = false; - this.PB_21.Click += new System.EventHandler(this.clickRibbon); - // - // PB_20 - // - this.PB_20.Image = global::PKHeX.Properties.Resources.alert; - this.PB_20.Location = new System.Drawing.Point(8, 177); - this.PB_20.Name = "PB_20"; - this.PB_20.Size = new System.Drawing.Size(24, 24); - this.PB_20.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_20.TabIndex = 24; - this.PB_20.TabStop = false; - this.PB_20.Click += new System.EventHandler(this.clickRibbon); - // - // PB_17 - // - this.PB_17.Image = global::PKHeX.Properties.Resources.effort; - this.PB_17.Location = new System.Drawing.Point(198, 147); - this.PB_17.Name = "PB_17"; - this.PB_17.Size = new System.Drawing.Size(24, 24); - this.PB_17.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_17.TabIndex = 23; - this.PB_17.TabStop = false; - this.PB_17.Click += new System.EventHandler(this.clickRibbon); - // - // PB_16 - // - this.PB_16.Image = global::PKHeX.Properties.Resources.expertbattler; - this.PB_16.Location = new System.Drawing.Point(171, 147); - this.PB_16.Name = "PB_16"; - this.PB_16.Size = new System.Drawing.Size(24, 24); - this.PB_16.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_16.TabIndex = 22; - this.PB_16.TabStop = false; - this.PB_16.Click += new System.EventHandler(this.clickRibbon); - // - // PB_15 - // - this.PB_15.Image = global::PKHeX.Properties.Resources.skillfullbattler; - this.PB_15.Location = new System.Drawing.Point(144, 147); - this.PB_15.Name = "PB_15"; - this.PB_15.Size = new System.Drawing.Size(24, 24); - this.PB_15.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_15.TabIndex = 21; - this.PB_15.TabStop = false; - this.PB_15.Click += new System.EventHandler(this.clickRibbon); - // - // PB_14 - // - this.PB_14.Image = global::PKHeX.Properties.Resources.training; - this.PB_14.Location = new System.Drawing.Point(117, 147); - this.PB_14.Name = "PB_14"; - this.PB_14.Size = new System.Drawing.Size(24, 24); - this.PB_14.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_14.TabIndex = 20; - this.PB_14.TabStop = false; - this.PB_14.Click += new System.EventHandler(this.clickRibbon); - // - // PB_13 - // - this.PB_13.Image = global::PKHeX.Properties.Resources.bestfriends; - this.PB_13.Location = new System.Drawing.Point(89, 147); - this.PB_13.Name = "PB_13"; - this.PB_13.Size = new System.Drawing.Size(24, 24); - this.PB_13.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_13.TabIndex = 19; - this.PB_13.TabStop = false; - this.PB_13.Click += new System.EventHandler(this.clickRibbon); - // - // PB_12 - // - this.PB_12.Image = global::PKHeX.Properties.Resources.sinnohchamp; - this.PB_12.Location = new System.Drawing.Point(62, 147); - this.PB_12.Name = "PB_12"; - this.PB_12.Size = new System.Drawing.Size(24, 24); - this.PB_12.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_12.TabIndex = 18; - this.PB_12.TabStop = false; - this.PB_12.Click += new System.EventHandler(this.clickRibbon); - // - // PB_11 - // - this.PB_11.Image = global::PKHeX.Properties.Resources.hoennchamp; - this.PB_11.Location = new System.Drawing.Point(35, 147); - this.PB_11.Name = "PB_11"; - this.PB_11.Size = new System.Drawing.Size(24, 24); - this.PB_11.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_11.TabIndex = 17; - this.PB_11.TabStop = false; - this.PB_11.Click += new System.EventHandler(this.clickRibbon); - // - // PB_10 - // - this.PB_10.Image = global::PKHeX.Properties.Resources.kaloschamp; - this.PB_10.Location = new System.Drawing.Point(8, 147); - this.PB_10.Name = "PB_10"; - this.PB_10.Size = new System.Drawing.Size(24, 24); - this.PB_10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_10.TabIndex = 16; - this.PB_10.TabStop = false; - this.PB_10.Click += new System.EventHandler(this.clickRibbon); - // - // Kalos1b_7 - // - this.Kalos1b_7.AutoSize = true; - this.Kalos1b_7.Location = new System.Drawing.Point(124, 124); - this.Kalos1b_7.Name = "Kalos1b_7"; - this.Kalos1b_7.Size = new System.Drawing.Size(72, 17); - this.Kalos1b_7.TabIndex = 15; - this.Kalos1b_7.Text = "Gorgeous"; - this.Kalos1b_7.UseVisualStyleBackColor = true; - this.Kalos1b_7.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1b_6 - // - this.Kalos1b_6.AutoSize = true; - this.Kalos1b_6.Location = new System.Drawing.Point(124, 109); - this.Kalos1b_6.Name = "Kalos1b_6"; - this.Kalos1b_6.Size = new System.Drawing.Size(51, 17); - this.Kalos1b_6.TabIndex = 14; - this.Kalos1b_6.Text = "Smile"; - this.Kalos1b_6.UseVisualStyleBackColor = true; - this.Kalos1b_6.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1b_5 - // - this.Kalos1b_5.AutoSize = true; - this.Kalos1b_5.Location = new System.Drawing.Point(124, 94); - this.Kalos1b_5.Name = "Kalos1b_5"; - this.Kalos1b_5.Size = new System.Drawing.Size(62, 17); - this.Kalos1b_5.TabIndex = 13; - this.Kalos1b_5.Text = "Snooze"; - this.Kalos1b_5.UseVisualStyleBackColor = true; - this.Kalos1b_5.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1b_4 - // - this.Kalos1b_4.AutoSize = true; - this.Kalos1b_4.Location = new System.Drawing.Point(124, 79); - this.Kalos1b_4.Name = "Kalos1b_4"; - this.Kalos1b_4.Size = new System.Drawing.Size(53, 17); - this.Kalos1b_4.TabIndex = 12; - this.Kalos1b_4.Text = "Relax"; - this.Kalos1b_4.UseVisualStyleBackColor = true; - this.Kalos1b_4.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1b_3 - // - this.Kalos1b_3.AutoSize = true; - this.Kalos1b_3.Location = new System.Drawing.Point(124, 64); - this.Kalos1b_3.Name = "Kalos1b_3"; - this.Kalos1b_3.Size = new System.Drawing.Size(66, 17); - this.Kalos1b_3.TabIndex = 11; - this.Kalos1b_3.Text = "Careless"; - this.Kalos1b_3.UseVisualStyleBackColor = true; - this.Kalos1b_3.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1b_2 - // - this.Kalos1b_2.AutoSize = true; - this.Kalos1b_2.Location = new System.Drawing.Point(124, 49); - this.Kalos1b_2.Name = "Kalos1b_2"; - this.Kalos1b_2.Size = new System.Drawing.Size(74, 17); - this.Kalos1b_2.TabIndex = 10; - this.Kalos1b_2.Text = "Downcast"; - this.Kalos1b_2.UseVisualStyleBackColor = true; - this.Kalos1b_2.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1b_1 - // - this.Kalos1b_1.AutoSize = true; - this.Kalos1b_1.Location = new System.Drawing.Point(124, 34); - this.Kalos1b_1.Name = "Kalos1b_1"; - this.Kalos1b_1.Size = new System.Drawing.Size(57, 17); - this.Kalos1b_1.TabIndex = 9; - this.Kalos1b_1.Text = "Shock"; - this.Kalos1b_1.UseVisualStyleBackColor = true; - this.Kalos1b_1.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1b_0 - // - this.Kalos1b_0.AutoSize = true; - this.Kalos1b_0.Location = new System.Drawing.Point(124, 19); - this.Kalos1b_0.Name = "Kalos1b_0"; - this.Kalos1b_0.Size = new System.Drawing.Size(47, 17); - this.Kalos1b_0.TabIndex = 8; - this.Kalos1b_0.Text = "Alert"; - this.Kalos1b_0.UseVisualStyleBackColor = true; - this.Kalos1b_0.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1a_7 - // - this.Kalos1a_7.AutoSize = true; - this.Kalos1a_7.Location = new System.Drawing.Point(19, 124); - this.Kalos1a_7.Name = "Kalos1a_7"; - this.Kalos1a_7.Size = new System.Drawing.Size(51, 17); - this.Kalos1a_7.TabIndex = 7; - this.Kalos1a_7.Text = "Effort"; - this.Kalos1a_7.UseVisualStyleBackColor = true; - this.Kalos1a_7.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1a_6 - // - this.Kalos1a_6.AutoSize = true; - this.Kalos1a_6.Location = new System.Drawing.Point(19, 109); - this.Kalos1a_6.Name = "Kalos1a_6"; - this.Kalos1a_6.Size = new System.Drawing.Size(89, 17); - this.Kalos1a_6.TabIndex = 6; - this.Kalos1a_6.Text = "Expert Battler"; - this.Kalos1a_6.UseVisualStyleBackColor = true; - this.Kalos1a_6.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1a_5 - // - this.Kalos1a_5.AutoSize = true; - this.Kalos1a_5.Location = new System.Drawing.Point(19, 94); - this.Kalos1a_5.Name = "Kalos1a_5"; - this.Kalos1a_5.Size = new System.Drawing.Size(91, 17); - this.Kalos1a_5.TabIndex = 5; - this.Kalos1a_5.Text = "Skillfull Battler"; - this.Kalos1a_5.UseVisualStyleBackColor = true; - this.Kalos1a_5.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1a_4 - // - this.Kalos1a_4.AutoSize = true; - this.Kalos1a_4.Location = new System.Drawing.Point(19, 79); - this.Kalos1a_4.Name = "Kalos1a_4"; - this.Kalos1a_4.Size = new System.Drawing.Size(64, 17); - this.Kalos1a_4.TabIndex = 4; - this.Kalos1a_4.Text = "Training"; - this.Kalos1a_4.UseVisualStyleBackColor = true; - this.Kalos1a_4.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1a_3 - // - this.Kalos1a_3.AutoSize = true; - this.Kalos1a_3.Location = new System.Drawing.Point(19, 64); - this.Kalos1a_3.Name = "Kalos1a_3"; - this.Kalos1a_3.Size = new System.Drawing.Size(84, 17); - this.Kalos1a_3.TabIndex = 3; - this.Kalos1a_3.Text = "Best Friends"; - this.Kalos1a_3.UseVisualStyleBackColor = true; - this.Kalos1a_3.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1a_2 - // - this.Kalos1a_2.AutoSize = true; - this.Kalos1a_2.Location = new System.Drawing.Point(19, 49); - this.Kalos1a_2.Name = "Kalos1a_2"; - this.Kalos1a_2.Size = new System.Drawing.Size(95, 17); - this.Kalos1a_2.TabIndex = 2; - this.Kalos1a_2.Text = "Sinnoh Champ"; - this.Kalos1a_2.UseVisualStyleBackColor = true; - this.Kalos1a_2.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1a_1 - // - this.Kalos1a_1.AutoSize = true; - this.Kalos1a_1.Location = new System.Drawing.Point(19, 34); - this.Kalos1a_1.Name = "Kalos1a_1"; - this.Kalos1a_1.Size = new System.Drawing.Size(94, 17); - this.Kalos1a_1.TabIndex = 1; - this.Kalos1a_1.Text = "Hoenn Champ"; - this.Kalos1a_1.UseVisualStyleBackColor = true; - this.Kalos1a_1.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // Kalos1a_0 - // - this.Kalos1a_0.AutoSize = true; - this.Kalos1a_0.Location = new System.Drawing.Point(19, 19); - this.Kalos1a_0.Name = "Kalos1a_0"; - this.Kalos1a_0.Size = new System.Drawing.Size(88, 17); - this.Kalos1a_0.TabIndex = 0; - this.Kalos1a_0.Text = "Kalos Champ"; - this.Kalos1a_0.UseVisualStyleBackColor = true; - this.Kalos1a_0.CheckedChanged += new System.EventHandler(this.updateRibbon); - // - // tabControl1 - // - this.tabControl1.Controls.Add(this.Tab_Kalos); - this.tabControl1.Controls.Add(this.Tab_Extra); - this.tabControl1.Controls.Add(this.Tab_Medals); - this.tabControl1.Location = new System.Drawing.Point(12, 12); - this.tabControl1.Name = "tabControl1"; - this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(490, 240); - this.tabControl1.TabIndex = 0; - // - // Sinnoh3a_0 - // - this.Sinnoh3a_0.AutoSize = true; - this.Sinnoh3a_0.Location = new System.Drawing.Point(19, 19); - this.Sinnoh3a_0.Name = "Sinnoh3a_0"; - this.Sinnoh3a_0.Size = new System.Drawing.Size(47, 17); - this.Sinnoh3a_0.TabIndex = 0; - this.Sinnoh3a_0.Text = "Cool"; - this.Sinnoh3a_0.UseVisualStyleBackColor = true; - // - // Sinnoh3a_1 - // - this.Sinnoh3a_1.AutoSize = true; - this.Sinnoh3a_1.Location = new System.Drawing.Point(19, 42); - this.Sinnoh3a_1.Name = "Sinnoh3a_1"; - this.Sinnoh3a_1.Size = new System.Drawing.Size(76, 17); - this.Sinnoh3a_1.TabIndex = 1; - this.Sinnoh3a_1.Text = "Cool Great"; - this.Sinnoh3a_1.UseVisualStyleBackColor = true; - // - // Sinnoh3a_2 - // - this.Sinnoh3a_2.AutoSize = true; - this.Sinnoh3a_2.Location = new System.Drawing.Point(19, 65); - this.Sinnoh3a_2.Name = "Sinnoh3a_2"; - this.Sinnoh3a_2.Size = new System.Drawing.Size(72, 17); - this.Sinnoh3a_2.TabIndex = 2; - this.Sinnoh3a_2.Text = "Cool Ultra"; - this.Sinnoh3a_2.UseVisualStyleBackColor = true; - // - // Sinnoh3a_3 - // - this.Sinnoh3a_3.AutoSize = true; - this.Sinnoh3a_3.Location = new System.Drawing.Point(19, 88); - this.Sinnoh3a_3.Name = "Sinnoh3a_3"; - this.Sinnoh3a_3.Size = new System.Drawing.Size(82, 17); - this.Sinnoh3a_3.TabIndex = 3; - this.Sinnoh3a_3.Text = "Cool Master"; - this.Sinnoh3a_3.UseVisualStyleBackColor = true; - // - // Sinnoh3a_4 - // - this.Sinnoh3a_4.AutoSize = true; - this.Sinnoh3a_4.Location = new System.Drawing.Point(19, 111); - this.Sinnoh3a_4.Name = "Sinnoh3a_4"; - this.Sinnoh3a_4.Size = new System.Drawing.Size(59, 17); - this.Sinnoh3a_4.TabIndex = 4; - this.Sinnoh3a_4.Text = "Beauty"; - this.Sinnoh3a_4.UseVisualStyleBackColor = true; - // - // Sinnoh3a_5 - // - this.Sinnoh3a_5.AutoSize = true; - this.Sinnoh3a_5.Location = new System.Drawing.Point(19, 134); - this.Sinnoh3a_5.Name = "Sinnoh3a_5"; - this.Sinnoh3a_5.Size = new System.Drawing.Size(88, 17); - this.Sinnoh3a_5.TabIndex = 5; - this.Sinnoh3a_5.Text = "Beauty Great"; - this.Sinnoh3a_5.UseVisualStyleBackColor = true; - // - // Sinnoh3a_6 - // - this.Sinnoh3a_6.AutoSize = true; - this.Sinnoh3a_6.Location = new System.Drawing.Point(19, 157); - this.Sinnoh3a_6.Name = "Sinnoh3a_6"; - this.Sinnoh3a_6.Size = new System.Drawing.Size(84, 17); - this.Sinnoh3a_6.TabIndex = 6; - this.Sinnoh3a_6.Text = "Beauty Ultra"; - this.Sinnoh3a_6.UseVisualStyleBackColor = true; - // - // Sinnoh3a_7 - // - this.Sinnoh3a_7.AutoSize = true; - this.Sinnoh3a_7.Location = new System.Drawing.Point(19, 180); - this.Sinnoh3a_7.Name = "Sinnoh3a_7"; - this.Sinnoh3a_7.Size = new System.Drawing.Size(94, 17); - this.Sinnoh3a_7.TabIndex = 7; - this.Sinnoh3a_7.Text = "Beauty Master"; - this.Sinnoh3a_7.UseVisualStyleBackColor = true; - // - // Sinnoh3b_0 - // - this.Sinnoh3b_0.AutoSize = true; - this.Sinnoh3b_0.Location = new System.Drawing.Point(124, 19); - this.Sinnoh3b_0.Name = "Sinnoh3b_0"; - this.Sinnoh3b_0.Size = new System.Drawing.Size(48, 17); - this.Sinnoh3b_0.TabIndex = 8; - this.Sinnoh3b_0.Text = "Cute"; - this.Sinnoh3b_0.UseVisualStyleBackColor = true; - // - // Sinnoh3b_1 - // - this.Sinnoh3b_1.AutoSize = true; - this.Sinnoh3b_1.Location = new System.Drawing.Point(124, 42); - this.Sinnoh3b_1.Name = "Sinnoh3b_1"; - this.Sinnoh3b_1.Size = new System.Drawing.Size(77, 17); - this.Sinnoh3b_1.TabIndex = 9; - this.Sinnoh3b_1.Text = "Cute Great"; - this.Sinnoh3b_1.UseVisualStyleBackColor = true; - // - // Sinnoh3b_2 - // - this.Sinnoh3b_2.AutoSize = true; - this.Sinnoh3b_2.Location = new System.Drawing.Point(124, 65); - this.Sinnoh3b_2.Name = "Sinnoh3b_2"; - this.Sinnoh3b_2.Size = new System.Drawing.Size(73, 17); - this.Sinnoh3b_2.TabIndex = 10; - this.Sinnoh3b_2.Text = "Cute Ultra"; - this.Sinnoh3b_2.UseVisualStyleBackColor = true; - // - // Sinnoh3b_3 - // - this.Sinnoh3b_3.AutoSize = true; - this.Sinnoh3b_3.Location = new System.Drawing.Point(124, 88); - this.Sinnoh3b_3.Name = "Sinnoh3b_3"; - this.Sinnoh3b_3.Size = new System.Drawing.Size(83, 17); - this.Sinnoh3b_3.TabIndex = 11; - this.Sinnoh3b_3.Text = "Cute Master"; - this.Sinnoh3b_3.UseVisualStyleBackColor = true; - // - // Sinnoh3b_4 - // - this.Sinnoh3b_4.AutoSize = true; - this.Sinnoh3b_4.Location = new System.Drawing.Point(124, 111); - this.Sinnoh3b_4.Name = "Sinnoh3b_4"; - this.Sinnoh3b_4.Size = new System.Drawing.Size(53, 17); - this.Sinnoh3b_4.TabIndex = 12; - this.Sinnoh3b_4.Text = "Smart"; - this.Sinnoh3b_4.UseVisualStyleBackColor = true; - // - // Sinnoh3b_5 - // - this.Sinnoh3b_5.AutoSize = true; - this.Sinnoh3b_5.Location = new System.Drawing.Point(124, 134); - this.Sinnoh3b_5.Name = "Sinnoh3b_5"; - this.Sinnoh3b_5.Size = new System.Drawing.Size(82, 17); - this.Sinnoh3b_5.TabIndex = 13; - this.Sinnoh3b_5.Text = "Smart Great"; - this.Sinnoh3b_5.UseVisualStyleBackColor = true; - // - // Sinnoh3b_6 - // - this.Sinnoh3b_6.AutoSize = true; - this.Sinnoh3b_6.Location = new System.Drawing.Point(124, 157); - this.Sinnoh3b_6.Name = "Sinnoh3b_6"; - this.Sinnoh3b_6.Size = new System.Drawing.Size(78, 17); - this.Sinnoh3b_6.TabIndex = 14; - this.Sinnoh3b_6.Text = "Smart Ultra"; - this.Sinnoh3b_6.UseVisualStyleBackColor = true; - // - // Sinnoh3b_7 - // - this.Sinnoh3b_7.AutoSize = true; - this.Sinnoh3b_7.Location = new System.Drawing.Point(124, 180); - this.Sinnoh3b_7.Name = "Sinnoh3b_7"; - this.Sinnoh3b_7.Size = new System.Drawing.Size(88, 17); - this.Sinnoh3b_7.TabIndex = 15; - this.Sinnoh3b_7.Text = "Smart Master"; - this.Sinnoh3b_7.UseVisualStyleBackColor = true; - // - // Sinnoh4a_0 - // - this.Sinnoh4a_0.AutoSize = true; - this.Sinnoh4a_0.Location = new System.Drawing.Point(19, 19); - this.Sinnoh4a_0.Name = "Sinnoh4a_0"; - this.Sinnoh4a_0.Size = new System.Drawing.Size(57, 17); - this.Sinnoh4a_0.TabIndex = 0; - this.Sinnoh4a_0.Text = "Tough"; - this.Sinnoh4a_0.UseVisualStyleBackColor = true; - // - // Sinnoh4a_1 - // - this.Sinnoh4a_1.AutoSize = true; - this.Sinnoh4a_1.Location = new System.Drawing.Point(19, 42); - this.Sinnoh4a_1.Name = "Sinnoh4a_1"; - this.Sinnoh4a_1.Size = new System.Drawing.Size(86, 17); - this.Sinnoh4a_1.TabIndex = 1; - this.Sinnoh4a_1.Text = "Tough Great"; - this.Sinnoh4a_1.UseVisualStyleBackColor = true; - // - // Sinnoh4a_2 - // - this.Sinnoh4a_2.AutoSize = true; - this.Sinnoh4a_2.Location = new System.Drawing.Point(19, 65); - this.Sinnoh4a_2.Name = "Sinnoh4a_2"; - this.Sinnoh4a_2.Size = new System.Drawing.Size(82, 17); - this.Sinnoh4a_2.TabIndex = 2; - this.Sinnoh4a_2.Text = "Tough Ultra"; - this.Sinnoh4a_2.UseVisualStyleBackColor = true; - // - // Sinnoh4a_3 - // - this.Sinnoh4a_3.AutoSize = true; - this.Sinnoh4a_3.Location = new System.Drawing.Point(19, 88); - this.Sinnoh4a_3.Name = "Sinnoh4a_3"; - this.Sinnoh4a_3.Size = new System.Drawing.Size(92, 17); - this.Sinnoh4a_3.TabIndex = 3; - this.Sinnoh4a_3.Text = "Tough Master"; - this.Sinnoh4a_3.UseVisualStyleBackColor = true; - // - // Hoenn2a_0 - // - this.Hoenn2a_0.AutoSize = true; - this.Hoenn2a_0.Location = new System.Drawing.Point(19, 19); - this.Hoenn2a_0.Name = "Hoenn2a_0"; - this.Hoenn2a_0.Size = new System.Drawing.Size(57, 17); - this.Hoenn2a_0.TabIndex = 0; - this.Hoenn2a_0.Text = "Tough"; - this.Hoenn2a_0.UseVisualStyleBackColor = true; - // - // Hoenn2a_1 - // - this.Hoenn2a_1.AutoSize = true; - this.Hoenn2a_1.Location = new System.Drawing.Point(19, 42); - this.Hoenn2a_1.Name = "Hoenn2a_1"; - this.Hoenn2a_1.Size = new System.Drawing.Size(88, 17); - this.Hoenn2a_1.TabIndex = 1; - this.Hoenn2a_1.Text = "Tough Super"; - this.Hoenn2a_1.UseVisualStyleBackColor = true; - // - // Hoenn2a_2 - // - this.Hoenn2a_2.AutoSize = true; - this.Hoenn2a_2.Location = new System.Drawing.Point(19, 65); - this.Hoenn2a_2.Name = "Hoenn2a_2"; - this.Hoenn2a_2.Size = new System.Drawing.Size(88, 17); - this.Hoenn2a_2.TabIndex = 2; - this.Hoenn2a_2.Text = "Tough Hyper"; - this.Hoenn2a_2.UseVisualStyleBackColor = true; - // - // Hoenn2a_3 - // - this.Hoenn2a_3.AutoSize = true; - this.Hoenn2a_3.Location = new System.Drawing.Point(19, 88); - this.Hoenn2a_3.Name = "Hoenn2a_3"; - this.Hoenn2a_3.Size = new System.Drawing.Size(92, 17); - this.Hoenn2a_3.TabIndex = 3; - this.Hoenn2a_3.Text = "Tough Master"; - this.Hoenn2a_3.UseVisualStyleBackColor = true; - // - // Hoenn2a_4 - // - this.Hoenn2a_4.AutoSize = true; - this.Hoenn2a_4.Location = new System.Drawing.Point(19, 111); - this.Hoenn2a_4.Name = "Hoenn2a_4"; - this.Hoenn2a_4.Size = new System.Drawing.Size(73, 17); - this.Hoenn2a_4.TabIndex = 4; - this.Hoenn2a_4.Text = "Champion"; - this.Hoenn2a_4.UseVisualStyleBackColor = true; - // - // Hoenn2a_5 - // - this.Hoenn2a_5.AutoSize = true; - this.Hoenn2a_5.Location = new System.Drawing.Point(19, 134); - this.Hoenn2a_5.Name = "Hoenn2a_5"; - this.Hoenn2a_5.Size = new System.Drawing.Size(65, 17); - this.Hoenn2a_5.TabIndex = 5; - this.Hoenn2a_5.Text = "Winning"; - this.Hoenn2a_5.UseVisualStyleBackColor = true; - // - // Hoenn2a_6 - // - this.Hoenn2a_6.AutoSize = true; - this.Hoenn2a_6.Location = new System.Drawing.Point(19, 157); - this.Hoenn2a_6.Name = "Hoenn2a_6"; - this.Hoenn2a_6.Size = new System.Drawing.Size(58, 17); - this.Hoenn2a_6.TabIndex = 6; - this.Hoenn2a_6.Text = "Victory"; - this.Hoenn2a_6.UseVisualStyleBackColor = true; - // - // Hoenn2a_7 - // - this.Hoenn2a_7.AutoSize = true; - this.Hoenn2a_7.Location = new System.Drawing.Point(19, 180); - this.Hoenn2a_7.Name = "Hoenn2a_7"; - this.Hoenn2a_7.Size = new System.Drawing.Size(49, 17); - this.Hoenn2a_7.TabIndex = 7; - this.Hoenn2a_7.Text = "Artist"; - this.Hoenn2a_7.UseVisualStyleBackColor = true; - // - // Hoenn2b_0 - // - this.Hoenn2b_0.AutoSize = true; - this.Hoenn2b_0.Location = new System.Drawing.Point(124, 19); - this.Hoenn2b_0.Name = "Hoenn2b_0"; - this.Hoenn2b_0.Size = new System.Drawing.Size(51, 17); - this.Hoenn2b_0.TabIndex = 8; - this.Hoenn2b_0.Text = "Effort"; - this.Hoenn2b_0.UseVisualStyleBackColor = true; - // - // Hoenn2b_1 - // - this.Hoenn2b_1.AutoSize = true; - this.Hoenn2b_1.Location = new System.Drawing.Point(124, 42); - this.Hoenn2b_1.Name = "Hoenn2b_1"; - this.Hoenn2b_1.Size = new System.Drawing.Size(58, 17); - this.Hoenn2b_1.TabIndex = 9; - this.Hoenn2b_1.Text = "Marine"; - this.Hoenn2b_1.UseVisualStyleBackColor = true; - // - // Hoenn2b_2 - // - this.Hoenn2b_2.AutoSize = true; - this.Hoenn2b_2.Location = new System.Drawing.Point(124, 65); - this.Hoenn2b_2.Name = "Hoenn2b_2"; - this.Hoenn2b_2.Size = new System.Drawing.Size(50, 17); - this.Hoenn2b_2.TabIndex = 10; - this.Hoenn2b_2.Text = "Land"; - this.Hoenn2b_2.UseVisualStyleBackColor = true; - // - // Hoenn2b_3 - // - this.Hoenn2b_3.AutoSize = true; - this.Hoenn2b_3.Location = new System.Drawing.Point(124, 88); - this.Hoenn2b_3.Name = "Hoenn2b_3"; - this.Hoenn2b_3.Size = new System.Drawing.Size(44, 17); - this.Hoenn2b_3.TabIndex = 11; - this.Hoenn2b_3.Text = "Sky"; - this.Hoenn2b_3.UseVisualStyleBackColor = true; - // - // Hoenn2b_4 - // - this.Hoenn2b_4.AutoSize = true; - this.Hoenn2b_4.Location = new System.Drawing.Point(124, 111); - this.Hoenn2b_4.Name = "Hoenn2b_4"; - this.Hoenn2b_4.Size = new System.Drawing.Size(62, 17); - this.Hoenn2b_4.TabIndex = 12; - this.Hoenn2b_4.Text = "Country"; - this.Hoenn2b_4.UseVisualStyleBackColor = true; - // - // Hoenn2b_5 - // - this.Hoenn2b_5.AutoSize = true; - this.Hoenn2b_5.Location = new System.Drawing.Point(124, 134); - this.Hoenn2b_5.Name = "Hoenn2b_5"; - this.Hoenn2b_5.Size = new System.Drawing.Size(65, 17); - this.Hoenn2b_5.TabIndex = 13; - this.Hoenn2b_5.Text = "National"; - this.Hoenn2b_5.UseVisualStyleBackColor = true; - // - // Hoenn2b_6 - // - this.Hoenn2b_6.AutoSize = true; - this.Hoenn2b_6.Location = new System.Drawing.Point(124, 157); - this.Hoenn2b_6.Name = "Hoenn2b_6"; - this.Hoenn2b_6.Size = new System.Drawing.Size(51, 17); - this.Hoenn2b_6.TabIndex = 14; - this.Hoenn2b_6.Text = "Earth"; - this.Hoenn2b_6.UseVisualStyleBackColor = true; - // - // Hoenn2b_7 - // - this.Hoenn2b_7.AutoSize = true; - this.Hoenn2b_7.Location = new System.Drawing.Point(124, 180); - this.Hoenn2b_7.Name = "Hoenn2b_7"; - this.Hoenn2b_7.Size = new System.Drawing.Size(54, 17); - this.Hoenn2b_7.TabIndex = 15; - this.Hoenn2b_7.Text = "World"; - this.Hoenn2b_7.UseVisualStyleBackColor = true; - // - // Hoenn1a_0 - // - this.Hoenn1a_0.AutoSize = true; - this.Hoenn1a_0.Location = new System.Drawing.Point(19, 19); - this.Hoenn1a_0.Name = "Hoenn1a_0"; - this.Hoenn1a_0.Size = new System.Drawing.Size(47, 17); - this.Hoenn1a_0.TabIndex = 0; - this.Hoenn1a_0.Text = "Cool"; - this.Hoenn1a_0.UseVisualStyleBackColor = true; - // - // Hoenn1a_1 - // - this.Hoenn1a_1.AutoSize = true; - this.Hoenn1a_1.Location = new System.Drawing.Point(19, 42); - this.Hoenn1a_1.Name = "Hoenn1a_1"; - this.Hoenn1a_1.Size = new System.Drawing.Size(76, 17); - this.Hoenn1a_1.TabIndex = 1; - this.Hoenn1a_1.Text = "Cool Great"; - this.Hoenn1a_1.UseVisualStyleBackColor = true; - // - // Hoenn1a_2 - // - this.Hoenn1a_2.AutoSize = true; - this.Hoenn1a_2.Location = new System.Drawing.Point(19, 65); - this.Hoenn1a_2.Name = "Hoenn1a_2"; - this.Hoenn1a_2.Size = new System.Drawing.Size(72, 17); - this.Hoenn1a_2.TabIndex = 2; - this.Hoenn1a_2.Text = "Cool Ultra"; - this.Hoenn1a_2.UseVisualStyleBackColor = true; - // - // Hoenn1a_3 - // - this.Hoenn1a_3.AutoSize = true; - this.Hoenn1a_3.Location = new System.Drawing.Point(19, 88); - this.Hoenn1a_3.Name = "Hoenn1a_3"; - this.Hoenn1a_3.Size = new System.Drawing.Size(82, 17); - this.Hoenn1a_3.TabIndex = 3; - this.Hoenn1a_3.Text = "Cool Master"; - this.Hoenn1a_3.UseVisualStyleBackColor = true; - // - // Hoenn1a_4 - // - this.Hoenn1a_4.AutoSize = true; - this.Hoenn1a_4.Location = new System.Drawing.Point(19, 111); - this.Hoenn1a_4.Name = "Hoenn1a_4"; - this.Hoenn1a_4.Size = new System.Drawing.Size(59, 17); - this.Hoenn1a_4.TabIndex = 4; - this.Hoenn1a_4.Text = "Beauty"; - this.Hoenn1a_4.UseVisualStyleBackColor = true; - // - // Hoenn1a_5 - // - this.Hoenn1a_5.AutoSize = true; - this.Hoenn1a_5.Location = new System.Drawing.Point(19, 134); - this.Hoenn1a_5.Name = "Hoenn1a_5"; - this.Hoenn1a_5.Size = new System.Drawing.Size(88, 17); - this.Hoenn1a_5.TabIndex = 5; - this.Hoenn1a_5.Text = "Beauty Great"; - this.Hoenn1a_5.UseVisualStyleBackColor = true; - // - // Hoenn1a_6 - // - this.Hoenn1a_6.AutoSize = true; - this.Hoenn1a_6.Location = new System.Drawing.Point(19, 157); - this.Hoenn1a_6.Name = "Hoenn1a_6"; - this.Hoenn1a_6.Size = new System.Drawing.Size(84, 17); - this.Hoenn1a_6.TabIndex = 6; - this.Hoenn1a_6.Text = "Beauty Ultra"; - this.Hoenn1a_6.UseVisualStyleBackColor = true; - // - // Hoenn1a_7 - // - this.Hoenn1a_7.AutoSize = true; - this.Hoenn1a_7.Location = new System.Drawing.Point(19, 180); - this.Hoenn1a_7.Name = "Hoenn1a_7"; - this.Hoenn1a_7.Size = new System.Drawing.Size(94, 17); - this.Hoenn1a_7.TabIndex = 7; - this.Hoenn1a_7.Text = "Beauty Master"; - this.Hoenn1a_7.UseVisualStyleBackColor = true; - // - // Hoenn1b_0 - // - this.Hoenn1b_0.AutoSize = true; - this.Hoenn1b_0.Location = new System.Drawing.Point(124, 19); - this.Hoenn1b_0.Name = "Hoenn1b_0"; - this.Hoenn1b_0.Size = new System.Drawing.Size(48, 17); - this.Hoenn1b_0.TabIndex = 8; - this.Hoenn1b_0.Text = "Cute"; - this.Hoenn1b_0.UseVisualStyleBackColor = true; - // - // Hoenn1b_1 - // - this.Hoenn1b_1.AutoSize = true; - this.Hoenn1b_1.Location = new System.Drawing.Point(124, 42); - this.Hoenn1b_1.Name = "Hoenn1b_1"; - this.Hoenn1b_1.Size = new System.Drawing.Size(77, 17); - this.Hoenn1b_1.TabIndex = 9; - this.Hoenn1b_1.Text = "Cute Great"; - this.Hoenn1b_1.UseVisualStyleBackColor = true; - // - // Hoenn1b_2 - // - this.Hoenn1b_2.AutoSize = true; - this.Hoenn1b_2.Location = new System.Drawing.Point(124, 65); - this.Hoenn1b_2.Name = "Hoenn1b_2"; - this.Hoenn1b_2.Size = new System.Drawing.Size(73, 17); - this.Hoenn1b_2.TabIndex = 10; - this.Hoenn1b_2.Text = "Cute Ultra"; - this.Hoenn1b_2.UseVisualStyleBackColor = true; - // - // Hoenn1b_3 - // - this.Hoenn1b_3.AutoSize = true; - this.Hoenn1b_3.Location = new System.Drawing.Point(124, 88); - this.Hoenn1b_3.Name = "Hoenn1b_3"; - this.Hoenn1b_3.Size = new System.Drawing.Size(83, 17); - this.Hoenn1b_3.TabIndex = 11; - this.Hoenn1b_3.Text = "Cute Master"; - this.Hoenn1b_3.UseVisualStyleBackColor = true; - // - // Hoenn1b_4 - // - this.Hoenn1b_4.AutoSize = true; - this.Hoenn1b_4.Location = new System.Drawing.Point(124, 111); - this.Hoenn1b_4.Name = "Hoenn1b_4"; - this.Hoenn1b_4.Size = new System.Drawing.Size(53, 17); - this.Hoenn1b_4.TabIndex = 12; - this.Hoenn1b_4.Text = "Smart"; - this.Hoenn1b_4.UseVisualStyleBackColor = true; - // - // Hoenn1b_5 - // - this.Hoenn1b_5.AutoSize = true; - this.Hoenn1b_5.Location = new System.Drawing.Point(124, 134); - this.Hoenn1b_5.Name = "Hoenn1b_5"; - this.Hoenn1b_5.Size = new System.Drawing.Size(82, 17); - this.Hoenn1b_5.TabIndex = 13; - this.Hoenn1b_5.Text = "Smart Great"; - this.Hoenn1b_5.UseVisualStyleBackColor = true; - // - // Hoenn1b_6 - // - this.Hoenn1b_6.AutoSize = true; - this.Hoenn1b_6.Location = new System.Drawing.Point(124, 157); - this.Hoenn1b_6.Name = "Hoenn1b_6"; - this.Hoenn1b_6.Size = new System.Drawing.Size(78, 17); - this.Hoenn1b_6.TabIndex = 14; - this.Hoenn1b_6.Text = "Smart Ultra"; - this.Hoenn1b_6.UseVisualStyleBackColor = true; - // - // Hoenn1b_7 - // - this.Hoenn1b_7.AutoSize = true; - this.Hoenn1b_7.Location = new System.Drawing.Point(124, 180); - this.Hoenn1b_7.Name = "Hoenn1b_7"; - this.Hoenn1b_7.Size = new System.Drawing.Size(88, 17); - this.Hoenn1b_7.TabIndex = 15; - this.Hoenn1b_7.Text = "Smart Master"; - this.Hoenn1b_7.UseVisualStyleBackColor = true; - // - // RibbMedal - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(514, 292); - this.Controls.Add(this.BTN_Cancel); - this.Controls.Add(this.BTN_None); - this.Controls.Add(this.BTN_All); - this.Controls.Add(this.BTN_Save); - this.Controls.Add(this.tabControl1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "RibbMedal"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Ribbon / Medal Editor"; - this.Tab_Medals.ResumeLayout(false); - this.Tab_Medals.PerformLayout(); - this.GB_Medals1.ResumeLayout(false); - this.GB_Medals1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.NUD_BagHits)).EndInit(); - this.GB_Medals2.ResumeLayout(false); - this.GB_Medals2.PerformLayout(); - this.Tab_Extra.ResumeLayout(false); - this.GB_Extra2.ResumeLayout(false); - this.GB_Extra2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PB_57)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O5)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O4)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O0)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O3)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_O1)).EndInit(); - this.GB_Extra1.ResumeLayout(false); - this.GB_Extra1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PastBattle)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PastContest)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_54)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_50)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_53)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_52)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_51)).EndInit(); - this.Tab_Kalos.ResumeLayout(false); - this.GB_Kalos34.ResumeLayout(false); - this.GB_Kalos34.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PB_47)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_46)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_45)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_44)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_43)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_42)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_41)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_40)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_37)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_36)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_35)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_34)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_33)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_32)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_31)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_30)).EndInit(); - this.GB_Kalos12.ResumeLayout(false); - this.GB_Kalos12.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PB_27)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_26)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_25)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_24)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_23)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_22)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_21)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_20)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_17)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_16)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_15)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_14)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_13)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_12)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_11)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_10)).EndInit(); - this.tabControl1.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Button BTN_Save; - private System.Windows.Forms.Button BTN_All; - private System.Windows.Forms.Button BTN_None; - private System.Windows.Forms.Button BTN_Cancel; - private System.Windows.Forms.TabPage Tab_Medals; - private System.Windows.Forms.GroupBox GB_Medals1; - private System.Windows.Forms.CheckBox TMedal2_7; - private System.Windows.Forms.CheckBox TMedal2_6; - private System.Windows.Forms.CheckBox TMedal2_5; - private System.Windows.Forms.CheckBox TMedal2_4; - private System.Windows.Forms.CheckBox TMedal2_3; - private System.Windows.Forms.CheckBox TMedal2_2; - private System.Windows.Forms.CheckBox TMedal2_1; - private System.Windows.Forms.CheckBox TMedal2_0; - private System.Windows.Forms.CheckBox TMedal1_7; - private System.Windows.Forms.CheckBox TMedal1_6; - private System.Windows.Forms.CheckBox TMedal1_5; - private System.Windows.Forms.CheckBox TMedal1_4; - private System.Windows.Forms.CheckBox TMedal1_3; - private System.Windows.Forms.CheckBox TMedal1_2; - private System.Windows.Forms.CheckBox TMedal1_1; - private System.Windows.Forms.CheckBox TMedal1_0; - private System.Windows.Forms.GroupBox GB_Medals2; - private System.Windows.Forms.CheckBox TMedal4_7; - private System.Windows.Forms.CheckBox TMedal4_6; - private System.Windows.Forms.CheckBox TMedal4_5; - private System.Windows.Forms.CheckBox TMedal4_4; - private System.Windows.Forms.CheckBox TMedal4_3; - private System.Windows.Forms.CheckBox TMedal4_2; - private System.Windows.Forms.CheckBox TMedal4_1; - private System.Windows.Forms.CheckBox TMedal4_0; - private System.Windows.Forms.CheckBox TMedal3_7; - private System.Windows.Forms.CheckBox TMedal3_6; - private System.Windows.Forms.CheckBox TMedal3_5; - private System.Windows.Forms.CheckBox TMedal3_4; - private System.Windows.Forms.CheckBox TMedal3_3; - private System.Windows.Forms.CheckBox TMedal3_2; - private System.Windows.Forms.CheckBox TMedal3_1; - private System.Windows.Forms.CheckBox TMedal3_0; - private System.Windows.Forms.TabPage Tab_Extra; - private System.Windows.Forms.GroupBox GB_Extra1; - private System.Windows.Forms.CheckBox Extra1_4; - private System.Windows.Forms.CheckBox Extra1_3; - private System.Windows.Forms.CheckBox Extra1_2; - private System.Windows.Forms.CheckBox Extra1_1; - private System.Windows.Forms.CheckBox Extra1_0; - private System.Windows.Forms.TabPage Tab_Kalos; - private System.Windows.Forms.GroupBox GB_Kalos34; - private System.Windows.Forms.CheckBox Kalos2b_7; - private System.Windows.Forms.CheckBox Kalos2b_6; - private System.Windows.Forms.CheckBox Kalos2b_5; - private System.Windows.Forms.CheckBox Kalos2b_4; - private System.Windows.Forms.CheckBox Kalos2b_3; - private System.Windows.Forms.CheckBox Kalos2b_2; - private System.Windows.Forms.CheckBox Kalos2b_1; - private System.Windows.Forms.CheckBox Kalos2b_0; - private System.Windows.Forms.CheckBox Kalos2a_7; - private System.Windows.Forms.CheckBox Kalos2a_6; - private System.Windows.Forms.CheckBox Kalos2a_5; - private System.Windows.Forms.CheckBox Kalos2a_4; - private System.Windows.Forms.CheckBox Kalos2a_3; - private System.Windows.Forms.CheckBox Kalos2a_2; - private System.Windows.Forms.CheckBox Kalos2a_1; - private System.Windows.Forms.CheckBox Kalos2a_0; - private System.Windows.Forms.GroupBox GB_Kalos12; - private System.Windows.Forms.CheckBox Kalos1b_7; - private System.Windows.Forms.CheckBox Kalos1b_6; - private System.Windows.Forms.CheckBox Kalos1b_5; - private System.Windows.Forms.CheckBox Kalos1b_4; - private System.Windows.Forms.CheckBox Kalos1b_3; - private System.Windows.Forms.CheckBox Kalos1b_2; - private System.Windows.Forms.CheckBox Kalos1b_1; - private System.Windows.Forms.CheckBox Kalos1b_0; - private System.Windows.Forms.CheckBox Kalos1a_7; - private System.Windows.Forms.CheckBox Kalos1a_6; - private System.Windows.Forms.CheckBox Kalos1a_5; - private System.Windows.Forms.CheckBox Kalos1a_4; - private System.Windows.Forms.CheckBox Kalos1a_3; - private System.Windows.Forms.CheckBox Kalos1a_2; - private System.Windows.Forms.CheckBox Kalos1a_1; - private System.Windows.Forms.CheckBox Kalos1a_0; - private System.Windows.Forms.TabControl tabControl1; - private System.Windows.Forms.CheckBox Sinnoh3a_0; - private System.Windows.Forms.CheckBox Sinnoh3a_1; - private System.Windows.Forms.CheckBox Sinnoh3a_2; - private System.Windows.Forms.CheckBox Sinnoh3a_3; - private System.Windows.Forms.CheckBox Sinnoh3a_4; - private System.Windows.Forms.CheckBox Sinnoh3a_5; - private System.Windows.Forms.CheckBox Sinnoh3a_6; - private System.Windows.Forms.CheckBox Sinnoh3a_7; - private System.Windows.Forms.CheckBox Sinnoh3b_0; - private System.Windows.Forms.CheckBox Sinnoh3b_1; - private System.Windows.Forms.CheckBox Sinnoh3b_2; - private System.Windows.Forms.CheckBox Sinnoh3b_3; - private System.Windows.Forms.CheckBox Sinnoh3b_4; - private System.Windows.Forms.CheckBox Sinnoh3b_5; - private System.Windows.Forms.CheckBox Sinnoh3b_6; - private System.Windows.Forms.CheckBox Sinnoh3b_7; - private System.Windows.Forms.CheckBox Sinnoh4a_0; - private System.Windows.Forms.CheckBox Sinnoh4a_1; - private System.Windows.Forms.CheckBox Sinnoh4a_2; - private System.Windows.Forms.CheckBox Sinnoh4a_3; - private System.Windows.Forms.CheckBox Hoenn2a_0; - private System.Windows.Forms.CheckBox Hoenn2a_1; - private System.Windows.Forms.CheckBox Hoenn2a_2; - private System.Windows.Forms.CheckBox Hoenn2a_3; - private System.Windows.Forms.CheckBox Hoenn2a_4; - private System.Windows.Forms.CheckBox Hoenn2a_5; - private System.Windows.Forms.CheckBox Hoenn2a_6; - private System.Windows.Forms.CheckBox Hoenn2a_7; - private System.Windows.Forms.CheckBox Hoenn2b_0; - private System.Windows.Forms.CheckBox Hoenn2b_1; - private System.Windows.Forms.CheckBox Hoenn2b_2; - private System.Windows.Forms.CheckBox Hoenn2b_3; - private System.Windows.Forms.CheckBox Hoenn2b_4; - private System.Windows.Forms.CheckBox Hoenn2b_5; - private System.Windows.Forms.CheckBox Hoenn2b_6; - private System.Windows.Forms.CheckBox Hoenn2b_7; - private System.Windows.Forms.CheckBox Hoenn1a_0; - private System.Windows.Forms.CheckBox Hoenn1a_1; - private System.Windows.Forms.CheckBox Hoenn1a_2; - private System.Windows.Forms.CheckBox Hoenn1a_3; - private System.Windows.Forms.CheckBox Hoenn1a_4; - private System.Windows.Forms.CheckBox Hoenn1a_5; - private System.Windows.Forms.CheckBox Hoenn1a_6; - private System.Windows.Forms.CheckBox Hoenn1a_7; - private System.Windows.Forms.CheckBox Hoenn1b_0; - private System.Windows.Forms.CheckBox Hoenn1b_1; - private System.Windows.Forms.CheckBox Hoenn1b_2; - private System.Windows.Forms.CheckBox Hoenn1b_3; - private System.Windows.Forms.CheckBox Hoenn1b_4; - private System.Windows.Forms.CheckBox Hoenn1b_5; - private System.Windows.Forms.CheckBox Hoenn1b_6; - private System.Windows.Forms.CheckBox Hoenn1b_7; - private System.Windows.Forms.GroupBox GB_Extra2; - private System.Windows.Forms.Label L_Rank3; - private System.Windows.Forms.Label L_Rank2; - private System.Windows.Forms.Label L_Rank1; - private System.Windows.Forms.Label label11; - private System.Windows.Forms.Label L_Rank8; - private System.Windows.Forms.Label L_Rank7; - private System.Windows.Forms.Label L_Rank6; - private System.Windows.Forms.Label L_Rank5; - private System.Windows.Forms.Label L_Rank4; - private System.Windows.Forms.Label L_PastBattle; - private System.Windows.Forms.Label L_PastContest; - private System.Windows.Forms.MaskedTextBox TB_PastBattle; - private System.Windows.Forms.MaskedTextBox TB_PastContest; - private System.Windows.Forms.CheckBox CHK_Secret; - private System.Windows.Forms.Label L_SuperTraining; - private System.Windows.Forms.PictureBox PB_47; - private System.Windows.Forms.PictureBox PB_46; - private System.Windows.Forms.PictureBox PB_45; - private System.Windows.Forms.PictureBox PB_44; - private System.Windows.Forms.PictureBox PB_43; - private System.Windows.Forms.PictureBox PB_42; - private System.Windows.Forms.PictureBox PB_41; - private System.Windows.Forms.PictureBox PB_40; - private System.Windows.Forms.PictureBox PB_37; - private System.Windows.Forms.PictureBox PB_36; - private System.Windows.Forms.PictureBox PB_35; - private System.Windows.Forms.PictureBox PB_34; - private System.Windows.Forms.PictureBox PB_33; - private System.Windows.Forms.PictureBox PB_32; - private System.Windows.Forms.PictureBox PB_31; - private System.Windows.Forms.PictureBox PB_30; - private System.Windows.Forms.PictureBox PB_27; - private System.Windows.Forms.PictureBox PB_26; - private System.Windows.Forms.PictureBox PB_25; - private System.Windows.Forms.PictureBox PB_24; - private System.Windows.Forms.PictureBox PB_23; - private System.Windows.Forms.PictureBox PB_22; - private System.Windows.Forms.PictureBox PB_21; - private System.Windows.Forms.PictureBox PB_20; - private System.Windows.Forms.PictureBox PB_17; - private System.Windows.Forms.PictureBox PB_16; - private System.Windows.Forms.PictureBox PB_15; - private System.Windows.Forms.PictureBox PB_14; - private System.Windows.Forms.PictureBox PB_13; - private System.Windows.Forms.PictureBox PB_12; - private System.Windows.Forms.PictureBox PB_11; - private System.Windows.Forms.PictureBox PB_10; - private System.Windows.Forms.PictureBox PastBattle; - private System.Windows.Forms.PictureBox PastContest; - private System.Windows.Forms.PictureBox PB_54; - private System.Windows.Forms.PictureBox PB_50; - private System.Windows.Forms.PictureBox PB_53; - private System.Windows.Forms.PictureBox PB_52; - private System.Windows.Forms.PictureBox PB_51; - private System.Windows.Forms.ComboBox CB_Bag; - private System.Windows.Forms.Label L_Bag; - private System.Windows.Forms.NumericUpDown NUD_BagHits; - private System.Windows.Forms.Label L_Hits; - private System.Windows.Forms.CheckBox ORAS_5; - private System.Windows.Forms.CheckBox ORAS_4; - private System.Windows.Forms.PictureBox PB_57; - private System.Windows.Forms.PictureBox PB_O5; - private System.Windows.Forms.CheckBox ORAS_3; - private System.Windows.Forms.PictureBox PB_O4; - private System.Windows.Forms.PictureBox PB_O0; - private System.Windows.Forms.PictureBox PB_O3; - private System.Windows.Forms.PictureBox PB_O2; - private System.Windows.Forms.PictureBox PB_O1; - private System.Windows.Forms.CheckBox ORAS_2; - private System.Windows.Forms.CheckBox ORAS_1; - private System.Windows.Forms.CheckBox ORAS_0; - private System.Windows.Forms.CheckBox Extra1_7; - private System.Windows.Forms.CheckBox CHK_D5; - private System.Windows.Forms.CheckBox CHK_D4; - private System.Windows.Forms.Label L_Distro; - private System.Windows.Forms.CheckBox CHK_D3; - private System.Windows.Forms.CheckBox CHK_D0; - private System.Windows.Forms.CheckBox CHK_D1; - private System.Windows.Forms.CheckBox CHK_D2; - } -} \ No newline at end of file diff --git a/PKX/f4-RibbMedal.cs b/PKX/f4-RibbMedal.cs deleted file mode 100644 index 318880dc2..000000000 --- a/PKX/f4-RibbMedal.cs +++ /dev/null @@ -1,382 +0,0 @@ -using System; -using System.Drawing; -using System.Linq; -using System.Windows.Forms; - -namespace PKHeX -{ - public partial class RibbMedal : Form - { - private readonly PictureBox[] pba; - private readonly CheckBox[] cba; - private readonly Image[] bma; - private readonly PK6 pk6; - public RibbMedal() - { - InitializeComponent(); - pk6 = Main.pkm as PK6; // cache copy - pba = new[] { - PB_10, PB_11, PB_12, PB_13, - PB_14, PB_15, PB_16, PB_17, - - PB_20, PB_21, PB_22, PB_23, - PB_24, PB_25, PB_26, PB_27, - - PB_30, PB_31, PB_32, PB_33, - PB_34, PB_35, PB_36, PB_37, - - PB_40, PB_41, PB_42, PB_43, - PB_44, PB_45, PB_46, PB_47, - - PB_50, PB_51, PB_52, PB_53, - PB_54, - - PB_57, - PB_O0, PB_O1,PB_O2,PB_O3,PB_O4,PB_O5, - }; - cba = new [] { - Kalos1a_0, Kalos1a_1, Kalos1a_2, Kalos1a_3, Kalos1a_4, Kalos1a_5, Kalos1a_6, Kalos1a_7, - Kalos1b_0, Kalos1b_1, Kalos1b_2, Kalos1b_3, Kalos1b_4, Kalos1b_5, Kalos1b_6, Kalos1b_7, - Kalos2a_0, Kalos2a_1, Kalos2a_2, Kalos2a_3, Kalos2a_4, Kalos2a_5, Kalos2a_6, Kalos2a_7, - Kalos2b_0, Kalos2b_1, Kalos2b_2, Kalos2b_3, Kalos2b_4, Kalos2b_5, Kalos2b_6, Kalos2b_7, - Extra1_0, Extra1_1, Extra1_2, Extra1_3, Extra1_4, - - Extra1_7, ORAS_0, ORAS_1, ORAS_2, ORAS_3, ORAS_4, ORAS_5, - }; - bma = new Image[pba.Length]; - for (int i = 0; i < bma.Length; i++) - { - bma[i] = pba[i].Image; - pba[i].Image = Util.ChangeOpacity(bma[i], 0.1); - } - Util.TranslateInterface(this, Main.curlanguage); - - // Set up Training Bag Data - CB_Bag.Items.Clear(); - CB_Bag.Items.Add("---"); - for (int i = 1; i < Main.trainingbags.Length - 1; i++) - CB_Bag.Items.Add(Main.trainingbags[i]); - - getData(); - } - private void getData() - { - CHK_Secret.Checked = pk6.SecretSuperTraining; - - TMedal1_0.Checked = pk6.Unused0; - TMedal1_1.Checked = pk6.Unused1; - TMedal1_2.Checked = pk6.ST1_SPA; - TMedal1_3.Checked = pk6.ST1_HP; - TMedal1_4.Checked = pk6.ST1_ATK; - TMedal1_5.Checked = pk6.ST1_SPD; - TMedal1_6.Checked = pk6.ST1_SPE; - TMedal1_7.Checked = pk6.ST1_DEF; - - TMedal2_0.Checked = pk6.ST2_SPA; - TMedal2_1.Checked = pk6.ST2_HP; - TMedal2_2.Checked = pk6.ST2_ATK; - TMedal2_3.Checked = pk6.ST2_SPD; - TMedal2_4.Checked = pk6.ST2_SPE; - TMedal2_5.Checked = pk6.ST2_DEF; - TMedal2_6.Checked = pk6.ST3_SPA; - TMedal2_7.Checked = pk6.ST3_HP; - - TMedal3_0.Checked = pk6.ST3_ATK; - TMedal3_1.Checked = pk6.ST3_SPD; - TMedal3_2.Checked = pk6.ST3_SPE; - TMedal3_3.Checked = pk6.ST3_DEF; - TMedal3_4.Checked = pk6.ST4_1; - TMedal3_5.Checked = pk6.ST5_1; - TMedal3_6.Checked = pk6.ST5_2; - TMedal3_7.Checked = pk6.ST5_3; - - TMedal4_0.Checked = pk6.ST5_4; - TMedal4_1.Checked = pk6.ST6_1; - TMedal4_2.Checked = pk6.ST6_2; - TMedal4_3.Checked = pk6.ST6_3; - TMedal4_4.Checked = pk6.ST7_1; - TMedal4_5.Checked = pk6.ST7_2; - TMedal4_6.Checked = pk6.ST7_3; - TMedal4_7.Checked = pk6.ST8_1; - - CHK_D0.Checked = pk6.Dist1; - CHK_D1.Checked = pk6.Dist2; - CHK_D2.Checked = pk6.Dist3; - CHK_D3.Checked = pk6.Dist4; - CHK_D4.Checked = pk6.Dist5; - CHK_D5.Checked = pk6.Dist6; - - Kalos1a_0.Checked = pk6.RIB0_0; - Kalos1a_1.Checked = pk6.RIB0_1; - Kalos1a_2.Checked = pk6.RIB0_2; - Kalos1a_3.Checked = pk6.RIB0_3; - Kalos1a_4.Checked = pk6.RIB0_4; - Kalos1a_5.Checked = pk6.RIB0_5; - Kalos1a_6.Checked = pk6.RIB0_6; - Kalos1a_7.Checked = pk6.RIB0_7; - - Kalos1b_0.Checked = pk6.RIB1_0; - Kalos1b_1.Checked = pk6.RIB1_1; - Kalos1b_2.Checked = pk6.RIB1_2; - Kalos1b_3.Checked = pk6.RIB1_3; - Kalos1b_4.Checked = pk6.RIB1_4; - Kalos1b_5.Checked = pk6.RIB1_5; - Kalos1b_6.Checked = pk6.RIB1_6; - Kalos1b_7.Checked = pk6.RIB1_7; - - Kalos2a_0.Checked = pk6.RIB2_0; - Kalos2a_1.Checked = pk6.RIB2_1; - Kalos2a_2.Checked = pk6.RIB2_2; - Kalos2a_3.Checked = pk6.RIB2_3; - Kalos2a_4.Checked = pk6.RIB2_4; - Kalos2a_5.Checked = pk6.RIB2_5; - Kalos2a_6.Checked = pk6.RIB2_6; - Kalos2a_7.Checked = pk6.RIB2_7; - - Kalos2b_0.Checked = pk6.RIB3_0; - Kalos2b_1.Checked = pk6.RIB3_1; - Kalos2b_2.Checked = pk6.RIB3_2; - Kalos2b_3.Checked = pk6.RIB3_3; - Kalos2b_4.Checked = pk6.RIB3_4; - Kalos2b_5.Checked = pk6.RIB3_5; - Kalos2b_6.Checked = pk6.RIB3_6; - Kalos2b_7.Checked = pk6.RIB3_7; - - Extra1_0.Checked = pk6.RIB4_0; - Extra1_1.Checked = pk6.RIB4_1; - Extra1_2.Checked = pk6.RIB4_2; - Extra1_3.Checked = pk6.RIB4_3; - Extra1_4.Checked = pk6.RIB4_4; - - // Introduced in ORAS - Extra1_7.Checked = pk6.RIB4_7; - - ORAS_0.Checked = pk6.RIB5_0; - ORAS_1.Checked = pk6.RIB5_1; - ORAS_2.Checked = pk6.RIB5_2; - ORAS_3.Checked = pk6.RIB5_3; - ORAS_4.Checked = pk6.RIB5_4; - ORAS_5.Checked = pk6.RIB5_5; - - TB_PastContest.Text = pk6.Memory_ContestCount.ToString(); - TB_PastBattle.Text = pk6.Memory_BattleCount.ToString(); - - CB_Bag.SelectedIndex = pk6.TrainingBag; - NUD_BagHits.Value = pk6.TrainingBagHits; - } - private void setData() - { - pk6.SecretSuperTraining = CHK_Secret.Checked; - - pk6.Unused0 = TMedal1_0.Checked; - pk6.Unused1 = TMedal1_1.Checked; - pk6.ST1_SPA = TMedal1_2.Checked; - pk6.ST1_HP = TMedal1_3.Checked; - pk6.ST1_ATK = TMedal1_4.Checked; - pk6.ST1_SPD = TMedal1_5.Checked; - pk6.ST1_SPE = TMedal1_6.Checked; - pk6.ST1_DEF = TMedal1_7.Checked; - - pk6.ST2_SPA = TMedal2_0.Checked; - pk6.ST2_HP = TMedal2_1.Checked; - pk6.ST2_ATK = TMedal2_2.Checked; - pk6.ST2_SPD = TMedal2_3.Checked; - pk6.ST2_SPE = TMedal2_4.Checked; - pk6.ST2_DEF = TMedal2_5.Checked; - pk6.ST3_SPA = TMedal2_6.Checked; - pk6.ST3_HP = TMedal2_7.Checked; - - pk6.ST3_ATK = TMedal3_0.Checked; - pk6.ST3_SPD = TMedal3_1.Checked; - pk6.ST3_SPE = TMedal3_2.Checked; - pk6.ST3_DEF = TMedal3_3.Checked; - pk6.ST4_1 = TMedal3_4.Checked; - pk6.ST5_1 = TMedal3_5.Checked; - pk6.ST5_2 = TMedal3_6.Checked; - pk6.ST5_3 = TMedal3_7.Checked; - - pk6.ST5_4 = TMedal4_0.Checked; - pk6.ST6_1 = TMedal4_1.Checked; - pk6.ST6_2 = TMedal4_2.Checked; - pk6.ST6_3 = TMedal4_3.Checked; - pk6.ST7_1 = TMedal4_4.Checked; - pk6.ST7_2 = TMedal4_5.Checked; - pk6.ST7_3 = TMedal4_6.Checked; - pk6.ST8_1 = TMedal4_7.Checked; - - pk6.Dist1 = CHK_D0.Checked; - pk6.Dist2 = CHK_D1.Checked; - pk6.Dist3 = CHK_D2.Checked; - pk6.Dist4 = CHK_D3.Checked; - pk6.Dist5 = CHK_D4.Checked; - pk6.Dist6 = CHK_D5.Checked; - - pk6.RIB0_0 = Kalos1a_0.Checked; - pk6.RIB0_1 = Kalos1a_1.Checked; - pk6.RIB0_2 = Kalos1a_2.Checked; - pk6.RIB0_3 = Kalos1a_3.Checked; - pk6.RIB0_4 = Kalos1a_4.Checked; - pk6.RIB0_5 = Kalos1a_5.Checked; - pk6.RIB0_6 = Kalos1a_6.Checked; - pk6.RIB0_7 = Kalos1a_7.Checked; - - pk6.RIB1_0 = Kalos1b_0.Checked; - pk6.RIB1_1 = Kalos1b_1.Checked; - pk6.RIB1_2 = Kalos1b_2.Checked; - pk6.RIB1_3 = Kalos1b_3.Checked; - pk6.RIB1_4 = Kalos1b_4.Checked; - pk6.RIB1_5 = Kalos1b_5.Checked; - pk6.RIB1_6 = Kalos1b_6.Checked; - pk6.RIB1_7 = Kalos1b_7.Checked; - - pk6.RIB2_0 = Kalos2a_0.Checked; - pk6.RIB2_1 = Kalos2a_1.Checked; - pk6.RIB2_2 = Kalos2a_2.Checked; - pk6.RIB2_3 = Kalos2a_3.Checked; - pk6.RIB2_4 = Kalos2a_4.Checked; - pk6.RIB2_5 = Kalos2a_5.Checked; - pk6.RIB2_6 = Kalos2a_6.Checked; - pk6.RIB2_7 = Kalos2a_7.Checked; - - pk6.RIB3_0 = Kalos2b_0.Checked; - pk6.RIB3_1 = Kalos2b_1.Checked; - pk6.RIB3_2 = Kalos2b_2.Checked; - pk6.RIB3_3 = Kalos2b_3.Checked; - pk6.RIB3_4 = Kalos2b_4.Checked; - pk6.RIB3_5 = Kalos2b_5.Checked; - pk6.RIB3_6 = Kalos2b_6.Checked; - pk6.RIB3_7 = Kalos2b_7.Checked; - - pk6.RIB4_0 = Extra1_0.Checked; - pk6.RIB4_1 = Extra1_1.Checked; - pk6.RIB4_2 = Extra1_2.Checked; - pk6.RIB4_3 = Extra1_3.Checked; - pk6.RIB4_4 = Extra1_4.Checked; - - // Introduced in ORAS - pk6.RIB4_7 = Extra1_7.Checked; - - pk6.RIB5_0 = ORAS_0.Checked; - pk6.RIB5_1 = ORAS_1.Checked; - pk6.RIB5_2 = ORAS_2.Checked; - pk6.RIB5_3 = ORAS_3.Checked; - pk6.RIB5_4 = ORAS_4.Checked; - pk6.RIB5_5 = ORAS_5.Checked; - - pk6.Memory_ContestCount = Util.ToInt32(TB_PastContest.Text); - pk6.Memory_BattleCount = Util.ToInt32(TB_PastBattle.Text); - - pk6.TrainingBag = CB_Bag.SelectedIndex; - pk6.TrainingBagHits = (int)NUD_BagHits.Value; - } - private void buttonFlag(bool b) - { - if (tabControl1.SelectedTab == Tab_Kalos) - { - // Kalos - foreach (var chk in cba.Skip(0).Take(32)) - chk.Checked = b; - } - else if (tabControl1.SelectedTab == Tab_Extra) - { - // Extra - foreach (var chk in cba.Skip(32)) - chk.Checked = b; - - if (Main.pkm.Version >= 0x10) return; // No Memory Ribbons for Pokémon from Generation 4+ - TB_PastContest.Text = (b ? 40 : 0).ToString(); - TB_PastBattle.Text = (b ? 8 : 0).ToString(); - } - else if (tabControl1.SelectedTab == Tab_Medals) - { - // Medals - if (CHK_Secret.Checked) - { - CheckBox[] ck2 = { - TMedal3_4, - TMedal3_5, TMedal3_6, TMedal3_7, TMedal4_0, - TMedal4_1, TMedal4_2, TMedal4_3, - TMedal4_4, TMedal4_5, TMedal4_6, - TMedal4_7 - }; - foreach (var chk in ck2) chk.Checked = b; - } - CheckBox[] ck = { - // TMedal1_0, TMedal1_1, - TMedal1_2, TMedal1_3, TMedal1_4, TMedal1_5, TMedal1_6, TMedal1_7, - TMedal2_0, TMedal2_1, TMedal2_2, TMedal2_3, TMedal2_4, TMedal2_5, - TMedal2_6, TMedal2_7, TMedal3_0, TMedal3_1, TMedal3_2, TMedal3_3, - CHK_Secret - }; - foreach (var chk in ck) chk.Checked = b; - foreach (CheckBox chk in new[] { CHK_D0, CHK_D1, CHK_D2, CHK_D3, CHK_D4, CHK_D5 }) chk.Checked = b; - } - } - - private void B_Save_Click(object sender, EventArgs e) - { - setData(); - Main.pkm = pk6; // set back - Close(); - } - private void B_Cancel_Click(object sender, EventArgs e) - { - Close(); - } - private void B_AllRibbons_Click(object sender, EventArgs e) - { - buttonFlag(true); - } - private void B_NoRibbons_Click(object sender, EventArgs e) - { - buttonFlag(false); - } - - private void updateSecretSuper(object sender, EventArgs e) - { - GB_Medals2.Enabled = CHK_Secret.Checked; - if (CHK_Secret.Checked) return; - - CheckBox[] ck = { - TMedal3_4, TMedal3_5, TMedal3_6, TMedal3_7, - TMedal4_0, TMedal4_1, TMedal4_2, TMedal4_3, - TMedal4_4, TMedal4_5, TMedal4_6, TMedal4_7 - }; - foreach (var chk in ck) chk.Checked = false; - } - private void updateUnused(object sender, EventArgs e) - { - // Futureproofing: If either of the unused bitflags are 1 (true), - // we'll display them to alert the user. - TMedal1_0.Visible = TMedal1_0.Checked; - TMedal1_1.Visible = TMedal1_1.Checked; - } - private void updateRibbon(object sender, EventArgs e) - { - int index = Array.IndexOf(cba, sender); - pba[index].Image = Util.ChangeOpacity(bma[index], (cba[index].Checked ? 1 : 0) * 0.9 + 0.1); - } - private void updateMemoryRibbon(object sender, EventArgs e) - { - if ((sender as MaskedTextBox).Text.Length == 0) { (sender as MaskedTextBox).Text = "0"; return; } - if (sender as MaskedTextBox == TB_PastContest) - { - var val = Util.ToInt32(TB_PastContest.Text); - if (val > 40) { TB_PastContest.Text = 40.ToString(); return; } - PastContest.Image = Util.ChangeOpacity(val < 40 ? Properties.Resources.contestmemory : Properties.Resources.contestmemory2, - (val != 0 ? 1 : 0) * 0.9 + 0.1); - } - else - { - var val = Util.ToInt32(TB_PastBattle.Text); - if (val > 8) { TB_PastBattle.Text = 8.ToString(); return; } - PastBattle.Image = Util.ChangeOpacity(Util.ToUInt32(TB_PastBattle.Text) < 40 ? Properties.Resources.battlememory : Properties.Resources.battlememory2, - (val != 0 ? 1 : 0) * 0.9 + 0.1); - } - } - private void clickRibbon(object sender, EventArgs e) - { - cba[Array.IndexOf(pba, sender)].Checked ^= true; - } - } -} diff --git a/PKX/f4-RibbMedal.resx b/PKX/f4-RibbMedal.resx deleted file mode 100644 index 2fdd2054b..000000000 --- a/PKX/f4-RibbMedal.resx +++ /dev/null @@ -1,612 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - - - AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE - AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq - KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+ - vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li - 4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg - 4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly - 8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz - 8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v// - //+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P - Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA - Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK - k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF - Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P - aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N - pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT - vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV - yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ - yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq - rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB - AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY - GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e - HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq - quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq - quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY - 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY - 2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra - 2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc - 3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna - 2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg - 4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ - WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li - 4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA - AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk - 5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb - 2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl - 5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh - 4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm - 5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk - 4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn - 5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn - 5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn - 5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq - 6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn - 5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA - AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl - 5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR - 0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA - AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk - 5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG - RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn - 5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC - LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC - K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ - rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK - s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL - p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC - Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK - ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE - UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA - AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA - AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER - w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL - pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER - wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P - tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT - wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER - vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV - wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV - wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV - xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW - yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV - x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY - zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl - eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX - zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA - AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ - zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA - AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws - p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb - ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA - AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA - AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB////// - - - \ No newline at end of file diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs new file mode 100644 index 000000000..10e76c4f1 --- /dev/null +++ b/PersonalInfo/PersonalInfo.cs @@ -0,0 +1,91 @@ +namespace PKHeX +{ + public abstract class PersonalInfo + { + protected byte[] Data; + public abstract byte[] Write(); + public abstract int HP { get; set; } + public abstract int ATK { get; set; } + public abstract int DEF { get; set; } + public abstract int SPE { get; set; } + public abstract int SPA { get; set; } + public abstract int SPD { get; set; } + public abstract int EV_HP { get; set; } + public abstract int EV_ATK { get; set; } + public abstract int EV_DEF { get; set; } + public abstract int EV_SPE { get; set; } + public abstract int EV_SPA { get; set; } + public abstract int EV_SPD { get; set; } + + public abstract int[] Types { get; set; } + public abstract int CatchRate { get; set; } + public virtual int EvoStage { get; set; } + public abstract int[] Items { get; set; } + public abstract int Gender { get; set; } + public abstract int HatchCycles { get; set; } + public abstract int BaseFriendship { get; set; } + public abstract int EXPGrowth { get; set; } + public abstract int[] EggGroups { get; set; } + public abstract int [] Abilities { get; set; } + public abstract int EscapeRate { get; set; } + public virtual int FormeCount { get; set; } + protected virtual int FormStatsIndex { get; set; } + public virtual int FormeSprite { get; set; } + public abstract int BaseEXP { get; set; } + public abstract int Color { get; set; } + + public virtual int Height { get; set; } = 0; + public virtual int Weight { get; set; } = 0; + + public bool[] TMHM { get; set; } + public bool[] TypeTutors { get; set; } + public bool[][] SpecialTutors { get; set; } = new bool[0][]; + + protected static bool[] getBits(byte[] data) + { + bool[] r = new bool[8 * data.Length]; + for (int i = 0; i < r.Length; i++) + r[i] = (data[i/8] >> (i&7) & 0x1) == 1; + return r; + } + protected static byte[] setBits(bool[] bits) + { + byte[] data = new byte[bits.Length/8]; + for (int i = 0; i < bits.Length; i++) + data[i / 8] |= (byte)(bits[i] ? 1 << (i&0x7) : 0); + return data; + } + + // Data Manipulation + public int FormeIndex(int species, int forme) + { + if (forme <= 0) // no forme requested + return species; + if (FormStatsIndex <= 0) // no formes present + return species; + if (forme > FormeCount) // beyond range of species' formes + return species; + + return FormStatsIndex + forme - 1; + } + public int RandomGender + { + get + { + switch (Gender) + { + case 255: // Genderless + return 2; + case 254: // Female + return 1; + case 0: // Male + return 0; + default: + return (int)(Util.rnd32() % 2); + } + } + } + public bool HasFormes => FormeCount > 1; + public int BST => HP + ATK + DEF + SPE + SPA + SPD; + } +} diff --git a/PersonalInfo/PersonalInfoB2W2.cs b/PersonalInfo/PersonalInfoB2W2.cs new file mode 100644 index 000000000..c3659ac0c --- /dev/null +++ b/PersonalInfo/PersonalInfoB2W2.cs @@ -0,0 +1,37 @@ +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoB2W2 : PersonalInfoBW + { + public new const int SIZE = 0x4C; + public PersonalInfoB2W2(byte[] data) + { + if (data.Length != SIZE) + return; + Data = data; + + // Unpack TMHM & Tutors + TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); + TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); + SpecialTutors = new[] + { + getBits(Data.Skip(0x3C).Take(0x04).ToArray()), + getBits(Data.Skip(0x40).Take(0x04).ToArray()), + getBits(Data.Skip(0x44).Take(0x04).ToArray()), + getBits(Data.Skip(0x48).Take(0x04).ToArray()), + }; + } + + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + setBits(SpecialTutors[0]).CopyTo(Data, 0x3C); + setBits(SpecialTutors[1]).CopyTo(Data, 0x40); + setBits(SpecialTutors[2]).CopyTo(Data, 0x44); + setBits(SpecialTutors[3]).CopyTo(Data, 0x48); + return Data; + } + } +} diff --git a/PersonalInfo/PersonalInfoBW.cs b/PersonalInfo/PersonalInfoBW.cs new file mode 100644 index 000000000..7f26bb365 --- /dev/null +++ b/PersonalInfo/PersonalInfoBW.cs @@ -0,0 +1,97 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoBW : PersonalInfo + { + protected PersonalInfoBW() { } + public const int SIZE = 0x3C; + public PersonalInfoBW(byte[] data) + { + if (data.Length != SIZE) + return; + Data = data; + + // Unpack TMHM & Tutors + TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); + TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); + } + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + return Data; + } + + public override int HP { get { return Data[0x00]; } set { Data[0x00] = (byte)value; } } + public override int ATK { get { return Data[0x01]; } set { Data[0x01] = (byte)value; } } + public override int DEF { get { return Data[0x02]; } set { Data[0x02] = (byte)value; } } + public override int SPE { get { return Data[0x03]; } set { Data[0x03] = (byte)value; } } + public override int SPA { get { return Data[0x04]; } set { Data[0x04] = (byte)value; } } + public override int SPD { get { return Data[0x05]; } set { Data[0x05] = (byte)value; } } + public override int[] Types + { + get { return new int[] { Data[0x06], Data[0x07] }; } + set + { + if (value?.Length != 2) return; + Data[0x06] = (byte)value[0]; + Data[0x07] = (byte)value[1]; + } + } + public override int CatchRate { get { return Data[0x08]; } set { Data[0x08] = (byte)value; } } + public override int EvoStage { get { return Data[0x09]; } set { Data[0x09] = (byte)value; } } + private int EVYield { get { return BitConverter.ToUInt16(Data, 0x0A); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x0A); } } + public override int EV_HP { get { return EVYield >> 0 & 0x3; } set { EVYield = (EVYield & (0x3 << 0)) | (value & 0x3); } } + public override int EV_ATK { get { return EVYield >> 2 & 0x3; } set { EVYield = (EVYield & (0x3 << 2)) | (value & 0x3); } } + public override int EV_DEF { get { return EVYield >> 4 & 0x3; } set { EVYield = (EVYield & (0x3 << 4)) | (value & 0x3); } } + public override int EV_SPE { get { return EVYield >> 6 & 0x3; } set { EVYield = (EVYield & (0x3 << 6)) | (value & 0x3); } } + public override int EV_SPA { get { return EVYield >> 8 & 0x3; } set { EVYield = (EVYield & (0x3 << 8)) | (value & 0x3); } } + public override int EV_SPD { get { return EVYield >> 16 & 0x3; } set { EVYield = (EVYield & (0x3 << 10)) | (value & 0x3); } } + public override int[] Items + { + get { return new int[] { BitConverter.ToInt16(Data, 0xC), BitConverter.ToInt16(Data, 0xE), BitConverter.ToInt16(Data, 0x10) }; } + set + { + if (value?.Length != 3) return; + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0xC); + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0xE); + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0x10); + } + } + public override int Gender { get { return Data[0x12]; } set { Data[0x12] = (byte)value; } } + public override int HatchCycles { get { return Data[0x13]; } set { Data[0x13] = (byte)value; } } + public override int BaseFriendship { get { return Data[0x14]; } set { Data[0x14] = (byte)value; } } + public override int EXPGrowth { get { return Data[0x15]; } set { Data[0x15] = (byte)value; } } + public override int[] EggGroups + { + get { return new int[] { Data[0x16], Data[0x17] }; } + set + { + if (value?.Length != 2) return; + Data[0x16] = (byte)value[0]; + Data[0x17] = (byte)value[1]; + } + } + public override int[] Abilities + { + get { return new int[] { Data[0x18], Data[0x19], Data[0x1A] }; } + set + { + if (value?.Length != 2) return; + Data[0x18] = (byte)value[0]; + Data[0x19] = (byte)value[1]; + Data[0x1A] = (byte)value[2]; + } + } + public override int EscapeRate { get { return Data[0x1B]; } set { Data[0x1B] = (byte)value; } } + protected override int FormStatsIndex { get { return BitConverter.ToUInt16(Data, 0x1C); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x1C); } } + public override int FormeSprite { get { return BitConverter.ToUInt16(Data, 0x1E); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x1E); } } + public override int FormeCount { get { return Data[0x20]; } set { Data[0x20] = (byte)value; } } + public override int Color { get { return Data[0x21]; } set { Data[0x21] = (byte)value; } } + public override int BaseEXP { get { return BitConverter.ToUInt16(Data, 0x22); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x22); } } + public override int Height { get { return BitConverter.ToUInt16(Data, 0x24); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x24); } } + public override int Weight { get { return BitConverter.ToUInt16(Data, 0x26); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x26); } } + } +} diff --git a/PersonalInfo/PersonalInfoG3.cs b/PersonalInfo/PersonalInfoG3.cs new file mode 100644 index 000000000..04f8248b4 --- /dev/null +++ b/PersonalInfo/PersonalInfoG3.cs @@ -0,0 +1,84 @@ +using System; + +namespace PKHeX +{ + public class PersonalInfoG3 : PersonalInfo + { + protected PersonalInfoG3() { } + public const int SIZE = 0x1C; + public PersonalInfoG3(byte[] data) + { + if (data.Length != SIZE) + return; + + Data = data; + } + public override byte[] Write() + { + return Data; + } + + public override int HP { get { return Data[0x00]; } set { Data[0x00] = (byte)value; } } + public override int ATK { get { return Data[0x01]; } set { Data[0x01] = (byte)value; } } + public override int DEF { get { return Data[0x02]; } set { Data[0x02] = (byte)value; } } + public override int SPE { get { return Data[0x03]; } set { Data[0x03] = (byte)value; } } + public override int SPA { get { return Data[0x04]; } set { Data[0x04] = (byte)value; } } + public override int SPD { get { return Data[0x05]; } set { Data[0x05] = (byte)value; } } + public override int[] Types + { + get { return new int[] { Data[0x06], Data[0x07] }; } + set + { + if (value?.Length != 2) return; + Data[0x06] = (byte)value[0]; + Data[0x07] = (byte)value[1]; + } + } + public override int CatchRate { get { return Data[0x08]; } set { Data[0x08] = (byte)value; } } + public override int BaseEXP { get { return Data[0x09]; } set { Data[0x09] = (byte)value; } } + private int EVYield { get { return BitConverter.ToUInt16(Data, 0x0A); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x0A); } } + public override int EV_HP { get { return EVYield >> 0 & 0x3; } set { EVYield = (EVYield & (0x3 << 0)) | (value & 0x3); } } + public override int EV_ATK { get { return EVYield >> 2 & 0x3; } set { EVYield = (EVYield & (0x3 << 2)) | (value & 0x3); } } + public override int EV_DEF { get { return EVYield >> 4 & 0x3; } set { EVYield = (EVYield & (0x3 << 4)) | (value & 0x3); } } + public override int EV_SPE { get { return EVYield >> 6 & 0x3; } set { EVYield = (EVYield & (0x3 << 6)) | (value & 0x3); } } + public override int EV_SPA { get { return EVYield >> 8 & 0x3; } set { EVYield = (EVYield & (0x3 << 8)) | (value & 0x3); } } + public override int EV_SPD { get { return EVYield >> 16 & 0x3; } set { EVYield = (EVYield & (0x3 << 10)) | (value & 0x3); } } + + public override int[] Items + { + get { return new int[] { BitConverter.ToInt16(Data, 0xC), BitConverter.ToInt16(Data, 0xE) }; } + set + { + if (value?.Length != 2) return; + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0xC); + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0xE); + } + } + public override int Gender { get { return Data[0x10]; } set { Data[0x10] = (byte)value; } } + public override int HatchCycles { get { return Data[0x11]; } set { Data[0x11] = (byte)value; } } + public override int BaseFriendship { get { return Data[0x12]; } set { Data[0x12] = (byte)value; } } + public override int EXPGrowth { get { return Data[0x13]; } set { Data[0x13] = (byte)value; } } + public override int[] EggGroups + { + get { return new int[] { Data[0x14], Data[0x15] }; } + set + { + if (value?.Length != 2) return; + Data[0x14] = (byte)value[0]; + Data[0x15] = (byte)value[1]; + } + } + public override int[] Abilities + { + get { return new int[] { Data[0x16], Data[0x17] }; } + set + { + if (value?.Length != 2) return; + Data[0x16] = (byte)value[0]; + Data[0x17] = (byte)value[1]; + } + } + public override int EscapeRate { get { return Data[0x18]; } set { Data[0x18] = (byte)value; } } + public override int Color { get { return Data[0x19]; } set { Data[0x19] = (byte)value; } } + } +} diff --git a/PersonalInfo/PersonalInfoG4.cs b/PersonalInfo/PersonalInfoG4.cs new file mode 100644 index 000000000..3b573bcd6 --- /dev/null +++ b/PersonalInfo/PersonalInfoG4.cs @@ -0,0 +1,30 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoG4 : PersonalInfoG3 + { + public new const int SIZE = 0x2C; + public PersonalInfoG4(byte[] data) + { + if (data.Length != SIZE) + return; + Data = data; + + // Unpack TMHM & Tutors + TMHM = getBits(Data.Skip(0x1C).Take(0x0D).ToArray()); + TypeTutors = new bool[0]; // not stored in personal + } + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + // setBits(TypeTutors).CopyTo(Data, 0x38); + return Data; + } + + // Manually added attributes + public override int FormeCount { get { return Data[0x29]; } set {} } + protected override int FormStatsIndex { get { return BitConverter.ToUInt16(Data, 0x2A); } set {} } + } +} diff --git a/PersonalInfo/PersonalInfoORAS.cs b/PersonalInfo/PersonalInfoORAS.cs new file mode 100644 index 000000000..8d398f681 --- /dev/null +++ b/PersonalInfo/PersonalInfoORAS.cs @@ -0,0 +1,37 @@ +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoORAS : PersonalInfoXY + { + public new const int SIZE = 0x50; + public PersonalInfoORAS(byte[] data) + { + if (data.Length != SIZE) + return; + Data = data; + + // Unpack TMHM & Tutors + TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); + TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); + // 0x3C-0x40 unknown + SpecialTutors = new[] + { + getBits(Data.Skip(0x40).Take(0x04).ToArray()), + getBits(Data.Skip(0x44).Take(0x04).ToArray()), + getBits(Data.Skip(0x48).Take(0x04).ToArray()), + getBits(Data.Skip(0x4C).Take(0x04).ToArray()), + }; + } + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + setBits(SpecialTutors[0]).CopyTo(Data, 0x40); + setBits(SpecialTutors[1]).CopyTo(Data, 0x44); + setBits(SpecialTutors[2]).CopyTo(Data, 0x48); + setBits(SpecialTutors[3]).CopyTo(Data, 0x4C); + return Data; + } + } +} diff --git a/PersonalInfo/PersonalInfoXY.cs b/PersonalInfo/PersonalInfoXY.cs new file mode 100644 index 000000000..5ddc07fc1 --- /dev/null +++ b/PersonalInfo/PersonalInfoXY.cs @@ -0,0 +1,27 @@ +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoXY : PersonalInfoBW + { + protected PersonalInfoXY() { } // For ORAS + public new const int SIZE = 0x40; + public PersonalInfoXY(byte[] data) + { + if (data.Length != SIZE) + return; + Data = data; + + // Unpack TMHM & Tutors + TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); + TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); + // 0x3C-0x40 unknown + } + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + return Data; + } + } +} diff --git a/PersonalInfo/PersonalTable.cs b/PersonalInfo/PersonalTable.cs new file mode 100644 index 000000000..59d877243 --- /dev/null +++ b/PersonalInfo/PersonalTable.cs @@ -0,0 +1,113 @@ +using System; + +namespace PKHeX +{ + public class PersonalTable + { + internal static readonly PersonalTable AO = new PersonalTable(Properties.Resources.personal_ao, GameVersion.ORAS); + internal static readonly PersonalTable XY = new PersonalTable(Properties.Resources.personal_xy, GameVersion.XY); + internal static readonly PersonalTable B2W2 = new PersonalTable(Properties.Resources.personal_b2w2, GameVersion.B2W2); + internal static readonly PersonalTable BW = new PersonalTable(Properties.Resources.personal_bw, GameVersion.BW); + internal static readonly PersonalTable HGSS = new PersonalTable(Properties.Resources.personal_hgss, GameVersion.HGSS); + internal static readonly PersonalTable Pt = new PersonalTable(Properties.Resources.personal_pt, GameVersion.Pt); + internal static readonly PersonalTable DP = new PersonalTable(Properties.Resources.personal_dp, GameVersion.DP); + internal static readonly PersonalTable LG = new PersonalTable(Properties.Resources.personal_lg, GameVersion.LG); + internal static readonly PersonalTable FR = new PersonalTable(Properties.Resources.personal_fr, GameVersion.FR); + internal static readonly PersonalTable E = new PersonalTable(Properties.Resources.personal_e, GameVersion.E); + internal static readonly PersonalTable RS = new PersonalTable(Properties.Resources.personal_rs, GameVersion.RS); + + private static byte[][] splitBytes(byte[] data, int size) + { + byte[][] r = new byte[data.Length / size][]; + for (int i = 0; i < data.Length; i += size) + { + r[i / size] = new byte[size]; + Array.Copy(data, i, r[i / size], 0, size); + } + return r; + } + private PersonalTable(byte[] data, GameVersion format) + { + int size = 0; + switch (format) + { + case GameVersion.RS: + case GameVersion.E: + case GameVersion.FR: + case GameVersion.LG: size = PersonalInfoG3.SIZE; break; + case GameVersion.DP: + case GameVersion.Pt: + case GameVersion.HGSS: size = PersonalInfoG4.SIZE; break; + case GameVersion.BW: size = PersonalInfoBW.SIZE; break; + case GameVersion.B2W2: size = PersonalInfoB2W2.SIZE; break; + case GameVersion.XY: size = PersonalInfoXY.SIZE; break; + case GameVersion.ORAS: size = PersonalInfoORAS.SIZE; break; + } + + if (size == 0) + { Table = null; return; } + + byte[][] entries = splitBytes(data, size); + PersonalInfo[] d = new PersonalInfo[data.Length / size]; + + switch (format) + { + case GameVersion.RS: + case GameVersion.E: + case GameVersion.FR: + case GameVersion.LG: + Array.Resize(ref d, 387); + for (int i = 0; i < d.Length; i++) // entries are not in order of natdexID + d[i] = new PersonalInfoG3(entries[PKX.getG3Species(i)]); + break; + case GameVersion.DP: + case GameVersion.Pt: + case GameVersion.HGSS: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoG4(entries[i]); + break; + case GameVersion.BW: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoBW(entries[i]); + break; + case GameVersion.B2W2: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoB2W2(entries[i]); + break; + case GameVersion.XY: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoXY(entries[i]); + break; + case GameVersion.ORAS: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoORAS(entries[i]); + break; + } + Table = d; + } + + private readonly PersonalInfo[] Table; + public PersonalInfo this[int index] + { + get { return Table[index]; } + set { Table[index] = value; } + } + + public int[] getAbilities(int species, int forme) + { + if (species >= Table.Length) + { species = 0; Console.WriteLine("Requested out of bounds SpeciesID"); } + return this[getFormeIndex(species, forme)].Abilities; + } + public int getFormeIndex(int species, int forme) + { + if (species >= Table.Length) + { species = 0; Console.WriteLine("Requested out of bounds SpeciesID"); } + return this[species].FormeIndex(species, forme); + } + public PersonalInfo getFormeEntry(int species, int forme) + { + return this[getFormeIndex(species, forme)]; + } + } +} diff --git a/Program.cs b/Program.cs index 1fecfc3d7..ac985bb52 100644 --- a/Program.cs +++ b/Program.cs @@ -3,13 +3,13 @@ namespace PKHeX { - static class Program + internal static class Program { /// /// The main entry point for the application. /// [STAThread] - static void Main() + private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 64fa39935..7b9245620 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -6,7 +6,7 @@ // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("PKHeX")] -[assembly: AssemblyDescription("Pokémon Editor for Pokémon X/Y")] +[assembly: AssemblyDescription("Pokémon Save Editor")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("ProjectPokémon")] [assembly: AssemblyProduct("PKHeX")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 9e278c637..3e10c76ee 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -9060,16 +9060,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap _event { - get { - object obj = ResourceManager.GetObject("_event", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -9080,16 +9070,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap alert { - get { - object obj = ResourceManager.GetObject("alert", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -9100,16 +9080,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap artist { - get { - object obj = ResourceManager.GetObject("artist", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -9280,56 +9250,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap battlechamp { - get { - object obj = ResourceManager.GetObject("battlechamp", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap battlememory { - get { - object obj = ResourceManager.GetObject("battlememory", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap battlememory2 { - get { - object obj = ResourceManager.GetObject("battlememory2", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap bestfriends { - get { - object obj = ResourceManager.GetObject("bestfriends", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap birthday { - get { - object obj = ResourceManager.GetObject("birthday", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -9393,9 +9313,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp01 { + internal static System.Drawing.Bitmap box_wp01bw { get { - object obj = ResourceManager.GetObject("box_wp01", resourceCulture); + object obj = ResourceManager.GetObject("box_wp01bw", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9403,9 +9323,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp02 { + internal static System.Drawing.Bitmap box_wp01dp { get { - object obj = ResourceManager.GetObject("box_wp02", resourceCulture); + object obj = ResourceManager.GetObject("box_wp01dp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9413,9 +9333,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp03 { + internal static System.Drawing.Bitmap box_wp01e { get { - object obj = ResourceManager.GetObject("box_wp03", resourceCulture); + object obj = ResourceManager.GetObject("box_wp01e", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9423,9 +9343,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp04 { + internal static System.Drawing.Bitmap box_wp01rs { get { - object obj = ResourceManager.GetObject("box_wp04", resourceCulture); + object obj = ResourceManager.GetObject("box_wp01rs", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9433,9 +9353,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp05 { + internal static System.Drawing.Bitmap box_wp01xy { get { - object obj = ResourceManager.GetObject("box_wp05", resourceCulture); + object obj = ResourceManager.GetObject("box_wp01xy", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9443,9 +9363,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp06 { + internal static System.Drawing.Bitmap box_wp02bw { get { - object obj = ResourceManager.GetObject("box_wp06", resourceCulture); + object obj = ResourceManager.GetObject("box_wp02bw", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9453,9 +9373,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp07 { + internal static System.Drawing.Bitmap box_wp02dp { get { - object obj = ResourceManager.GetObject("box_wp07", resourceCulture); + object obj = ResourceManager.GetObject("box_wp02dp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9463,9 +9383,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp08 { + internal static System.Drawing.Bitmap box_wp02e { get { - object obj = ResourceManager.GetObject("box_wp08", resourceCulture); + object obj = ResourceManager.GetObject("box_wp02e", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9473,9 +9393,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp09 { + internal static System.Drawing.Bitmap box_wp02rs { get { - object obj = ResourceManager.GetObject("box_wp09", resourceCulture); + object obj = ResourceManager.GetObject("box_wp02rs", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9483,9 +9403,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp10 { + internal static System.Drawing.Bitmap box_wp02xy { get { - object obj = ResourceManager.GetObject("box_wp10", resourceCulture); + object obj = ResourceManager.GetObject("box_wp02xy", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9493,9 +9413,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp11 { + internal static System.Drawing.Bitmap box_wp03bw { get { - object obj = ResourceManager.GetObject("box_wp11", resourceCulture); + object obj = ResourceManager.GetObject("box_wp03bw", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9503,9 +9423,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp12 { + internal static System.Drawing.Bitmap box_wp03dp { get { - object obj = ResourceManager.GetObject("box_wp12", resourceCulture); + object obj = ResourceManager.GetObject("box_wp03dp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9513,9 +9433,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp13 { + internal static System.Drawing.Bitmap box_wp03e { get { - object obj = ResourceManager.GetObject("box_wp13", resourceCulture); + object obj = ResourceManager.GetObject("box_wp03e", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9523,9 +9443,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp14 { + internal static System.Drawing.Bitmap box_wp03rs { get { - object obj = ResourceManager.GetObject("box_wp14", resourceCulture); + object obj = ResourceManager.GetObject("box_wp03rs", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9533,9 +9453,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp15 { + internal static System.Drawing.Bitmap box_wp03xy { get { - object obj = ResourceManager.GetObject("box_wp15", resourceCulture); + object obj = ResourceManager.GetObject("box_wp03xy", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9543,9 +9463,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp16 { + internal static System.Drawing.Bitmap box_wp04bw { get { - object obj = ResourceManager.GetObject("box_wp16", resourceCulture); + object obj = ResourceManager.GetObject("box_wp04bw", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9553,9 +9473,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp17 { + internal static System.Drawing.Bitmap box_wp04dp { get { - object obj = ResourceManager.GetObject("box_wp17", resourceCulture); + object obj = ResourceManager.GetObject("box_wp04dp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9563,9 +9483,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp17o { + internal static System.Drawing.Bitmap box_wp04e { get { - object obj = ResourceManager.GetObject("box_wp17o", resourceCulture); + object obj = ResourceManager.GetObject("box_wp04e", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9573,9 +9493,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp18 { + internal static System.Drawing.Bitmap box_wp04rs { get { - object obj = ResourceManager.GetObject("box_wp18", resourceCulture); + object obj = ResourceManager.GetObject("box_wp04rs", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9583,9 +9503,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp18o { + internal static System.Drawing.Bitmap box_wp04xy { get { - object obj = ResourceManager.GetObject("box_wp18o", resourceCulture); + object obj = ResourceManager.GetObject("box_wp04xy", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9593,9 +9513,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp19 { + internal static System.Drawing.Bitmap box_wp05bw { get { - object obj = ResourceManager.GetObject("box_wp19", resourceCulture); + object obj = ResourceManager.GetObject("box_wp05bw", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9603,9 +9523,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp19o { + internal static System.Drawing.Bitmap box_wp05dp { get { - object obj = ResourceManager.GetObject("box_wp19o", resourceCulture); + object obj = ResourceManager.GetObject("box_wp05dp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9613,9 +9533,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp20 { + internal static System.Drawing.Bitmap box_wp05e { get { - object obj = ResourceManager.GetObject("box_wp20", resourceCulture); + object obj = ResourceManager.GetObject("box_wp05e", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9623,9 +9543,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp20o { + internal static System.Drawing.Bitmap box_wp05rs { get { - object obj = ResourceManager.GetObject("box_wp20o", resourceCulture); + object obj = ResourceManager.GetObject("box_wp05rs", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9633,9 +9553,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp21 { + internal static System.Drawing.Bitmap box_wp05xy { get { - object obj = ResourceManager.GetObject("box_wp21", resourceCulture); + object obj = ResourceManager.GetObject("box_wp05xy", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9643,9 +9563,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp21o { + internal static System.Drawing.Bitmap box_wp06bw { get { - object obj = ResourceManager.GetObject("box_wp21o", resourceCulture); + object obj = ResourceManager.GetObject("box_wp06bw", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9653,9 +9573,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp22 { + internal static System.Drawing.Bitmap box_wp06dp { get { - object obj = ResourceManager.GetObject("box_wp22", resourceCulture); + object obj = ResourceManager.GetObject("box_wp06dp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9663,9 +9583,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp22o { + internal static System.Drawing.Bitmap box_wp06e { get { - object obj = ResourceManager.GetObject("box_wp22o", resourceCulture); + object obj = ResourceManager.GetObject("box_wp06e", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9673,9 +9593,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp23 { + internal static System.Drawing.Bitmap box_wp06rs { get { - object obj = ResourceManager.GetObject("box_wp23", resourceCulture); + object obj = ResourceManager.GetObject("box_wp06rs", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9683,9 +9603,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp23o { + internal static System.Drawing.Bitmap box_wp06xy { get { - object obj = ResourceManager.GetObject("box_wp23o", resourceCulture); + object obj = ResourceManager.GetObject("box_wp06xy", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9693,9 +9613,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp24 { + internal static System.Drawing.Bitmap box_wp07bw { get { - object obj = ResourceManager.GetObject("box_wp24", resourceCulture); + object obj = ResourceManager.GetObject("box_wp07bw", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9703,9 +9623,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_wp24o { + internal static System.Drawing.Bitmap box_wp07dp { get { - object obj = ResourceManager.GetObject("box_wp24o", resourceCulture); + object obj = ResourceManager.GetObject("box_wp07dp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9713,9 +9633,1079 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap careless { + internal static System.Drawing.Bitmap box_wp07e { get { - object obj = ResourceManager.GetObject("careless", resourceCulture); + object obj = ResourceManager.GetObject("box_wp07e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp07rs { + get { + object obj = ResourceManager.GetObject("box_wp07rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp07xy { + get { + object obj = ResourceManager.GetObject("box_wp07xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp08bw { + get { + object obj = ResourceManager.GetObject("box_wp08bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp08dp { + get { + object obj = ResourceManager.GetObject("box_wp08dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp08e { + get { + object obj = ResourceManager.GetObject("box_wp08e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp08rs { + get { + object obj = ResourceManager.GetObject("box_wp08rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp08xy { + get { + object obj = ResourceManager.GetObject("box_wp08xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp09bw { + get { + object obj = ResourceManager.GetObject("box_wp09bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp09dp { + get { + object obj = ResourceManager.GetObject("box_wp09dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp09e { + get { + object obj = ResourceManager.GetObject("box_wp09e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp09rs { + get { + object obj = ResourceManager.GetObject("box_wp09rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp09xy { + get { + object obj = ResourceManager.GetObject("box_wp09xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp10bw { + get { + object obj = ResourceManager.GetObject("box_wp10bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp10dp { + get { + object obj = ResourceManager.GetObject("box_wp10dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp10e { + get { + object obj = ResourceManager.GetObject("box_wp10e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp10rs { + get { + object obj = ResourceManager.GetObject("box_wp10rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp10xy { + get { + object obj = ResourceManager.GetObject("box_wp10xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp11bw { + get { + object obj = ResourceManager.GetObject("box_wp11bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp11dp { + get { + object obj = ResourceManager.GetObject("box_wp11dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp11e { + get { + object obj = ResourceManager.GetObject("box_wp11e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp11rs { + get { + object obj = ResourceManager.GetObject("box_wp11rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp11xy { + get { + object obj = ResourceManager.GetObject("box_wp11xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp12bw { + get { + object obj = ResourceManager.GetObject("box_wp12bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp12dp { + get { + object obj = ResourceManager.GetObject("box_wp12dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp12e { + get { + object obj = ResourceManager.GetObject("box_wp12e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp12rs { + get { + object obj = ResourceManager.GetObject("box_wp12rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp12xy { + get { + object obj = ResourceManager.GetObject("box_wp12xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp13bw { + get { + object obj = ResourceManager.GetObject("box_wp13bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp13dp { + get { + object obj = ResourceManager.GetObject("box_wp13dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp13e { + get { + object obj = ResourceManager.GetObject("box_wp13e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp13frlg { + get { + object obj = ResourceManager.GetObject("box_wp13frlg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp13rs { + get { + object obj = ResourceManager.GetObject("box_wp13rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp13xy { + get { + object obj = ResourceManager.GetObject("box_wp13xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp14bw { + get { + object obj = ResourceManager.GetObject("box_wp14bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp14dp { + get { + object obj = ResourceManager.GetObject("box_wp14dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp14e { + get { + object obj = ResourceManager.GetObject("box_wp14e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp14frlg { + get { + object obj = ResourceManager.GetObject("box_wp14frlg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp14rs { + get { + object obj = ResourceManager.GetObject("box_wp14rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp14xy { + get { + object obj = ResourceManager.GetObject("box_wp14xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp15bw { + get { + object obj = ResourceManager.GetObject("box_wp15bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp15dp { + get { + object obj = ResourceManager.GetObject("box_wp15dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp15e { + get { + object obj = ResourceManager.GetObject("box_wp15e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp15frlg { + get { + object obj = ResourceManager.GetObject("box_wp15frlg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp15rs { + get { + object obj = ResourceManager.GetObject("box_wp15rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp15xy { + get { + object obj = ResourceManager.GetObject("box_wp15xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp16bw { + get { + object obj = ResourceManager.GetObject("box_wp16bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp16dp { + get { + object obj = ResourceManager.GetObject("box_wp16dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp16e { + get { + object obj = ResourceManager.GetObject("box_wp16e", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp16frlg { + get { + object obj = ResourceManager.GetObject("box_wp16frlg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp16rs { + get { + object obj = ResourceManager.GetObject("box_wp16rs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp16xy { + get { + object obj = ResourceManager.GetObject("box_wp16xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp17ao { + get { + object obj = ResourceManager.GetObject("box_wp17ao", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp17b2w2 { + get { + object obj = ResourceManager.GetObject("box_wp17b2w2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp17bw { + get { + object obj = ResourceManager.GetObject("box_wp17bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp17dp { + get { + object obj = ResourceManager.GetObject("box_wp17dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp17hgss { + get { + object obj = ResourceManager.GetObject("box_wp17hgss", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp17pt { + get { + object obj = ResourceManager.GetObject("box_wp17pt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp17xy { + get { + object obj = ResourceManager.GetObject("box_wp17xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp18ao { + get { + object obj = ResourceManager.GetObject("box_wp18ao", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp18b2w2 { + get { + object obj = ResourceManager.GetObject("box_wp18b2w2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp18bw { + get { + object obj = ResourceManager.GetObject("box_wp18bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp18dp { + get { + object obj = ResourceManager.GetObject("box_wp18dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp18hgss { + get { + object obj = ResourceManager.GetObject("box_wp18hgss", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp18pt { + get { + object obj = ResourceManager.GetObject("box_wp18pt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp18xy { + get { + object obj = ResourceManager.GetObject("box_wp18xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp19ao { + get { + object obj = ResourceManager.GetObject("box_wp19ao", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp19b2w2 { + get { + object obj = ResourceManager.GetObject("box_wp19b2w2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp19bw { + get { + object obj = ResourceManager.GetObject("box_wp19bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp19dp { + get { + object obj = ResourceManager.GetObject("box_wp19dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp19hgss { + get { + object obj = ResourceManager.GetObject("box_wp19hgss", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp19pt { + get { + object obj = ResourceManager.GetObject("box_wp19pt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp19xy { + get { + object obj = ResourceManager.GetObject("box_wp19xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp20ao { + get { + object obj = ResourceManager.GetObject("box_wp20ao", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp20b2w2 { + get { + object obj = ResourceManager.GetObject("box_wp20b2w2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp20bw { + get { + object obj = ResourceManager.GetObject("box_wp20bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp20dp { + get { + object obj = ResourceManager.GetObject("box_wp20dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp20hgss { + get { + object obj = ResourceManager.GetObject("box_wp20hgss", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp20pt { + get { + object obj = ResourceManager.GetObject("box_wp20pt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp20xy { + get { + object obj = ResourceManager.GetObject("box_wp20xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp21ao { + get { + object obj = ResourceManager.GetObject("box_wp21ao", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp21b2w2 { + get { + object obj = ResourceManager.GetObject("box_wp21b2w2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp21bw { + get { + object obj = ResourceManager.GetObject("box_wp21bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp21dp { + get { + object obj = ResourceManager.GetObject("box_wp21dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp21hgss { + get { + object obj = ResourceManager.GetObject("box_wp21hgss", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp21pt { + get { + object obj = ResourceManager.GetObject("box_wp21pt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp21xy { + get { + object obj = ResourceManager.GetObject("box_wp21xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp22ao { + get { + object obj = ResourceManager.GetObject("box_wp22ao", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp22b2w2 { + get { + object obj = ResourceManager.GetObject("box_wp22b2w2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp22bw { + get { + object obj = ResourceManager.GetObject("box_wp22bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp22dp { + get { + object obj = ResourceManager.GetObject("box_wp22dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp22hgss { + get { + object obj = ResourceManager.GetObject("box_wp22hgss", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp22pt { + get { + object obj = ResourceManager.GetObject("box_wp22pt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp22xy { + get { + object obj = ResourceManager.GetObject("box_wp22xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp23ao { + get { + object obj = ResourceManager.GetObject("box_wp23ao", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp23b2w2 { + get { + object obj = ResourceManager.GetObject("box_wp23b2w2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp23bw { + get { + object obj = ResourceManager.GetObject("box_wp23bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp23dp { + get { + object obj = ResourceManager.GetObject("box_wp23dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp23hgss { + get { + object obj = ResourceManager.GetObject("box_wp23hgss", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp23pt { + get { + object obj = ResourceManager.GetObject("box_wp23pt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp23xy { + get { + object obj = ResourceManager.GetObject("box_wp23xy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp24ao { + get { + object obj = ResourceManager.GetObject("box_wp24ao", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp24b2w2 { + get { + object obj = ResourceManager.GetObject("box_wp24b2w2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp24bw { + get { + object obj = ResourceManager.GetObject("box_wp24bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp24dp { + get { + object obj = ResourceManager.GetObject("box_wp24dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp24hgss { + get { + object obj = ResourceManager.GetObject("box_wp24hgss", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp24pt { + get { + object obj = ResourceManager.GetObject("box_wp24pt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp24xy { + get { + object obj = ResourceManager.GetObject("box_wp24xy", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -9749,16 +10739,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap classic { - get { - object obj = ResourceManager.GetObject("classic", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized string similar to 60 Ash ///21 Test1 @@ -9771,26 +10751,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap contestmemory { - get { - object obj = ResourceManager.GetObject("contestmemory", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap contestmemory2 { - get { - object obj = ResourceManager.GetObject("contestmemory2", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized string similar to Country ID,JP,EN,FR,DE,IT,ES,ZH,KO ///1,日本,Japan,Japon,Japan,Giappone,Japón,日本,일본 @@ -9808,16 +10768,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap country { - get { - object obj = ResourceManager.GetObject("country", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -9838,16 +10788,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap downcast { - get { - object obj = ResourceManager.GetObject("downcast", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -9858,26 +10798,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap earth { - get { - object obj = ResourceManager.GetObject("earth", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap effort { - get { - object obj = ResourceManager.GetObject("effort", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -9978,16 +10898,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap expertbattler { - get { - object obj = ResourceManager.GetObject("expertbattler", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -10062,36 +10972,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap footprint { - get { - object obj = ResourceManager.GetObject("footprint", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap gorgeous { - get { - object obj = ResourceManager.GetObject("gorgeous", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap gorgeousroyal { - get { - object obj = ResourceManager.GetObject("gorgeousroyal", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -10102,16 +10982,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hoennchamp { - get { - object obj = ResourceManager.GetObject("hoennchamp", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14265,9 +15135,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap kaloschamp { + internal static System.Drawing.Bitmap item_tm { get { - object obj = ResourceManager.GetObject("kaloschamp", resourceCulture); + object obj = ResourceManager.GetObject("item_tm", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14321,11 +15191,11 @@ internal class Resources { /// /// Looks up a localized string similar to ! PKHeX Interface Customization File ///! Languages: Save this file accordingly and put it in the same folder as PKHeX's executable. - ///! lang_en.txt = English - ///! lang_jp.txt = Japanese + ///! lang_en.txt = Inglés + ///! lang_jp.txt = Japonés ///! lang_fr.txt = French - ///! lang_de.txt = German - ///! lang_es.txt = Spanish + ///! lang_de.txt = Alemán + ///! lang_es.txt = Español ///! lang_it.txt = Italian ///! lang_ko.txt = Korean ///! lang_zh.txt = Chinese @@ -14333,7 +15203,7 @@ internal class Resources { ///! Make sure that each edit has a ' = ' between Control name and new Text! ///! ///! ----------------------------------------------------- - ///- DO NOT CHANGE THI [rest of string was truncated]";. + ///- DO NOT CHANGE THIS [rest of string was truncated]";. /// internal static string lang_es { get { @@ -14505,16 +15375,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap legend { - get { - object obj = ResourceManager.GetObject("legend", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14565,26 +15425,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap national { - get { - object obj = ResourceManager.GetObject("national", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap nationalchamp { - get { - object obj = ResourceManager.GetObject("nationalchamp", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14635,6 +15475,96 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_b2w2 { + get { + object obj = ResourceManager.GetObject("personal_b2w2", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_bw { + get { + object obj = ResourceManager.GetObject("personal_bw", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_dp { + get { + object obj = ResourceManager.GetObject("personal_dp", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_e { + get { + object obj = ResourceManager.GetObject("personal_e", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_fr { + get { + object obj = ResourceManager.GetObject("personal_fr", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_hgss { + get { + object obj = ResourceManager.GetObject("personal_hgss", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_lg { + get { + object obj = ResourceManager.GetObject("personal_lg", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_pt { + get { + object obj = ResourceManager.GetObject("personal_pt", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_rs { + get { + object obj = ResourceManager.GetObject("personal_rs", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -14655,16 +15585,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap premier { - get { - object obj = ResourceManager.GetObject("premier", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14675,26 +15595,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap record { - get { - object obj = ResourceManager.GetObject("record", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap regionalchamp { - get { - object obj = ResourceManager.GetObject("regionalchamp", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized string similar to ID,3DS Region ///0,Japan (日本) @@ -14710,16 +15610,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap relax { - get { - object obj = ResourceManager.GetObject("relax", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14733,9 +15623,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ribbon_40 { + internal static System.Drawing.Bitmap ribbonability { get { - object obj = ResourceManager.GetObject("ribbon_40", resourceCulture); + object obj = ResourceManager.GetObject("ribbonability", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14743,9 +15633,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ribbon_41 { + internal static System.Drawing.Bitmap ribbonabilitydouble { get { - object obj = ResourceManager.GetObject("ribbon_41", resourceCulture); + object obj = ResourceManager.GetObject("ribbonabilitydouble", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14753,9 +15643,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ribbon_42 { + internal static System.Drawing.Bitmap ribbonabilitygreat { get { - object obj = ResourceManager.GetObject("ribbon_42", resourceCulture); + object obj = ResourceManager.GetObject("ribbonabilitygreat", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14763,9 +15653,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ribbon_43 { + internal static System.Drawing.Bitmap ribbonabilitymulti { get { - object obj = ResourceManager.GetObject("ribbon_43", resourceCulture); + object obj = ResourceManager.GetObject("ribbonabilitymulti", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14773,9 +15663,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ribbon_44 { + internal static System.Drawing.Bitmap ribbonabilitypair { get { - object obj = ResourceManager.GetObject("ribbon_44", resourceCulture); + object obj = ResourceManager.GetObject("ribbonabilitypair", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14783,9 +15673,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ribbon_45 { + internal static System.Drawing.Bitmap ribbonabilityworld { get { - object obj = ResourceManager.GetObject("ribbon_45", resourceCulture); + object obj = ResourceManager.GetObject("ribbonabilityworld", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14793,9 +15683,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ribbon_46 { + internal static System.Drawing.Bitmap ribbonalert { get { - object obj = ResourceManager.GetObject("ribbon_46", resourceCulture); + object obj = ResourceManager.GetObject("ribbonalert", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14803,9 +15693,889 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap royal { + internal static System.Drawing.Bitmap ribbonartist { get { - object obj = ResourceManager.GetObject("royal", resourceCulture); + object obj = ResourceManager.GetObject("ribbonartist", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonbattlerexpert { + get { + object obj = ResourceManager.GetObject("ribbonbattlerexpert", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonbattlerskillful { + get { + object obj = ResourceManager.GetObject("ribbonbattlerskillful", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonbestfriends { + get { + object obj = ResourceManager.GetObject("ribbonbestfriends", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonbirthday { + get { + object obj = ResourceManager.GetObject("ribbonbirthday", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribboncareless { + get { + object obj = ResourceManager.GetObject("ribboncareless", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonchampionbattle { + get { + object obj = ResourceManager.GetObject("ribbonchampionbattle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonchampiong3hoenn { + get { + object obj = ResourceManager.GetObject("ribbonchampiong3hoenn", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonchampiong6hoenn { + get { + object obj = ResourceManager.GetObject("ribbonchampiong6hoenn", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonchampionkalos { + get { + object obj = ResourceManager.GetObject("ribbonchampionkalos", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonchampionnational { + get { + object obj = ResourceManager.GetObject("ribbonchampionnational", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonchampionregional { + get { + object obj = ResourceManager.GetObject("ribbonchampionregional", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonchampionsinnoh { + get { + object obj = ResourceManager.GetObject("ribbonchampionsinnoh", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonchampionworld { + get { + object obj = ResourceManager.GetObject("ribbonchampionworld", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonclassic { + get { + object obj = ResourceManager.GetObject("ribbonclassic", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonconteststar { + get { + object obj = ResourceManager.GetObject("ribbonconteststar", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribboncountmemorybattle { + get { + object obj = ResourceManager.GetObject("ribboncountmemorybattle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribboncountmemorybattle2 { + get { + object obj = ResourceManager.GetObject("ribboncountmemorybattle2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribboncountmemorycontest { + get { + object obj = ResourceManager.GetObject("ribboncountmemorycontest", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribboncountmemorycontest2 { + get { + object obj = ResourceManager.GetObject("ribboncountmemorycontest2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribboncountry { + get { + object obj = ResourceManager.GetObject("ribboncountry", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbondowncast { + get { + object obj = ResourceManager.GetObject("ribbondowncast", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonearth { + get { + object obj = ResourceManager.GetObject("ribbonearth", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribboneffort { + get { + object obj = ResourceManager.GetObject("ribboneffort", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonevent { + get { + object obj = ResourceManager.GetObject("ribbonevent", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonfootprint { + get { + object obj = ResourceManager.GetObject("ribbonfootprint", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3beauty { + get { + object obj = ResourceManager.GetObject("ribbong3beauty", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3beautyhyper { + get { + object obj = ResourceManager.GetObject("ribbong3beautyhyper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3beautymaster { + get { + object obj = ResourceManager.GetObject("ribbong3beautymaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3beautysuper { + get { + object obj = ResourceManager.GetObject("ribbong3beautysuper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3cool { + get { + object obj = ResourceManager.GetObject("ribbong3cool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3coolhyper { + get { + object obj = ResourceManager.GetObject("ribbong3coolhyper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3coolmaster { + get { + object obj = ResourceManager.GetObject("ribbong3coolmaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3coolsuper { + get { + object obj = ResourceManager.GetObject("ribbong3coolsuper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3cute { + get { + object obj = ResourceManager.GetObject("ribbong3cute", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3cutehyper { + get { + object obj = ResourceManager.GetObject("ribbong3cutehyper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3cutemaster { + get { + object obj = ResourceManager.GetObject("ribbong3cutemaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3cutesuper { + get { + object obj = ResourceManager.GetObject("ribbong3cutesuper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3smart { + get { + object obj = ResourceManager.GetObject("ribbong3smart", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3smarthyper { + get { + object obj = ResourceManager.GetObject("ribbong3smarthyper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3smartmaster { + get { + object obj = ResourceManager.GetObject("ribbong3smartmaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3smartsuper { + get { + object obj = ResourceManager.GetObject("ribbong3smartsuper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3tough { + get { + object obj = ResourceManager.GetObject("ribbong3tough", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3toughhyper { + get { + object obj = ResourceManager.GetObject("ribbong3toughhyper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3toughmaster { + get { + object obj = ResourceManager.GetObject("ribbong3toughmaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong3toughsuper { + get { + object obj = ResourceManager.GetObject("ribbong3toughsuper", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4beauty { + get { + object obj = ResourceManager.GetObject("ribbong4beauty", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4beautygreat { + get { + object obj = ResourceManager.GetObject("ribbong4beautygreat", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4beautymaster { + get { + object obj = ResourceManager.GetObject("ribbong4beautymaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4beautyultra { + get { + object obj = ResourceManager.GetObject("ribbong4beautyultra", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4cool { + get { + object obj = ResourceManager.GetObject("ribbong4cool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4coolgreat { + get { + object obj = ResourceManager.GetObject("ribbong4coolgreat", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4coolmaster { + get { + object obj = ResourceManager.GetObject("ribbong4coolmaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4coolultra { + get { + object obj = ResourceManager.GetObject("ribbong4coolultra", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4cute { + get { + object obj = ResourceManager.GetObject("ribbong4cute", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4cutegreat { + get { + object obj = ResourceManager.GetObject("ribbong4cutegreat", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4cutemaster { + get { + object obj = ResourceManager.GetObject("ribbong4cutemaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4cuteultra { + get { + object obj = ResourceManager.GetObject("ribbong4cuteultra", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4smart { + get { + object obj = ResourceManager.GetObject("ribbong4smart", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4smartgreat { + get { + object obj = ResourceManager.GetObject("ribbong4smartgreat", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4smartmaster { + get { + object obj = ResourceManager.GetObject("ribbong4smartmaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4smartultra { + get { + object obj = ResourceManager.GetObject("ribbong4smartultra", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4tough { + get { + object obj = ResourceManager.GetObject("ribbong4tough", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4toughgreat { + get { + object obj = ResourceManager.GetObject("ribbong4toughgreat", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4toughmaster { + get { + object obj = ResourceManager.GetObject("ribbong4toughmaster", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbong4toughultra { + get { + object obj = ResourceManager.GetObject("ribbong4toughultra", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbongorgeous { + get { + object obj = ResourceManager.GetObject("ribbongorgeous", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbongorgeousroyal { + get { + object obj = ResourceManager.GetObject("ribbongorgeousroyal", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonlegend { + get { + object obj = ResourceManager.GetObject("ribbonlegend", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonmasterbeauty { + get { + object obj = ResourceManager.GetObject("ribbonmasterbeauty", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonmastercleverness { + get { + object obj = ResourceManager.GetObject("ribbonmastercleverness", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonmastercoolness { + get { + object obj = ResourceManager.GetObject("ribbonmastercoolness", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonmastercuteness { + get { + object obj = ResourceManager.GetObject("ribbonmastercuteness", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonmastertoughness { + get { + object obj = ResourceManager.GetObject("ribbonmastertoughness", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonnational { + get { + object obj = ResourceManager.GetObject("ribbonnational", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonpremier { + get { + object obj = ResourceManager.GetObject("ribbonpremier", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonrecord { + get { + object obj = ResourceManager.GetObject("ribbonrecord", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonrelax { + get { + object obj = ResourceManager.GetObject("ribbonrelax", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonroyal { + get { + object obj = ResourceManager.GetObject("ribbonroyal", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonshock { + get { + object obj = ResourceManager.GetObject("ribbonshock", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonsmile { + get { + object obj = ResourceManager.GetObject("ribbonsmile", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonsnooze { + get { + object obj = ResourceManager.GetObject("ribbonsnooze", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonsouvenir { + get { + object obj = ResourceManager.GetObject("ribbonsouvenir", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonspecial { + get { + object obj = ResourceManager.GetObject("ribbonspecial", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbontraining { + get { + object obj = ResourceManager.GetObject("ribbontraining", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonvictory { + get { + object obj = ResourceManager.GetObject("ribbonvictory", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonwinning { + get { + object obj = ResourceManager.GetObject("ribbonwinning", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonwishing { + get { + object obj = ResourceManager.GetObject("ribbonwishing", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ribbonworld { + get { + object obj = ResourceManager.GetObject("ribbonworld", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -14840,16 +16610,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap shock { - get { - object obj = ResourceManager.GetObject("shock", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized string similar to If you are having issues viewing certain symbols/text: Options -> Toggle Font. /// @@ -14890,26 +16650,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap sinnohchamp { - get { - object obj = ResourceManager.GetObject("sinnohchamp", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap skillfullbattler { - get { - object obj = ResourceManager.GetObject("skillfullbattler", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14920,6 +16660,16 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap slotDel1 { + get { + object obj = ResourceManager.GetObject("slotDel1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14930,6 +16680,16 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap slotSet1 { + get { + object obj = ResourceManager.GetObject("slotSet1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14940,6 +16700,16 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap slotTrans1 { + get { + object obj = ResourceManager.GetObject("slotTrans1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -14953,39 +16723,9 @@ internal class Resources { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap smile { + internal static System.Drawing.Bitmap slotView1 { get { - object obj = ResourceManager.GetObject("smile", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap snooze { - get { - object obj = ResourceManager.GetObject("snooze", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap souvenir { - get { - object obj = ResourceManager.GetObject("souvenir", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap special { - get { - object obj = ResourceManager.GetObject("special", resourceCulture); + object obj = ResourceManager.GetObject("slotView1", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -18770,18 +20510,18 @@ internal class Resources { /// /// Looks up a localized string similar to None - ///Rock Smash (HGSS) - ///Tall Grass + ///Golpe roca (HGSS) + ///Hierba Alta /// ///Dialga/Palkia - ///Cave/Hall of Origin + ///Cueva/Sala del Origen /// - ///Surfing/Fishing + ///Surfeando/Pescando /// - ///Building/Enigma Stone - ///Marsh/Safari + ///Edificio/Misticristal + ///Pantano/Safari /// - ///Starter/Fossil/Gift (DP) + ///Inicial/Fosil/Regalo (DP) /// /// /// @@ -18792,8 +20532,8 @@ internal class Resources { /// /// /// - ///Distortion World (Pt) - ///Starter/Fossil/Gift (Pt/DP Trio). + ///Mundo Distorsion (Pt) + ///Inicial/Fosil/Regalo (Pt/DP Trio). /// internal static string text_encountertype_es { get { @@ -18967,7 +20707,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -19219,9 +20959,7 @@ internal class Resources { /// /// /// - /// - /// - /// /// [rest of string was truncated]";. + /// [rest of string was truncated]";. /// internal static string text_forms_de { get { @@ -19230,7 +20968,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -19482,9 +21220,7 @@ internal class Resources { /// /// /// - /// - /// - /// /// [rest of string was truncated]";. + /// [rest of string was truncated]";. /// internal static string text_forms_en { get { @@ -19493,7 +21229,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -19744,10 +21480,7 @@ internal class Resources { /// /// /// - /// - /// - /// - /// [rest of string was truncated]";. + /// /// [rest of string was truncated]";. /// internal static string text_forms_es { get { @@ -19756,7 +21489,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -20006,10 +21739,7 @@ internal class Resources { /// /// /// - /// - /// - /// - /// [rest of string was truncated]";. + /// /// [rest of string was truncated]";. /// internal static string text_forms_fr { get { @@ -20018,7 +21748,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -20269,10 +21999,7 @@ internal class Resources { /// /// /// - /// - /// - /// - /// [rest of string was truncated]";. + /// /// [rest of string was truncated]";. /// internal static string text_forms_it { get { @@ -20281,7 +22008,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -20532,9 +22259,7 @@ internal class Resources { /// /// /// - /// - /// - /// /// [rest of string was truncated]";. + /// [rest of string was truncated]";. /// internal static string text_forms_ja { get { @@ -20543,7 +22268,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -20795,9 +22520,7 @@ internal class Resources { /// /// /// - /// - /// - /// /// [rest of string was truncated]";. + /// [rest of string was truncated]";. /// internal static string text_forms_ko { get { @@ -20806,7 +22529,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -21057,10 +22780,7 @@ internal class Resources { /// /// /// - /// - /// - /// - /// [rest of string was truncated]";. + /// /// [rest of string was truncated]";. /// internal static string text_forms_zh { get { @@ -21148,8 +22868,8 @@ internal class Resources { ///RojoFuego ///VerdeHoja /// - ///HeartGold - ///SoulSilver + ///Oro HeartGold + ///Plata SoulSilver /// ///Diamante ///Perla @@ -21167,8 +22887,8 @@ internal class Resources { ///Negra2 ///X ///Y - ///AS - ///OR. + ///Zafiro Alfa + ///Rubí Omega. /// internal static string text_games_es { get { @@ -23339,6 +25059,62 @@ internal class Resources { } } + /// + /// Looks up a localized string similar to (None) + ///Master Ball + ///Ultra Ball + ///Great Ball + ///Poké Ball + ///Safari Ball + ///Net Ball + ///Dive Ball + ///Nest Ball + ///Repeat Ball + ///Timer Ball + ///Luxury Ball + ///Premier Ball + ///Potion + ///Antidote + ///Burn Heal + ///Ice Heal + ///Awakening + ///Parlyz Heal + ///Full Restore + ///Max Potion + ///Hyper Potion + ///Super Potion + ///Full Heal + ///Revive + ///Max Revive + ///Fresh Water + ///Soda Pop + ///Lemonade + ///Moomoo Milk + ///EnergyPowder + ///Energy Root + ///Heal Powder + ///Revival Herb + ///Ether + ///Max Ether + ///Elixir + ///Max Elixir + ///Lava Cookie + ///Blue Flute + ///Yellow Flute + ///Red Flute + ///Black Flute + ///White Flute + ///Berry Juice + ///Sacred Ash + ///Shoal Salt + ///Shoal S [rest of string was truncated]";. + /// + internal static string text_ItemsG3_en { + get { + return ResourceManager.GetString("text_ItemsG3_en", resourceCulture); + } + } + /// /// Looks up a localized string similar to /// @@ -25020,6 +26796,58 @@ internal class Resources { } } + /// + /// Looks up a localized string similar to Littleroot Town + ///Oldale Town + ///Dewford Town + ///Lavaridge Town + ///Fallarbor Town + ///Verdanturf Town + ///Pacifidlog Town + ///Petalburg City + ///Slateport City + ///Mauville City + ///Rustboro City + ///Fortree City + ///Lilycove City + ///Mossdeep City + ///Sootopolis City + ///Ever Grande City + ///Route 101 + ///Route 102 + ///Route 103 + ///Route 104 + ///Route 105 + ///Route 106 + ///Route 107 + ///Route 108 + ///Route 109 + ///Route 110 + ///Route 111 + ///Route 112 + ///Route 113 + ///Route 114 + ///Route 115 + ///Route 116 + ///Route 117 + ///Route 118 + ///Route 119 + ///Route 120 + ///Route 121 + ///Route 122 + ///Route 123 + ///Route 124 + ///Route 125 + ///Route 126 + ///Route 127 + ///Route 1 [rest of string was truncated]";. + /// + internal static string text_rsefrlg_00000_en { + get { + return ResourceManager.GetString("text_rsefrlg_00000_en", resourceCulture); + } + } + /// /// Looks up a localized string similar to Ei ///Bisasam @@ -28917,16 +30745,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap training { - get { - object obj = ResourceManager.GetObject("training", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -28976,35 +30794,5 @@ internal class Resources { return ((byte[])(obj)); } } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap wishing { - get { - object obj = ResourceManager.GetObject("wishing", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap world { - get { - object obj = ResourceManager.GetObject("world", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap worldchamp { - get { - object obj = ResourceManager.GetObject("worldchamp", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } } } diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 14e9b3472..10d5e449e 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -118,123 +118,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\img\ribbons\alert.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\artist.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\battlechamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\battlememory.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\bestfriends.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\birthday.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\careless.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\classic.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\contestmemory.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\country.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\downcast.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\earth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\effort.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\expertbattler.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\footprint.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\gorgeous.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\gorgeousroyal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\hoennchamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\kaloschamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\legend.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\national.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\nationalchamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\premier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\record.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\regionalchamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\relax.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\royal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\shock.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\sinnohchamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\skillfullbattler.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\smile.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\snooze.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\souvenir.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\special.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\training.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\wishing.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\world.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\worldchamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\event.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\img\badges\badge_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2884,12 +2767,6 @@ ..\Resources\img\Pokemon Sprites\666-15.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\img\ribbons\battlememory2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\contestmemory2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\img\misc\locked.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2953,78 +2830,6 @@ ..\Resources\img\misc\party.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\img\box\box_wp01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp02.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp04.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp05.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp06.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp07.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp08.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp09.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp10.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp12.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp13.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp14.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp15.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp17.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp18.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp19.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp20.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp21.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp22.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp23.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\img\item\item_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -4219,27 +4024,6 @@ ..\Resources\img\Pokemon Sprites\unknown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\img\ribbons\ribbon_40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\ribbon_41.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\ribbon_42.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\ribbon_43.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\ribbon_44.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\ribbon_45.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\ribbons\ribbon_46.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\img\item\item_534.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -4348,30 +4132,6 @@ ..\Resources\img\Pokemon Sprites\80-1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\img\box\box_wp17o.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp18o.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp19o.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp20o.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp21o.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp22o.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp23o.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\img\box\box_wp24o.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\img\Pokemon Sprites\25-1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -5869,4 +5629,760 @@ ..\Resources\img\Program\showdown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\byte\personal_b2w2;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_bw;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_dp;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_hgss;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_pt;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_e;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_fr;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_lg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_rs;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\text\gen3\text_ItemsG3_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + + + ..\Resources\img\ribbons\ribbonalert.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonartist.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonbattlerexpert.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonbattlerskillful.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonbestfriends.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonbirthday.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribboncareless.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonchampionbattle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonchampiong3hoenn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonchampiong6hoenn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonchampionkalos.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonchampionnational.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonchampionregional.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonchampionsinnoh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonchampionworld.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonclassic.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonconteststar.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribboncountmemorybattle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribboncountmemorybattle2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribboncountmemorycontest.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribboncountmemorycontest2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribboncountry.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbondowncast.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonearth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribboneffort.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonevent.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonfootprint.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbongorgeous.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbongorgeousroyal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonlegend.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonmasterbeauty.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonmastercleverness.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonmastercoolness.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonmastercuteness.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonmastertoughness.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonnational.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonpremier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonrecord.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonrelax.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonroyal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonshock.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonsmile.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonsnooze.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonsouvenir.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonspecial.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbontraining.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonwishing.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonworld.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonability.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonabilitydouble.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonabilitygreat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonabilitymulti.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonabilitypair.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonabilityworld.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3beauty.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3beautyhyper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3beautymaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3beautysuper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3cool.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3coolhyper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3coolmaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3coolsuper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3cute.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3cutehyper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3cutemaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3cutesuper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3smart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3smarthyper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3smartmaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3smartsuper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3tough.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3toughhyper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3toughmaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong3toughsuper.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4beauty.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4beautygreat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4beautymaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4beautyultra.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4cool.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4coolgreat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4coolmaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4coolultra.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4cute.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4cutegreat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4cutemaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4cuteultra.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4smart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4smartgreat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4smartmaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4smartultra.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4tough.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4toughgreat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4toughmaster.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbong4toughultra.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonvictory.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\ribbons\ribbonwinning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\text\gen3\text_rsefrlg_00000_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + + + ..\Resources\img\box\bw\box_wp01bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp01dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp01e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp01rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp01xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp02bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp02dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp02e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp02rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp02xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp03bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp03dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp03e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp03rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp03xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp04bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp04dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp04e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp04rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp04xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp05bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp05dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp05e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp05rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp05xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp06bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp06dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp06e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp06rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp06xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp07bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp07dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp07e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp07rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp07xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp08bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp08dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp08e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp08rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp08xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp09bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp09dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp09e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp09rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp09xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp10bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp10dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp10e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp10rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp10xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp11bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp11dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp11e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp11rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp11xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp12bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp12dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp12e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp12rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp12xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp13bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp13dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp13e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\frlg\box_wp13frlg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp13rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp13xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp14bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp14dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp14e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\frlg\box_wp14frlg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp14rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp14xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp15bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp15dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp15e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\frlg\box_wp15frlg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp15rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp15xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp16bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp16dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\e\box_wp16e.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\frlg\box_wp16frlg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\rs\box_wp16rs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp16xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\ao\box_wp17ao.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\b2w2\box_wp17b2w2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp17bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp17dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\hgss\box_wp17hgss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\pt\box_wp17pt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp17xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\ao\box_wp18ao.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\b2w2\box_wp18b2w2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp18bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp18dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\hgss\box_wp18hgss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\pt\box_wp18pt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp18xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\ao\box_wp19ao.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\b2w2\box_wp19b2w2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp19bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp19dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\hgss\box_wp19hgss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\pt\box_wp19pt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp19xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\ao\box_wp20ao.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\b2w2\box_wp20b2w2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp20bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp20dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\hgss\box_wp20hgss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\pt\box_wp20pt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp20xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\ao\box_wp21ao.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\b2w2\box_wp21b2w2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp21bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp21dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\hgss\box_wp21hgss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\pt\box_wp21pt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp21xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\ao\box_wp22ao.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\b2w2\box_wp22b2w2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp22bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp22dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\hgss\box_wp22hgss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\pt\box_wp22pt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp22xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\ao\box_wp23ao.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\b2w2\box_wp23b2w2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp23bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp23dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\hgss\box_wp23hgss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\pt\box_wp23pt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp23xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\ao\box_wp24ao.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\b2w2\box_wp24b2w2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\bw\box_wp24bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\dp\box_wp24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\hgss\box_wp24hgss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\pt\box_wp24pt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\xy\box_wp24xy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\slotDel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\slotSet.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\slotTrans.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\box\slotView.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\item\item_tm.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Resources/byte/personal_b2w2 b/Resources/byte/personal_b2w2 new file mode 100644 index 000000000..dbe6c87e3 Binary files /dev/null and b/Resources/byte/personal_b2w2 differ diff --git a/Resources/byte/personal_bw b/Resources/byte/personal_bw new file mode 100644 index 000000000..78c862814 Binary files /dev/null and b/Resources/byte/personal_bw differ diff --git a/Resources/byte/personal_dp b/Resources/byte/personal_dp new file mode 100644 index 000000000..48373cc00 Binary files /dev/null and b/Resources/byte/personal_dp differ diff --git a/Resources/byte/personal_e b/Resources/byte/personal_e new file mode 100644 index 000000000..798e0e357 Binary files /dev/null and b/Resources/byte/personal_e differ diff --git a/Resources/byte/personal_fr b/Resources/byte/personal_fr new file mode 100644 index 000000000..1ceb3d41d Binary files /dev/null and b/Resources/byte/personal_fr differ diff --git a/Resources/byte/personal_hgss b/Resources/byte/personal_hgss new file mode 100644 index 000000000..c0a9df7fa Binary files /dev/null and b/Resources/byte/personal_hgss differ diff --git a/Resources/byte/personal_lg b/Resources/byte/personal_lg new file mode 100644 index 000000000..1ceb3d41d Binary files /dev/null and b/Resources/byte/personal_lg differ diff --git a/Resources/byte/personal_pt b/Resources/byte/personal_pt new file mode 100644 index 000000000..c16af449e Binary files /dev/null and b/Resources/byte/personal_pt differ diff --git a/Resources/byte/personal_rs b/Resources/byte/personal_rs new file mode 100644 index 000000000..798e0e357 Binary files /dev/null and b/Resources/byte/personal_rs differ diff --git a/Resources/byte/wc6.pkl b/Resources/byte/wc6.pkl index 03b4e7e60..e29dc62e2 100644 Binary files a/Resources/byte/wc6.pkl and b/Resources/byte/wc6.pkl differ diff --git a/Resources/byte/wc6full.pkl b/Resources/byte/wc6full.pkl index c6b1fd53a..1d4806955 100644 Binary files a/Resources/byte/wc6full.pkl and b/Resources/byte/wc6full.pkl differ diff --git a/Resources/img/box/box_wp17o.png b/Resources/img/box/ao/box_wp17ao.png similarity index 100% rename from Resources/img/box/box_wp17o.png rename to Resources/img/box/ao/box_wp17ao.png diff --git a/Resources/img/box/box_wp18o.png b/Resources/img/box/ao/box_wp18ao.png similarity index 100% rename from Resources/img/box/box_wp18o.png rename to Resources/img/box/ao/box_wp18ao.png diff --git a/Resources/img/box/box_wp19o.png b/Resources/img/box/ao/box_wp19ao.png similarity index 100% rename from Resources/img/box/box_wp19o.png rename to Resources/img/box/ao/box_wp19ao.png diff --git a/Resources/img/box/box_wp20o.png b/Resources/img/box/ao/box_wp20ao.png similarity index 100% rename from Resources/img/box/box_wp20o.png rename to Resources/img/box/ao/box_wp20ao.png diff --git a/Resources/img/box/box_wp21o.png b/Resources/img/box/ao/box_wp21ao.png similarity index 100% rename from Resources/img/box/box_wp21o.png rename to Resources/img/box/ao/box_wp21ao.png diff --git a/Resources/img/box/box_wp22o.png b/Resources/img/box/ao/box_wp22ao.png similarity index 100% rename from Resources/img/box/box_wp22o.png rename to Resources/img/box/ao/box_wp22ao.png diff --git a/Resources/img/box/box_wp23o.png b/Resources/img/box/ao/box_wp23ao.png similarity index 100% rename from Resources/img/box/box_wp23o.png rename to Resources/img/box/ao/box_wp23ao.png diff --git a/Resources/img/box/box_wp24o.png b/Resources/img/box/ao/box_wp24ao.png similarity index 100% rename from Resources/img/box/box_wp24o.png rename to Resources/img/box/ao/box_wp24ao.png diff --git a/Resources/img/box/b2w2/box_wp17b2w2.png b/Resources/img/box/b2w2/box_wp17b2w2.png new file mode 100644 index 000000000..8c9904c32 Binary files /dev/null and b/Resources/img/box/b2w2/box_wp17b2w2.png differ diff --git a/Resources/img/box/b2w2/box_wp18b2w2.png b/Resources/img/box/b2w2/box_wp18b2w2.png new file mode 100644 index 000000000..ef9de9670 Binary files /dev/null and b/Resources/img/box/b2w2/box_wp18b2w2.png differ diff --git a/Resources/img/box/b2w2/box_wp19b2w2.png b/Resources/img/box/b2w2/box_wp19b2w2.png new file mode 100644 index 000000000..cd136dc34 Binary files /dev/null and b/Resources/img/box/b2w2/box_wp19b2w2.png differ diff --git a/Resources/img/box/b2w2/box_wp20b2w2.png b/Resources/img/box/b2w2/box_wp20b2w2.png new file mode 100644 index 000000000..f45fa34b6 Binary files /dev/null and b/Resources/img/box/b2w2/box_wp20b2w2.png differ diff --git a/Resources/img/box/b2w2/box_wp21b2w2.png b/Resources/img/box/b2w2/box_wp21b2w2.png new file mode 100644 index 000000000..822ea66ae Binary files /dev/null and b/Resources/img/box/b2w2/box_wp21b2w2.png differ diff --git a/Resources/img/box/b2w2/box_wp22b2w2.png b/Resources/img/box/b2w2/box_wp22b2w2.png new file mode 100644 index 000000000..d455de3c6 Binary files /dev/null and b/Resources/img/box/b2w2/box_wp22b2w2.png differ diff --git a/Resources/img/box/b2w2/box_wp23b2w2.png b/Resources/img/box/b2w2/box_wp23b2w2.png new file mode 100644 index 000000000..3b70fd587 Binary files /dev/null and b/Resources/img/box/b2w2/box_wp23b2w2.png differ diff --git a/Resources/img/box/b2w2/box_wp24b2w2.png b/Resources/img/box/b2w2/box_wp24b2w2.png new file mode 100644 index 000000000..850b52895 Binary files /dev/null and b/Resources/img/box/b2w2/box_wp24b2w2.png differ diff --git a/Resources/img/box/bw/box_wp01bw.png b/Resources/img/box/bw/box_wp01bw.png new file mode 100644 index 000000000..eb0769dc6 Binary files /dev/null and b/Resources/img/box/bw/box_wp01bw.png differ diff --git a/Resources/img/box/bw/box_wp02bw.png b/Resources/img/box/bw/box_wp02bw.png new file mode 100644 index 000000000..15178f4a4 Binary files /dev/null and b/Resources/img/box/bw/box_wp02bw.png differ diff --git a/Resources/img/box/bw/box_wp03bw.png b/Resources/img/box/bw/box_wp03bw.png new file mode 100644 index 000000000..6083b1d4b Binary files /dev/null and b/Resources/img/box/bw/box_wp03bw.png differ diff --git a/Resources/img/box/bw/box_wp04bw.png b/Resources/img/box/bw/box_wp04bw.png new file mode 100644 index 000000000..4ff6a9a18 Binary files /dev/null and b/Resources/img/box/bw/box_wp04bw.png differ diff --git a/Resources/img/box/bw/box_wp05bw.png b/Resources/img/box/bw/box_wp05bw.png new file mode 100644 index 000000000..5a5ad29d2 Binary files /dev/null and b/Resources/img/box/bw/box_wp05bw.png differ diff --git a/Resources/img/box/bw/box_wp06bw.png b/Resources/img/box/bw/box_wp06bw.png new file mode 100644 index 000000000..d64e5a3a7 Binary files /dev/null and b/Resources/img/box/bw/box_wp06bw.png differ diff --git a/Resources/img/box/bw/box_wp07bw.png b/Resources/img/box/bw/box_wp07bw.png new file mode 100644 index 000000000..0f17dc19e Binary files /dev/null and b/Resources/img/box/bw/box_wp07bw.png differ diff --git a/Resources/img/box/bw/box_wp08bw.png b/Resources/img/box/bw/box_wp08bw.png new file mode 100644 index 000000000..a668a18ca Binary files /dev/null and b/Resources/img/box/bw/box_wp08bw.png differ diff --git a/Resources/img/box/bw/box_wp09bw.png b/Resources/img/box/bw/box_wp09bw.png new file mode 100644 index 000000000..9c479d569 Binary files /dev/null and b/Resources/img/box/bw/box_wp09bw.png differ diff --git a/Resources/img/box/bw/box_wp10bw.png b/Resources/img/box/bw/box_wp10bw.png new file mode 100644 index 000000000..3f18663fe Binary files /dev/null and b/Resources/img/box/bw/box_wp10bw.png differ diff --git a/Resources/img/box/bw/box_wp11bw.png b/Resources/img/box/bw/box_wp11bw.png new file mode 100644 index 000000000..0b5b5acee Binary files /dev/null and b/Resources/img/box/bw/box_wp11bw.png differ diff --git a/Resources/img/box/bw/box_wp12bw.png b/Resources/img/box/bw/box_wp12bw.png new file mode 100644 index 000000000..5082da7ce Binary files /dev/null and b/Resources/img/box/bw/box_wp12bw.png differ diff --git a/Resources/img/box/bw/box_wp13bw.png b/Resources/img/box/bw/box_wp13bw.png new file mode 100644 index 000000000..afe892e45 Binary files /dev/null and b/Resources/img/box/bw/box_wp13bw.png differ diff --git a/Resources/img/box/bw/box_wp14bw.png b/Resources/img/box/bw/box_wp14bw.png new file mode 100644 index 000000000..101a47e66 Binary files /dev/null and b/Resources/img/box/bw/box_wp14bw.png differ diff --git a/Resources/img/box/bw/box_wp15bw.png b/Resources/img/box/bw/box_wp15bw.png new file mode 100644 index 000000000..390e4af8a Binary files /dev/null and b/Resources/img/box/bw/box_wp15bw.png differ diff --git a/Resources/img/box/bw/box_wp16bw.png b/Resources/img/box/bw/box_wp16bw.png new file mode 100644 index 000000000..3f7ca915e Binary files /dev/null and b/Resources/img/box/bw/box_wp16bw.png differ diff --git a/Resources/img/box/bw/box_wp17bw.png b/Resources/img/box/bw/box_wp17bw.png new file mode 100644 index 000000000..60a710954 Binary files /dev/null and b/Resources/img/box/bw/box_wp17bw.png differ diff --git a/Resources/img/box/bw/box_wp18bw.png b/Resources/img/box/bw/box_wp18bw.png new file mode 100644 index 000000000..717fdedaf Binary files /dev/null and b/Resources/img/box/bw/box_wp18bw.png differ diff --git a/Resources/img/box/bw/box_wp19bw.png b/Resources/img/box/bw/box_wp19bw.png new file mode 100644 index 000000000..6a49d82d0 Binary files /dev/null and b/Resources/img/box/bw/box_wp19bw.png differ diff --git a/Resources/img/box/bw/box_wp20bw.png b/Resources/img/box/bw/box_wp20bw.png new file mode 100644 index 000000000..44fd667c3 Binary files /dev/null and b/Resources/img/box/bw/box_wp20bw.png differ diff --git a/Resources/img/box/bw/box_wp21bw.png b/Resources/img/box/bw/box_wp21bw.png new file mode 100644 index 000000000..fd9e7c206 Binary files /dev/null and b/Resources/img/box/bw/box_wp21bw.png differ diff --git a/Resources/img/box/bw/box_wp22bw.png b/Resources/img/box/bw/box_wp22bw.png new file mode 100644 index 000000000..9ba8a97e1 Binary files /dev/null and b/Resources/img/box/bw/box_wp22bw.png differ diff --git a/Resources/img/box/bw/box_wp23bw.png b/Resources/img/box/bw/box_wp23bw.png new file mode 100644 index 000000000..3ff284852 Binary files /dev/null and b/Resources/img/box/bw/box_wp23bw.png differ diff --git a/Resources/img/box/bw/box_wp24bw.png b/Resources/img/box/bw/box_wp24bw.png new file mode 100644 index 000000000..b832a3a77 Binary files /dev/null and b/Resources/img/box/bw/box_wp24bw.png differ diff --git a/Resources/img/box/dp/box_wp01dp.png b/Resources/img/box/dp/box_wp01dp.png new file mode 100644 index 000000000..6217cb385 Binary files /dev/null and b/Resources/img/box/dp/box_wp01dp.png differ diff --git a/Resources/img/box/dp/box_wp02dp.png b/Resources/img/box/dp/box_wp02dp.png new file mode 100644 index 000000000..4e590bcfa Binary files /dev/null and b/Resources/img/box/dp/box_wp02dp.png differ diff --git a/Resources/img/box/dp/box_wp03dp.png b/Resources/img/box/dp/box_wp03dp.png new file mode 100644 index 000000000..b842c2800 Binary files /dev/null and b/Resources/img/box/dp/box_wp03dp.png differ diff --git a/Resources/img/box/dp/box_wp04dp.png b/Resources/img/box/dp/box_wp04dp.png new file mode 100644 index 000000000..564372ca8 Binary files /dev/null and b/Resources/img/box/dp/box_wp04dp.png differ diff --git a/Resources/img/box/dp/box_wp05dp.png b/Resources/img/box/dp/box_wp05dp.png new file mode 100644 index 000000000..873203487 Binary files /dev/null and b/Resources/img/box/dp/box_wp05dp.png differ diff --git a/Resources/img/box/dp/box_wp06dp.png b/Resources/img/box/dp/box_wp06dp.png new file mode 100644 index 000000000..6213fba0f Binary files /dev/null and b/Resources/img/box/dp/box_wp06dp.png differ diff --git a/Resources/img/box/dp/box_wp07dp.png b/Resources/img/box/dp/box_wp07dp.png new file mode 100644 index 000000000..44c88b3b8 Binary files /dev/null and b/Resources/img/box/dp/box_wp07dp.png differ diff --git a/Resources/img/box/dp/box_wp08dp.png b/Resources/img/box/dp/box_wp08dp.png new file mode 100644 index 000000000..5be5005e5 Binary files /dev/null and b/Resources/img/box/dp/box_wp08dp.png differ diff --git a/Resources/img/box/dp/box_wp09dp.png b/Resources/img/box/dp/box_wp09dp.png new file mode 100644 index 000000000..de3daed76 Binary files /dev/null and b/Resources/img/box/dp/box_wp09dp.png differ diff --git a/Resources/img/box/dp/box_wp10dp.png b/Resources/img/box/dp/box_wp10dp.png new file mode 100644 index 000000000..02d940dcb Binary files /dev/null and b/Resources/img/box/dp/box_wp10dp.png differ diff --git a/Resources/img/box/dp/box_wp11dp.png b/Resources/img/box/dp/box_wp11dp.png new file mode 100644 index 000000000..7d8fdd427 Binary files /dev/null and b/Resources/img/box/dp/box_wp11dp.png differ diff --git a/Resources/img/box/dp/box_wp12dp.png b/Resources/img/box/dp/box_wp12dp.png new file mode 100644 index 000000000..9fd6edbbf Binary files /dev/null and b/Resources/img/box/dp/box_wp12dp.png differ diff --git a/Resources/img/box/dp/box_wp13dp.png b/Resources/img/box/dp/box_wp13dp.png new file mode 100644 index 000000000..507aa06f3 Binary files /dev/null and b/Resources/img/box/dp/box_wp13dp.png differ diff --git a/Resources/img/box/dp/box_wp14dp.png b/Resources/img/box/dp/box_wp14dp.png new file mode 100644 index 000000000..f4cca608c Binary files /dev/null and b/Resources/img/box/dp/box_wp14dp.png differ diff --git a/Resources/img/box/dp/box_wp15dp.png b/Resources/img/box/dp/box_wp15dp.png new file mode 100644 index 000000000..1a8c9ea2d Binary files /dev/null and b/Resources/img/box/dp/box_wp15dp.png differ diff --git a/Resources/img/box/dp/box_wp16dp.png b/Resources/img/box/dp/box_wp16dp.png new file mode 100644 index 000000000..0a8dcd502 Binary files /dev/null and b/Resources/img/box/dp/box_wp16dp.png differ diff --git a/Resources/img/box/dp/box_wp17dp.png b/Resources/img/box/dp/box_wp17dp.png new file mode 100644 index 000000000..0352b51fa Binary files /dev/null and b/Resources/img/box/dp/box_wp17dp.png differ diff --git a/Resources/img/box/dp/box_wp18dp.png b/Resources/img/box/dp/box_wp18dp.png new file mode 100644 index 000000000..d79e44b68 Binary files /dev/null and b/Resources/img/box/dp/box_wp18dp.png differ diff --git a/Resources/img/box/dp/box_wp19dp.png b/Resources/img/box/dp/box_wp19dp.png new file mode 100644 index 000000000..f34d95ca3 Binary files /dev/null and b/Resources/img/box/dp/box_wp19dp.png differ diff --git a/Resources/img/box/dp/box_wp20dp.png b/Resources/img/box/dp/box_wp20dp.png new file mode 100644 index 000000000..8ce50a44e Binary files /dev/null and b/Resources/img/box/dp/box_wp20dp.png differ diff --git a/Resources/img/box/dp/box_wp21dp.png b/Resources/img/box/dp/box_wp21dp.png new file mode 100644 index 000000000..2829795ff Binary files /dev/null and b/Resources/img/box/dp/box_wp21dp.png differ diff --git a/Resources/img/box/dp/box_wp22dp.png b/Resources/img/box/dp/box_wp22dp.png new file mode 100644 index 000000000..624776667 Binary files /dev/null and b/Resources/img/box/dp/box_wp22dp.png differ diff --git a/Resources/img/box/dp/box_wp23dp.png b/Resources/img/box/dp/box_wp23dp.png new file mode 100644 index 000000000..3a63e5897 Binary files /dev/null and b/Resources/img/box/dp/box_wp23dp.png differ diff --git a/Resources/img/box/dp/box_wp24dp.png b/Resources/img/box/dp/box_wp24dp.png new file mode 100644 index 000000000..211840590 Binary files /dev/null and b/Resources/img/box/dp/box_wp24dp.png differ diff --git a/Resources/img/box/e/box_wp01e.png b/Resources/img/box/e/box_wp01e.png new file mode 100644 index 000000000..f036eb657 Binary files /dev/null and b/Resources/img/box/e/box_wp01e.png differ diff --git a/Resources/img/box/e/box_wp02e.png b/Resources/img/box/e/box_wp02e.png new file mode 100644 index 000000000..3039df29f Binary files /dev/null and b/Resources/img/box/e/box_wp02e.png differ diff --git a/Resources/img/box/e/box_wp03e.png b/Resources/img/box/e/box_wp03e.png new file mode 100644 index 000000000..8e5896387 Binary files /dev/null and b/Resources/img/box/e/box_wp03e.png differ diff --git a/Resources/img/box/e/box_wp04e.png b/Resources/img/box/e/box_wp04e.png new file mode 100644 index 000000000..6a02eb1fe Binary files /dev/null and b/Resources/img/box/e/box_wp04e.png differ diff --git a/Resources/img/box/e/box_wp05e.png b/Resources/img/box/e/box_wp05e.png new file mode 100644 index 000000000..9110e6b51 Binary files /dev/null and b/Resources/img/box/e/box_wp05e.png differ diff --git a/Resources/img/box/e/box_wp06e.png b/Resources/img/box/e/box_wp06e.png new file mode 100644 index 000000000..a4493ec92 Binary files /dev/null and b/Resources/img/box/e/box_wp06e.png differ diff --git a/Resources/img/box/e/box_wp07e.png b/Resources/img/box/e/box_wp07e.png new file mode 100644 index 000000000..008326b40 Binary files /dev/null and b/Resources/img/box/e/box_wp07e.png differ diff --git a/Resources/img/box/e/box_wp08e.png b/Resources/img/box/e/box_wp08e.png new file mode 100644 index 000000000..dcd5e426c Binary files /dev/null and b/Resources/img/box/e/box_wp08e.png differ diff --git a/Resources/img/box/e/box_wp09e.png b/Resources/img/box/e/box_wp09e.png new file mode 100644 index 000000000..7f11bbd5f Binary files /dev/null and b/Resources/img/box/e/box_wp09e.png differ diff --git a/Resources/img/box/e/box_wp10e.png b/Resources/img/box/e/box_wp10e.png new file mode 100644 index 000000000..bc2646865 Binary files /dev/null and b/Resources/img/box/e/box_wp10e.png differ diff --git a/Resources/img/box/e/box_wp11e.png b/Resources/img/box/e/box_wp11e.png new file mode 100644 index 000000000..8e664092b Binary files /dev/null and b/Resources/img/box/e/box_wp11e.png differ diff --git a/Resources/img/box/e/box_wp12e.png b/Resources/img/box/e/box_wp12e.png new file mode 100644 index 000000000..fc32df7f4 Binary files /dev/null and b/Resources/img/box/e/box_wp12e.png differ diff --git a/Resources/img/box/e/box_wp13e.png b/Resources/img/box/e/box_wp13e.png new file mode 100644 index 000000000..99b5f9514 Binary files /dev/null and b/Resources/img/box/e/box_wp13e.png differ diff --git a/Resources/img/box/e/box_wp14e.png b/Resources/img/box/e/box_wp14e.png new file mode 100644 index 000000000..be4c51340 Binary files /dev/null and b/Resources/img/box/e/box_wp14e.png differ diff --git a/Resources/img/box/e/box_wp15e.png b/Resources/img/box/e/box_wp15e.png new file mode 100644 index 000000000..210b2da10 Binary files /dev/null and b/Resources/img/box/e/box_wp15e.png differ diff --git a/Resources/img/box/e/box_wp16e.png b/Resources/img/box/e/box_wp16e.png new file mode 100644 index 000000000..d47eac4ec Binary files /dev/null and b/Resources/img/box/e/box_wp16e.png differ diff --git a/Resources/img/box/frlg/box_wp13frlg.png b/Resources/img/box/frlg/box_wp13frlg.png new file mode 100644 index 000000000..53b657170 Binary files /dev/null and b/Resources/img/box/frlg/box_wp13frlg.png differ diff --git a/Resources/img/box/frlg/box_wp14frlg.png b/Resources/img/box/frlg/box_wp14frlg.png new file mode 100644 index 000000000..7d23ff0c1 Binary files /dev/null and b/Resources/img/box/frlg/box_wp14frlg.png differ diff --git a/Resources/img/box/frlg/box_wp15frlg.png b/Resources/img/box/frlg/box_wp15frlg.png new file mode 100644 index 000000000..c6bdc9332 Binary files /dev/null and b/Resources/img/box/frlg/box_wp15frlg.png differ diff --git a/Resources/img/box/frlg/box_wp16frlg.png b/Resources/img/box/frlg/box_wp16frlg.png new file mode 100644 index 000000000..53e3b6a7c Binary files /dev/null and b/Resources/img/box/frlg/box_wp16frlg.png differ diff --git a/Resources/img/box/hgss/box_wp17hgss.png b/Resources/img/box/hgss/box_wp17hgss.png new file mode 100644 index 000000000..cc6826639 Binary files /dev/null and b/Resources/img/box/hgss/box_wp17hgss.png differ diff --git a/Resources/img/box/hgss/box_wp18hgss.png b/Resources/img/box/hgss/box_wp18hgss.png new file mode 100644 index 000000000..cfb329352 Binary files /dev/null and b/Resources/img/box/hgss/box_wp18hgss.png differ diff --git a/Resources/img/box/hgss/box_wp19hgss.png b/Resources/img/box/hgss/box_wp19hgss.png new file mode 100644 index 000000000..231c51216 Binary files /dev/null and b/Resources/img/box/hgss/box_wp19hgss.png differ diff --git a/Resources/img/box/hgss/box_wp20hgss.png b/Resources/img/box/hgss/box_wp20hgss.png new file mode 100644 index 000000000..b0b672f5d Binary files /dev/null and b/Resources/img/box/hgss/box_wp20hgss.png differ diff --git a/Resources/img/box/hgss/box_wp21hgss.png b/Resources/img/box/hgss/box_wp21hgss.png new file mode 100644 index 000000000..44d35cd22 Binary files /dev/null and b/Resources/img/box/hgss/box_wp21hgss.png differ diff --git a/Resources/img/box/hgss/box_wp22hgss.png b/Resources/img/box/hgss/box_wp22hgss.png new file mode 100644 index 000000000..c20e297e9 Binary files /dev/null and b/Resources/img/box/hgss/box_wp22hgss.png differ diff --git a/Resources/img/box/hgss/box_wp23hgss.png b/Resources/img/box/hgss/box_wp23hgss.png new file mode 100644 index 000000000..a7d8db0ca Binary files /dev/null and b/Resources/img/box/hgss/box_wp23hgss.png differ diff --git a/Resources/img/box/hgss/box_wp24hgss.png b/Resources/img/box/hgss/box_wp24hgss.png new file mode 100644 index 000000000..92aecb2b4 Binary files /dev/null and b/Resources/img/box/hgss/box_wp24hgss.png differ diff --git a/Resources/img/box/pt/box_wp17pt.png b/Resources/img/box/pt/box_wp17pt.png new file mode 100644 index 000000000..7e0b876cc Binary files /dev/null and b/Resources/img/box/pt/box_wp17pt.png differ diff --git a/Resources/img/box/pt/box_wp18pt.png b/Resources/img/box/pt/box_wp18pt.png new file mode 100644 index 000000000..fb2bf7a27 Binary files /dev/null and b/Resources/img/box/pt/box_wp18pt.png differ diff --git a/Resources/img/box/pt/box_wp19pt.png b/Resources/img/box/pt/box_wp19pt.png new file mode 100644 index 000000000..a4ce1dd37 Binary files /dev/null and b/Resources/img/box/pt/box_wp19pt.png differ diff --git a/Resources/img/box/pt/box_wp20pt.png b/Resources/img/box/pt/box_wp20pt.png new file mode 100644 index 000000000..c733439ff Binary files /dev/null and b/Resources/img/box/pt/box_wp20pt.png differ diff --git a/Resources/img/box/pt/box_wp21pt.png b/Resources/img/box/pt/box_wp21pt.png new file mode 100644 index 000000000..f3d6c0089 Binary files /dev/null and b/Resources/img/box/pt/box_wp21pt.png differ diff --git a/Resources/img/box/pt/box_wp22pt.png b/Resources/img/box/pt/box_wp22pt.png new file mode 100644 index 000000000..1803b4e0b Binary files /dev/null and b/Resources/img/box/pt/box_wp22pt.png differ diff --git a/Resources/img/box/pt/box_wp23pt.png b/Resources/img/box/pt/box_wp23pt.png new file mode 100644 index 000000000..831418a52 Binary files /dev/null and b/Resources/img/box/pt/box_wp23pt.png differ diff --git a/Resources/img/box/pt/box_wp24pt.png b/Resources/img/box/pt/box_wp24pt.png new file mode 100644 index 000000000..31dc47541 Binary files /dev/null and b/Resources/img/box/pt/box_wp24pt.png differ diff --git a/Resources/img/box/rs/box_wp01rs.png b/Resources/img/box/rs/box_wp01rs.png new file mode 100644 index 000000000..e7391bae2 Binary files /dev/null and b/Resources/img/box/rs/box_wp01rs.png differ diff --git a/Resources/img/box/rs/box_wp02rs.png b/Resources/img/box/rs/box_wp02rs.png new file mode 100644 index 000000000..1637d4f09 Binary files /dev/null and b/Resources/img/box/rs/box_wp02rs.png differ diff --git a/Resources/img/box/rs/box_wp03rs.png b/Resources/img/box/rs/box_wp03rs.png new file mode 100644 index 000000000..67d07580e Binary files /dev/null and b/Resources/img/box/rs/box_wp03rs.png differ diff --git a/Resources/img/box/rs/box_wp04rs.png b/Resources/img/box/rs/box_wp04rs.png new file mode 100644 index 000000000..d3546572b Binary files /dev/null and b/Resources/img/box/rs/box_wp04rs.png differ diff --git a/Resources/img/box/rs/box_wp05rs.png b/Resources/img/box/rs/box_wp05rs.png new file mode 100644 index 000000000..b6eadad43 Binary files /dev/null and b/Resources/img/box/rs/box_wp05rs.png differ diff --git a/Resources/img/box/rs/box_wp06rs.png b/Resources/img/box/rs/box_wp06rs.png new file mode 100644 index 000000000..473a3ff4b Binary files /dev/null and b/Resources/img/box/rs/box_wp06rs.png differ diff --git a/Resources/img/box/rs/box_wp07rs.png b/Resources/img/box/rs/box_wp07rs.png new file mode 100644 index 000000000..0bc72dd23 Binary files /dev/null and b/Resources/img/box/rs/box_wp07rs.png differ diff --git a/Resources/img/box/rs/box_wp08rs.png b/Resources/img/box/rs/box_wp08rs.png new file mode 100644 index 000000000..4f7a794a9 Binary files /dev/null and b/Resources/img/box/rs/box_wp08rs.png differ diff --git a/Resources/img/box/rs/box_wp09rs.png b/Resources/img/box/rs/box_wp09rs.png new file mode 100644 index 000000000..d4d1c4b25 Binary files /dev/null and b/Resources/img/box/rs/box_wp09rs.png differ diff --git a/Resources/img/box/rs/box_wp10rs.png b/Resources/img/box/rs/box_wp10rs.png new file mode 100644 index 000000000..1328efd22 Binary files /dev/null and b/Resources/img/box/rs/box_wp10rs.png differ diff --git a/Resources/img/box/rs/box_wp11rs.png b/Resources/img/box/rs/box_wp11rs.png new file mode 100644 index 000000000..4dab41349 Binary files /dev/null and b/Resources/img/box/rs/box_wp11rs.png differ diff --git a/Resources/img/box/rs/box_wp12rs.png b/Resources/img/box/rs/box_wp12rs.png new file mode 100644 index 000000000..87582c4f6 Binary files /dev/null and b/Resources/img/box/rs/box_wp12rs.png differ diff --git a/Resources/img/box/rs/box_wp13rs.png b/Resources/img/box/rs/box_wp13rs.png new file mode 100644 index 000000000..a0417a6b3 Binary files /dev/null and b/Resources/img/box/rs/box_wp13rs.png differ diff --git a/Resources/img/box/rs/box_wp14rs.png b/Resources/img/box/rs/box_wp14rs.png new file mode 100644 index 000000000..f031f893d Binary files /dev/null and b/Resources/img/box/rs/box_wp14rs.png differ diff --git a/Resources/img/box/rs/box_wp15rs.png b/Resources/img/box/rs/box_wp15rs.png new file mode 100644 index 000000000..6be9d51ae Binary files /dev/null and b/Resources/img/box/rs/box_wp15rs.png differ diff --git a/Resources/img/box/rs/box_wp16rs.png b/Resources/img/box/rs/box_wp16rs.png new file mode 100644 index 000000000..dd7e0d10f Binary files /dev/null and b/Resources/img/box/rs/box_wp16rs.png differ diff --git a/Resources/img/box/box_wp01.png b/Resources/img/box/xy/box_wp01xy.png similarity index 100% rename from Resources/img/box/box_wp01.png rename to Resources/img/box/xy/box_wp01xy.png diff --git a/Resources/img/box/box_wp02.png b/Resources/img/box/xy/box_wp02xy.png similarity index 100% rename from Resources/img/box/box_wp02.png rename to Resources/img/box/xy/box_wp02xy.png diff --git a/Resources/img/box/box_wp03.png b/Resources/img/box/xy/box_wp03xy.png similarity index 100% rename from Resources/img/box/box_wp03.png rename to Resources/img/box/xy/box_wp03xy.png diff --git a/Resources/img/box/box_wp04.png b/Resources/img/box/xy/box_wp04xy.png similarity index 100% rename from Resources/img/box/box_wp04.png rename to Resources/img/box/xy/box_wp04xy.png diff --git a/Resources/img/box/box_wp05.png b/Resources/img/box/xy/box_wp05xy.png similarity index 100% rename from Resources/img/box/box_wp05.png rename to Resources/img/box/xy/box_wp05xy.png diff --git a/Resources/img/box/box_wp06.png b/Resources/img/box/xy/box_wp06xy.png similarity index 100% rename from Resources/img/box/box_wp06.png rename to Resources/img/box/xy/box_wp06xy.png diff --git a/Resources/img/box/box_wp07.png b/Resources/img/box/xy/box_wp07xy.png similarity index 100% rename from Resources/img/box/box_wp07.png rename to Resources/img/box/xy/box_wp07xy.png diff --git a/Resources/img/box/box_wp08.png b/Resources/img/box/xy/box_wp08xy.png similarity index 100% rename from Resources/img/box/box_wp08.png rename to Resources/img/box/xy/box_wp08xy.png diff --git a/Resources/img/box/box_wp09.png b/Resources/img/box/xy/box_wp09xy.png similarity index 100% rename from Resources/img/box/box_wp09.png rename to Resources/img/box/xy/box_wp09xy.png diff --git a/Resources/img/box/box_wp10.png b/Resources/img/box/xy/box_wp10xy.png similarity index 100% rename from Resources/img/box/box_wp10.png rename to Resources/img/box/xy/box_wp10xy.png diff --git a/Resources/img/box/box_wp11.png b/Resources/img/box/xy/box_wp11xy.png similarity index 100% rename from Resources/img/box/box_wp11.png rename to Resources/img/box/xy/box_wp11xy.png diff --git a/Resources/img/box/box_wp12.png b/Resources/img/box/xy/box_wp12xy.png similarity index 100% rename from Resources/img/box/box_wp12.png rename to Resources/img/box/xy/box_wp12xy.png diff --git a/Resources/img/box/box_wp13.png b/Resources/img/box/xy/box_wp13xy.png similarity index 100% rename from Resources/img/box/box_wp13.png rename to Resources/img/box/xy/box_wp13xy.png diff --git a/Resources/img/box/box_wp14.png b/Resources/img/box/xy/box_wp14xy.png similarity index 100% rename from Resources/img/box/box_wp14.png rename to Resources/img/box/xy/box_wp14xy.png diff --git a/Resources/img/box/box_wp15.png b/Resources/img/box/xy/box_wp15xy.png similarity index 100% rename from Resources/img/box/box_wp15.png rename to Resources/img/box/xy/box_wp15xy.png diff --git a/Resources/img/box/box_wp16.png b/Resources/img/box/xy/box_wp16xy.png similarity index 100% rename from Resources/img/box/box_wp16.png rename to Resources/img/box/xy/box_wp16xy.png diff --git a/Resources/img/box/box_wp17.png b/Resources/img/box/xy/box_wp17xy.png similarity index 100% rename from Resources/img/box/box_wp17.png rename to Resources/img/box/xy/box_wp17xy.png diff --git a/Resources/img/box/box_wp18.png b/Resources/img/box/xy/box_wp18xy.png similarity index 100% rename from Resources/img/box/box_wp18.png rename to Resources/img/box/xy/box_wp18xy.png diff --git a/Resources/img/box/box_wp19.png b/Resources/img/box/xy/box_wp19xy.png similarity index 100% rename from Resources/img/box/box_wp19.png rename to Resources/img/box/xy/box_wp19xy.png diff --git a/Resources/img/box/box_wp20.png b/Resources/img/box/xy/box_wp20xy.png similarity index 100% rename from Resources/img/box/box_wp20.png rename to Resources/img/box/xy/box_wp20xy.png diff --git a/Resources/img/box/box_wp21.png b/Resources/img/box/xy/box_wp21xy.png similarity index 100% rename from Resources/img/box/box_wp21.png rename to Resources/img/box/xy/box_wp21xy.png diff --git a/Resources/img/box/box_wp22.png b/Resources/img/box/xy/box_wp22xy.png similarity index 100% rename from Resources/img/box/box_wp22.png rename to Resources/img/box/xy/box_wp22xy.png diff --git a/Resources/img/box/box_wp23.png b/Resources/img/box/xy/box_wp23xy.png similarity index 100% rename from Resources/img/box/box_wp23.png rename to Resources/img/box/xy/box_wp23xy.png diff --git a/Resources/img/box/box_wp24.png b/Resources/img/box/xy/box_wp24xy.png similarity index 100% rename from Resources/img/box/box_wp24.png rename to Resources/img/box/xy/box_wp24xy.png diff --git a/Resources/img/item/item_tm.png b/Resources/img/item/item_tm.png new file mode 100644 index 000000000..1d170e8b7 Binary files /dev/null and b/Resources/img/item/item_tm.png differ diff --git a/Resources/img/ribbons/own_no.png b/Resources/img/ribbons/own_no.png deleted file mode 100644 index 10e8a2d79..000000000 Binary files a/Resources/img/ribbons/own_no.png and /dev/null differ diff --git a/Resources/img/ribbons/own_yes.png b/Resources/img/ribbons/own_yes.png deleted file mode 100644 index 8d62c337d..000000000 Binary files a/Resources/img/ribbons/own_yes.png and /dev/null differ diff --git a/Resources/img/ribbons/ribbonability.png b/Resources/img/ribbons/ribbonability.png new file mode 100644 index 000000000..5d610e7ea Binary files /dev/null and b/Resources/img/ribbons/ribbonability.png differ diff --git a/Resources/img/ribbons/ribbonabilitydouble.png b/Resources/img/ribbons/ribbonabilitydouble.png new file mode 100644 index 000000000..5b27db198 Binary files /dev/null and b/Resources/img/ribbons/ribbonabilitydouble.png differ diff --git a/Resources/img/ribbons/ribbonabilitygreat.png b/Resources/img/ribbons/ribbonabilitygreat.png new file mode 100644 index 000000000..bfa0cf965 Binary files /dev/null and b/Resources/img/ribbons/ribbonabilitygreat.png differ diff --git a/Resources/img/ribbons/ribbonabilitymulti.png b/Resources/img/ribbons/ribbonabilitymulti.png new file mode 100644 index 000000000..0ebe4e14c Binary files /dev/null and b/Resources/img/ribbons/ribbonabilitymulti.png differ diff --git a/Resources/img/ribbons/ribbonabilitypair.png b/Resources/img/ribbons/ribbonabilitypair.png new file mode 100644 index 000000000..94a9cbeb2 Binary files /dev/null and b/Resources/img/ribbons/ribbonabilitypair.png differ diff --git a/Resources/img/ribbons/ribbonabilityworld.png b/Resources/img/ribbons/ribbonabilityworld.png new file mode 100644 index 000000000..30e959da2 Binary files /dev/null and b/Resources/img/ribbons/ribbonabilityworld.png differ diff --git a/Resources/img/ribbons/alert.png b/Resources/img/ribbons/ribbonalert.png similarity index 100% rename from Resources/img/ribbons/alert.png rename to Resources/img/ribbons/ribbonalert.png diff --git a/Resources/img/ribbons/artist.png b/Resources/img/ribbons/ribbonartist.png similarity index 100% rename from Resources/img/ribbons/artist.png rename to Resources/img/ribbons/ribbonartist.png diff --git a/Resources/img/ribbons/expertbattler.png b/Resources/img/ribbons/ribbonbattlerexpert.png similarity index 100% rename from Resources/img/ribbons/expertbattler.png rename to Resources/img/ribbons/ribbonbattlerexpert.png diff --git a/Resources/img/ribbons/skillfullbattler.png b/Resources/img/ribbons/ribbonbattlerskillful.png similarity index 100% rename from Resources/img/ribbons/skillfullbattler.png rename to Resources/img/ribbons/ribbonbattlerskillful.png diff --git a/Resources/img/ribbons/bestfriends.png b/Resources/img/ribbons/ribbonbestfriends.png similarity index 100% rename from Resources/img/ribbons/bestfriends.png rename to Resources/img/ribbons/ribbonbestfriends.png diff --git a/Resources/img/ribbons/birthday.png b/Resources/img/ribbons/ribbonbirthday.png similarity index 100% rename from Resources/img/ribbons/birthday.png rename to Resources/img/ribbons/ribbonbirthday.png diff --git a/Resources/img/ribbons/careless.png b/Resources/img/ribbons/ribboncareless.png similarity index 100% rename from Resources/img/ribbons/careless.png rename to Resources/img/ribbons/ribboncareless.png diff --git a/Resources/img/ribbons/battlechamp.png b/Resources/img/ribbons/ribbonchampionbattle.png similarity index 100% rename from Resources/img/ribbons/battlechamp.png rename to Resources/img/ribbons/ribbonchampionbattle.png diff --git a/Resources/img/ribbons/hoennchamp.png b/Resources/img/ribbons/ribbonchampiong3hoenn.png similarity index 100% rename from Resources/img/ribbons/hoennchamp.png rename to Resources/img/ribbons/ribbonchampiong3hoenn.png diff --git a/Resources/img/ribbons/ribbon_40.png b/Resources/img/ribbons/ribbonchampiong6hoenn.png similarity index 100% rename from Resources/img/ribbons/ribbon_40.png rename to Resources/img/ribbons/ribbonchampiong6hoenn.png diff --git a/Resources/img/ribbons/kaloschamp.png b/Resources/img/ribbons/ribbonchampionkalos.png similarity index 100% rename from Resources/img/ribbons/kaloschamp.png rename to Resources/img/ribbons/ribbonchampionkalos.png diff --git a/Resources/img/ribbons/nationalchamp.png b/Resources/img/ribbons/ribbonchampionnational.png similarity index 100% rename from Resources/img/ribbons/nationalchamp.png rename to Resources/img/ribbons/ribbonchampionnational.png diff --git a/Resources/img/ribbons/regionalchamp.png b/Resources/img/ribbons/ribbonchampionregional.png similarity index 100% rename from Resources/img/ribbons/regionalchamp.png rename to Resources/img/ribbons/ribbonchampionregional.png diff --git a/Resources/img/ribbons/sinnohchamp.png b/Resources/img/ribbons/ribbonchampionsinnoh.png similarity index 100% rename from Resources/img/ribbons/sinnohchamp.png rename to Resources/img/ribbons/ribbonchampionsinnoh.png diff --git a/Resources/img/ribbons/worldchamp.png b/Resources/img/ribbons/ribbonchampionworld.png similarity index 100% rename from Resources/img/ribbons/worldchamp.png rename to Resources/img/ribbons/ribbonchampionworld.png diff --git a/Resources/img/ribbons/classic.png b/Resources/img/ribbons/ribbonclassic.png similarity index 100% rename from Resources/img/ribbons/classic.png rename to Resources/img/ribbons/ribbonclassic.png diff --git a/Resources/img/ribbons/ribbon_41.png b/Resources/img/ribbons/ribbonconteststar.png similarity index 100% rename from Resources/img/ribbons/ribbon_41.png rename to Resources/img/ribbons/ribbonconteststar.png diff --git a/Resources/img/ribbons/battlememory.png b/Resources/img/ribbons/ribboncountmemorybattle.png similarity index 100% rename from Resources/img/ribbons/battlememory.png rename to Resources/img/ribbons/ribboncountmemorybattle.png diff --git a/Resources/img/ribbons/battlememory2.png b/Resources/img/ribbons/ribboncountmemorybattle2.png similarity index 100% rename from Resources/img/ribbons/battlememory2.png rename to Resources/img/ribbons/ribboncountmemorybattle2.png diff --git a/Resources/img/ribbons/contestmemory.png b/Resources/img/ribbons/ribboncountmemorycontest.png similarity index 100% rename from Resources/img/ribbons/contestmemory.png rename to Resources/img/ribbons/ribboncountmemorycontest.png diff --git a/Resources/img/ribbons/contestmemory2.png b/Resources/img/ribbons/ribboncountmemorycontest2.png similarity index 100% rename from Resources/img/ribbons/contestmemory2.png rename to Resources/img/ribbons/ribboncountmemorycontest2.png diff --git a/Resources/img/ribbons/country.png b/Resources/img/ribbons/ribboncountry.png similarity index 100% rename from Resources/img/ribbons/country.png rename to Resources/img/ribbons/ribboncountry.png diff --git a/Resources/img/ribbons/downcast.png b/Resources/img/ribbons/ribbondowncast.png similarity index 100% rename from Resources/img/ribbons/downcast.png rename to Resources/img/ribbons/ribbondowncast.png diff --git a/Resources/img/ribbons/earth.png b/Resources/img/ribbons/ribbonearth.png similarity index 100% rename from Resources/img/ribbons/earth.png rename to Resources/img/ribbons/ribbonearth.png diff --git a/Resources/img/ribbons/effort.png b/Resources/img/ribbons/ribboneffort.png similarity index 100% rename from Resources/img/ribbons/effort.png rename to Resources/img/ribbons/ribboneffort.png diff --git a/Resources/img/ribbons/event.png b/Resources/img/ribbons/ribbonevent.png similarity index 100% rename from Resources/img/ribbons/event.png rename to Resources/img/ribbons/ribbonevent.png diff --git a/Resources/img/ribbons/footprint.png b/Resources/img/ribbons/ribbonfootprint.png similarity index 100% rename from Resources/img/ribbons/footprint.png rename to Resources/img/ribbons/ribbonfootprint.png diff --git a/Resources/img/ribbons/ribbong3beauty.png b/Resources/img/ribbons/ribbong3beauty.png new file mode 100644 index 000000000..550468fe0 Binary files /dev/null and b/Resources/img/ribbons/ribbong3beauty.png differ diff --git a/Resources/img/ribbons/ribbong3beautyhyper.png b/Resources/img/ribbons/ribbong3beautyhyper.png new file mode 100644 index 000000000..342b8a9e0 Binary files /dev/null and b/Resources/img/ribbons/ribbong3beautyhyper.png differ diff --git a/Resources/img/ribbons/ribbong3beautymaster.png b/Resources/img/ribbons/ribbong3beautymaster.png new file mode 100644 index 000000000..ca2d56bf5 Binary files /dev/null and b/Resources/img/ribbons/ribbong3beautymaster.png differ diff --git a/Resources/img/ribbons/ribbong3beautysuper.png b/Resources/img/ribbons/ribbong3beautysuper.png new file mode 100644 index 000000000..13ec2950f Binary files /dev/null and b/Resources/img/ribbons/ribbong3beautysuper.png differ diff --git a/Resources/img/ribbons/ribbong3cool.png b/Resources/img/ribbons/ribbong3cool.png new file mode 100644 index 000000000..34d3c1e1f Binary files /dev/null and b/Resources/img/ribbons/ribbong3cool.png differ diff --git a/Resources/img/ribbons/ribbong3coolhyper.png b/Resources/img/ribbons/ribbong3coolhyper.png new file mode 100644 index 000000000..d020ef905 Binary files /dev/null and b/Resources/img/ribbons/ribbong3coolhyper.png differ diff --git a/Resources/img/ribbons/ribbong3coolmaster.png b/Resources/img/ribbons/ribbong3coolmaster.png new file mode 100644 index 000000000..f119bbbb9 Binary files /dev/null and b/Resources/img/ribbons/ribbong3coolmaster.png differ diff --git a/Resources/img/ribbons/ribbong3coolsuper.png b/Resources/img/ribbons/ribbong3coolsuper.png new file mode 100644 index 000000000..5f2beae09 Binary files /dev/null and b/Resources/img/ribbons/ribbong3coolsuper.png differ diff --git a/Resources/img/ribbons/ribbong3cute.png b/Resources/img/ribbons/ribbong3cute.png new file mode 100644 index 000000000..99a7ab433 Binary files /dev/null and b/Resources/img/ribbons/ribbong3cute.png differ diff --git a/Resources/img/ribbons/ribbong3cutehyper.png b/Resources/img/ribbons/ribbong3cutehyper.png new file mode 100644 index 000000000..57348fe27 Binary files /dev/null and b/Resources/img/ribbons/ribbong3cutehyper.png differ diff --git a/Resources/img/ribbons/ribbong3cutemaster.png b/Resources/img/ribbons/ribbong3cutemaster.png new file mode 100644 index 000000000..b4d5360d7 Binary files /dev/null and b/Resources/img/ribbons/ribbong3cutemaster.png differ diff --git a/Resources/img/ribbons/ribbong3cutesuper.png b/Resources/img/ribbons/ribbong3cutesuper.png new file mode 100644 index 000000000..dd436a767 Binary files /dev/null and b/Resources/img/ribbons/ribbong3cutesuper.png differ diff --git a/Resources/img/ribbons/ribbong3smart.png b/Resources/img/ribbons/ribbong3smart.png new file mode 100644 index 000000000..5315269e3 Binary files /dev/null and b/Resources/img/ribbons/ribbong3smart.png differ diff --git a/Resources/img/ribbons/ribbong3smarthyper.png b/Resources/img/ribbons/ribbong3smarthyper.png new file mode 100644 index 000000000..862144767 Binary files /dev/null and b/Resources/img/ribbons/ribbong3smarthyper.png differ diff --git a/Resources/img/ribbons/ribbong3smartmaster.png b/Resources/img/ribbons/ribbong3smartmaster.png new file mode 100644 index 000000000..44de95765 Binary files /dev/null and b/Resources/img/ribbons/ribbong3smartmaster.png differ diff --git a/Resources/img/ribbons/ribbong3smartsuper.png b/Resources/img/ribbons/ribbong3smartsuper.png new file mode 100644 index 000000000..076aa7271 Binary files /dev/null and b/Resources/img/ribbons/ribbong3smartsuper.png differ diff --git a/Resources/img/ribbons/ribbong3tough.png b/Resources/img/ribbons/ribbong3tough.png new file mode 100644 index 000000000..370b9d150 Binary files /dev/null and b/Resources/img/ribbons/ribbong3tough.png differ diff --git a/Resources/img/ribbons/ribbong3toughhyper.png b/Resources/img/ribbons/ribbong3toughhyper.png new file mode 100644 index 000000000..197b64a97 Binary files /dev/null and b/Resources/img/ribbons/ribbong3toughhyper.png differ diff --git a/Resources/img/ribbons/ribbong3toughmaster.png b/Resources/img/ribbons/ribbong3toughmaster.png new file mode 100644 index 000000000..a613205ce Binary files /dev/null and b/Resources/img/ribbons/ribbong3toughmaster.png differ diff --git a/Resources/img/ribbons/ribbong3toughsuper.png b/Resources/img/ribbons/ribbong3toughsuper.png new file mode 100644 index 000000000..eaa280829 Binary files /dev/null and b/Resources/img/ribbons/ribbong3toughsuper.png differ diff --git a/Resources/img/ribbons/ribbong4beauty.png b/Resources/img/ribbons/ribbong4beauty.png new file mode 100644 index 000000000..4ecf4343a Binary files /dev/null and b/Resources/img/ribbons/ribbong4beauty.png differ diff --git a/Resources/img/ribbons/ribbong4beautygreat.png b/Resources/img/ribbons/ribbong4beautygreat.png new file mode 100644 index 000000000..49ce262e6 Binary files /dev/null and b/Resources/img/ribbons/ribbong4beautygreat.png differ diff --git a/Resources/img/ribbons/ribbong4beautymaster.png b/Resources/img/ribbons/ribbong4beautymaster.png new file mode 100644 index 000000000..0a2a4f120 Binary files /dev/null and b/Resources/img/ribbons/ribbong4beautymaster.png differ diff --git a/Resources/img/ribbons/ribbong4beautyultra.png b/Resources/img/ribbons/ribbong4beautyultra.png new file mode 100644 index 000000000..9986f63c3 Binary files /dev/null and b/Resources/img/ribbons/ribbong4beautyultra.png differ diff --git a/Resources/img/ribbons/ribbong4cool.png b/Resources/img/ribbons/ribbong4cool.png new file mode 100644 index 000000000..8821c7d59 Binary files /dev/null and b/Resources/img/ribbons/ribbong4cool.png differ diff --git a/Resources/img/ribbons/ribbong4coolgreat.png b/Resources/img/ribbons/ribbong4coolgreat.png new file mode 100644 index 000000000..a1d8ce065 Binary files /dev/null and b/Resources/img/ribbons/ribbong4coolgreat.png differ diff --git a/Resources/img/ribbons/ribbong4coolmaster.png b/Resources/img/ribbons/ribbong4coolmaster.png new file mode 100644 index 000000000..4ebf34aa1 Binary files /dev/null and b/Resources/img/ribbons/ribbong4coolmaster.png differ diff --git a/Resources/img/ribbons/ribbong4coolultra.png b/Resources/img/ribbons/ribbong4coolultra.png new file mode 100644 index 000000000..3a58b487a Binary files /dev/null and b/Resources/img/ribbons/ribbong4coolultra.png differ diff --git a/Resources/img/ribbons/ribbong4cute.png b/Resources/img/ribbons/ribbong4cute.png new file mode 100644 index 000000000..c8532a00d Binary files /dev/null and b/Resources/img/ribbons/ribbong4cute.png differ diff --git a/Resources/img/ribbons/ribbong4cutegreat.png b/Resources/img/ribbons/ribbong4cutegreat.png new file mode 100644 index 000000000..b208d7266 Binary files /dev/null and b/Resources/img/ribbons/ribbong4cutegreat.png differ diff --git a/Resources/img/ribbons/ribbong4cutemaster.png b/Resources/img/ribbons/ribbong4cutemaster.png new file mode 100644 index 000000000..5d2bf6dee Binary files /dev/null and b/Resources/img/ribbons/ribbong4cutemaster.png differ diff --git a/Resources/img/ribbons/ribbong4cuteultra.png b/Resources/img/ribbons/ribbong4cuteultra.png new file mode 100644 index 000000000..f3a6d1402 Binary files /dev/null and b/Resources/img/ribbons/ribbong4cuteultra.png differ diff --git a/Resources/img/ribbons/ribbong4smart.png b/Resources/img/ribbons/ribbong4smart.png new file mode 100644 index 000000000..8c96f94ec Binary files /dev/null and b/Resources/img/ribbons/ribbong4smart.png differ diff --git a/Resources/img/ribbons/ribbong4smartgreat.png b/Resources/img/ribbons/ribbong4smartgreat.png new file mode 100644 index 000000000..0bf15a4e0 Binary files /dev/null and b/Resources/img/ribbons/ribbong4smartgreat.png differ diff --git a/Resources/img/ribbons/ribbong4smartmaster.png b/Resources/img/ribbons/ribbong4smartmaster.png new file mode 100644 index 000000000..fa8be5cec Binary files /dev/null and b/Resources/img/ribbons/ribbong4smartmaster.png differ diff --git a/Resources/img/ribbons/ribbong4smartultra.png b/Resources/img/ribbons/ribbong4smartultra.png new file mode 100644 index 000000000..ab4e9e3a1 Binary files /dev/null and b/Resources/img/ribbons/ribbong4smartultra.png differ diff --git a/Resources/img/ribbons/ribbong4tough.png b/Resources/img/ribbons/ribbong4tough.png new file mode 100644 index 000000000..72b9043e8 Binary files /dev/null and b/Resources/img/ribbons/ribbong4tough.png differ diff --git a/Resources/img/ribbons/ribbong4toughgreat.png b/Resources/img/ribbons/ribbong4toughgreat.png new file mode 100644 index 000000000..f57b8ab46 Binary files /dev/null and b/Resources/img/ribbons/ribbong4toughgreat.png differ diff --git a/Resources/img/ribbons/ribbong4toughmaster.png b/Resources/img/ribbons/ribbong4toughmaster.png new file mode 100644 index 000000000..b401bc175 Binary files /dev/null and b/Resources/img/ribbons/ribbong4toughmaster.png differ diff --git a/Resources/img/ribbons/ribbong4toughultra.png b/Resources/img/ribbons/ribbong4toughultra.png new file mode 100644 index 000000000..1b31a0be9 Binary files /dev/null and b/Resources/img/ribbons/ribbong4toughultra.png differ diff --git a/Resources/img/ribbons/gorgeous.png b/Resources/img/ribbons/ribbongorgeous.png similarity index 100% rename from Resources/img/ribbons/gorgeous.png rename to Resources/img/ribbons/ribbongorgeous.png diff --git a/Resources/img/ribbons/gorgeousroyal.png b/Resources/img/ribbons/ribbongorgeousroyal.png similarity index 100% rename from Resources/img/ribbons/gorgeousroyal.png rename to Resources/img/ribbons/ribbongorgeousroyal.png diff --git a/Resources/img/ribbons/legend.png b/Resources/img/ribbons/ribbonlegend.png similarity index 100% rename from Resources/img/ribbons/legend.png rename to Resources/img/ribbons/ribbonlegend.png diff --git a/Resources/img/ribbons/ribbon_43.png b/Resources/img/ribbons/ribbonmasterbeauty.png similarity index 100% rename from Resources/img/ribbons/ribbon_43.png rename to Resources/img/ribbons/ribbonmasterbeauty.png diff --git a/Resources/img/ribbons/ribbon_45.png b/Resources/img/ribbons/ribbonmastercleverness.png similarity index 100% rename from Resources/img/ribbons/ribbon_45.png rename to Resources/img/ribbons/ribbonmastercleverness.png diff --git a/Resources/img/ribbons/ribbon_42.png b/Resources/img/ribbons/ribbonmastercoolness.png similarity index 100% rename from Resources/img/ribbons/ribbon_42.png rename to Resources/img/ribbons/ribbonmastercoolness.png diff --git a/Resources/img/ribbons/ribbon_44.png b/Resources/img/ribbons/ribbonmastercuteness.png similarity index 100% rename from Resources/img/ribbons/ribbon_44.png rename to Resources/img/ribbons/ribbonmastercuteness.png diff --git a/Resources/img/ribbons/ribbon_46.png b/Resources/img/ribbons/ribbonmastertoughness.png similarity index 100% rename from Resources/img/ribbons/ribbon_46.png rename to Resources/img/ribbons/ribbonmastertoughness.png diff --git a/Resources/img/ribbons/national.png b/Resources/img/ribbons/ribbonnational.png similarity index 100% rename from Resources/img/ribbons/national.png rename to Resources/img/ribbons/ribbonnational.png diff --git a/Resources/img/ribbons/premier.png b/Resources/img/ribbons/ribbonpremier.png similarity index 100% rename from Resources/img/ribbons/premier.png rename to Resources/img/ribbons/ribbonpremier.png diff --git a/Resources/img/ribbons/record.png b/Resources/img/ribbons/ribbonrecord.png similarity index 100% rename from Resources/img/ribbons/record.png rename to Resources/img/ribbons/ribbonrecord.png diff --git a/Resources/img/ribbons/relax.png b/Resources/img/ribbons/ribbonrelax.png similarity index 100% rename from Resources/img/ribbons/relax.png rename to Resources/img/ribbons/ribbonrelax.png diff --git a/Resources/img/ribbons/royal.png b/Resources/img/ribbons/ribbonroyal.png similarity index 100% rename from Resources/img/ribbons/royal.png rename to Resources/img/ribbons/ribbonroyal.png diff --git a/Resources/img/ribbons/shock.png b/Resources/img/ribbons/ribbonshock.png similarity index 100% rename from Resources/img/ribbons/shock.png rename to Resources/img/ribbons/ribbonshock.png diff --git a/Resources/img/ribbons/smile.png b/Resources/img/ribbons/ribbonsmile.png similarity index 100% rename from Resources/img/ribbons/smile.png rename to Resources/img/ribbons/ribbonsmile.png diff --git a/Resources/img/ribbons/snooze.png b/Resources/img/ribbons/ribbonsnooze.png similarity index 100% rename from Resources/img/ribbons/snooze.png rename to Resources/img/ribbons/ribbonsnooze.png diff --git a/Resources/img/ribbons/souvenir.png b/Resources/img/ribbons/ribbonsouvenir.png similarity index 100% rename from Resources/img/ribbons/souvenir.png rename to Resources/img/ribbons/ribbonsouvenir.png diff --git a/Resources/img/ribbons/special.png b/Resources/img/ribbons/ribbonspecial.png similarity index 100% rename from Resources/img/ribbons/special.png rename to Resources/img/ribbons/ribbonspecial.png diff --git a/Resources/img/ribbons/training.png b/Resources/img/ribbons/ribbontraining.png similarity index 100% rename from Resources/img/ribbons/training.png rename to Resources/img/ribbons/ribbontraining.png diff --git a/Resources/img/ribbons/ribbonvictory.png b/Resources/img/ribbons/ribbonvictory.png new file mode 100644 index 000000000..41ed31cb0 Binary files /dev/null and b/Resources/img/ribbons/ribbonvictory.png differ diff --git a/Resources/img/ribbons/ribbonwinning.png b/Resources/img/ribbons/ribbonwinning.png new file mode 100644 index 000000000..0083cec25 Binary files /dev/null and b/Resources/img/ribbons/ribbonwinning.png differ diff --git a/Resources/img/ribbons/wishing.png b/Resources/img/ribbons/ribbonwishing.png similarity index 100% rename from Resources/img/ribbons/wishing.png rename to Resources/img/ribbons/ribbonwishing.png diff --git a/Resources/img/ribbons/world.png b/Resources/img/ribbons/ribbonworld.png similarity index 100% rename from Resources/img/ribbons/world.png rename to Resources/img/ribbons/ribbonworld.png diff --git a/Resources/text/changelog.txt b/Resources/text/changelog.txt index e1fc131b2..5858adbec 100644 --- a/Resources/text/changelog.txt +++ b/Resources/text/changelog.txt @@ -709,7 +709,7 @@ http://projectpokemon.org/forums/showthread.php?36986 - Fixed: ORAS 2nd daycare EXP values not being displayed. Thanks chenzw95! - Fixed: Mono-specific underscore issue for converting to numbers. Thanks chenzw95! -5/16/16 - New Update: (1200) +5/16/16 - New Update: (115750) - Added: Bulk conversion when opening a Gen4 or Gen5 save file. Box contents will be dumped to specified folder, and converted if desired. - Added: SetPK6 override options for importing multiple pk6's (box import, battle video). - Added: Event constant diff when comparing two saves in the Event Flag editor. @@ -724,4 +724,54 @@ http://projectpokemon.org/forums/showthread.php?36986 - Fixed: Changing Encounter Type of files from Platinum. - Removed: Code Generator, use save cache instead (CyberGadget users). - Hotfix: Fixed Gen 5 save file detection. Thanks xtreme1! - - Hotfix: Fixed Bad Eggs from causing past gen dumping to abort. Thanks xtreme1! \ No newline at end of file + - Hotfix: Fixed Bad Eggs from causing past gen dumping to abort. Thanks xtreme1! + +07/28/16 - New Update: (9500) + - Fixed: Base save file when no save is loaded now has more realistic data (Console Region and Country fixed). + - Fixed: Loading a X/Y save file will no longer have OR/AS exclusive items/moves/forms available as choices. + - Fixed: Certain edge case Wonder Cards now are recognized correctly. + - Fixed: A few legality checks have been improved. Thanks Eskuero & chenzw95! + - Fixed: Box Flag truncation. Thanks chenzw95! + - Fixed: Save File detection for past gen saves. Thanks evandixon! + - Added: Pokémon Link block injector (like Wonder Cards). Thanks suloku! + - Added: Clear Box with Alt-Click on Box Tab. Clear ALL Boxes with Alt-Shift-Click. + - Added: Sort Box with Ctrl-Click on Box Tab. Sort ALL Boxes with Ctrl-Shift-Click. Sorts by Species#. + - Added: RSE/FRLG/DPPt/HGSS/BW/B2W2 Save Editing Support. Can read, modify, and export save files and pkm files. + - Added: Trainer Info editor for Generation 3-5. + - Changed: Many internal routines to handle multiple generations. + - Changed: Mystery Gifts (Wonder Cards) Editor revised to handle multiple generations. + - Changed: Inventory Editor revised to handle multiple generations. + - Changed: Save File sub editors (buttons) have a new layout to handle multiple generations. + - Changed: Box Dump/Load are now accessible via the Tools menu. + - Changed: Updated Chinese translation. Thanks easyworld! + - Added: Batch Editor. Modify all Pokémon in your save file / external files with simple script instructions. + - - A script builder is provided to list attributes that may be edited (and how to edit them). + - - "=": Requires the value to match the specified value. If not, the PKM is skipped. + - - "!": Requires the value to NOT match the specified value. If not, the PKM is skipped. + - - ".": Sets the attribute to the specified value if all filters are satisfied. + - Changed: Database can now search pk3/pk4/pk5/pk6 files. + - - An advance search option has been added, uses the same filter style as the Batch Editor. + +07/31/16 - New Update: (21700) + - Added: Batch editor "Shinify" command to make a Pokemon shiny ($shiny). Thanks exegg! + - Changed: Ribbon editor is now wider (5 ribbons per row). Thanks \! + - Fixed: Gen 3/4 save issues. Thanks BeyondTheHorizon, poutros! + - Fixed: Event Flag editor saving no longer throws a cast exception. Thanks Armodillomatt12! + - Fixed: Importing PGT/PCD to future generations no longer errors out. Thanks SubMana! + - Fixed: Mystery Gift window import/export button text displayed. Thanks poutros! + - Fixed: Misc Pokémon Link legality cases fixed. Thanks poutros! + - Fixed: Misc linux issues with latest refactoring. Thanks Zekario! + - Fixed: Trainer Editor window ~ Unicode character display. Thanks \! + - Fixed: Minor main window editing bugs for EXP/Nature/Gender. + +08/07/16 - New Update: + - Added: TWLSaveTool folder auto-detection for past generation save files. + - Changed: Save file auto-detection now detects the last saved file instead of a predefined order. Saving a NDS game after 3DS game will return the NDS save. + - Fixed: Multiple gen3/4 save/pkm/transfer bugs. Thanks BeyondTheHorizon, JHorbach, Destinyy, MichiS97, ashrobb, IamAVeryNicePereson & javier_himura! + - Fixed: Manaphy egg (non event) now correctly flagged as illegal. Thanks RustInPeace! + - Changed: Updated Spanish Translation. Thanks ajtudela! + - Fixed: Drag&Drop between box slots tweaked and improved. Thanks Warsen! + - Fixed: Mystery Gift files can now be dragged into Box slots directly. + - Fixed: Gen6 Trainer Info editor can now edit Vivillon forms again. Thanks Majickhat55! + - Added: Cleaner 'delete' command to batch editor (set species to 0 to clear data). + - Added: Specifying output folder when modifying a folder in the Batch Editor. Thanks \! \ No newline at end of file diff --git a/Resources/text/de/lang_de.txt b/Resources/text/de/lang_de.txt index 20ec5b57c..583b19513 100644 --- a/Resources/text/de/lang_de.txt +++ b/Resources/text/de/lang_de.txt @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = File Menu_Open = Open... -Menu_Save = Save PK6... +Menu_Save = Save PKM... Menu_ExportSAV = Export SAV... Menu_ExportMAIN = Export main Menu_ExportBAK = Export BAK @@ -26,8 +26,8 @@ Menu_Exit = Quit -- Menu_Tools = Tools Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = Import Set from Clipboard -Menu_ShowdownExportPK6 = Export Set to Clipboard +Menu_ShowdownImportPKM = Import Set from Clipboard +Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard Menu_CyberGadget = CyberGadget @@ -37,7 +37,7 @@ Menu_Data = Data Menu_LoadBoxes = Load Boxes Menu_DumpBoxes = Dump Boxes Menu_Report = Box Data Report -Menu_Database = PK6 Datenbank +Menu_Database = PKM Datenbank Menu_Other = Andere Menu_OpenSDF = Open SaveDataFiler Folder Menu_OpenSDB = Open SaveDataBackup Folder @@ -46,7 +46,7 @@ Menu_Options = Optionen Menu_Language = Sprache Menu_Modify = Bei Einstellung auf SAV Menu_ModifyDex = Ändern Pokédex -Menu_ModifyPK6 = Ändern PK6 Info +Menu_ModifyPKM = Ändern PKM Info Menu_Unicode = Unicode Menu_About = Über PKHeX --------------------Context Menus---------------------- @@ -129,8 +129,9 @@ GB_nOT = Letzter (nicht OT) Handler Label_PrevOT = OT: GB_ExtraBytes = Extra Bytes GB_Markings = Markierungen -BTN_Ribbons = Bänder/Medaillen -BTN_History = Erinnerung/Amie +BTN_Ribbons = Bänder +BTN_Medals = Medaillen +BTN_History = Erinnerung Label_EncryptionConstant = PKX-Konstante: BTN_RerollEC = Neu -----------------Save Data Interface-------------------- @@ -169,105 +170,156 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. Ribbons / Medals UI Below -! RibbonMedal +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Ribbon Editor - Change stuff below this line, not above. ----------------------Buttons-------------------------- BTN_All = Alle BTN_None = Nichts BTN_Cancel = Abbrechen BTN_Save = Speichern --------------------Ribbons/Medals---------------------- -Tab_Kalos = Häufige Bänder -Tab_Extra = Zusatzbänder -Tab_Medals = Trainingsmedaillen -GB_Kalos12 = Set 12 -Kalos1a_0 = Kalos Champion -Kalos1a_1 = Hoenn Champion -Kalos1a_2 = Sinnoh Champion -Kalos1a_3 = Beste Freunde -Kalos1a_4 = Training -Kalos1a_5 = Erfahrener Kämpfer -Kalos1a_6 = Experten Kämpfer -Kalos1a_7 = Fleiß ---- -Kalos1b_0 = Wachsamkeit -Kalos1b_1 = Schock -Kalos1b_2 = Niederschlag -Kalos1b_3 = Sorglosigkeit -Kalos1b_4 = Entspannung -Kalos1b_5 = Schlafen -Kalos1b_6 = Lächeln -Kalos1b_7 = Hinreißend ---- -GB_Kalos34 = Set 2 -Kalos2a_0 = Königlich -Kalos2a_1 = Hinreißend Königl. -Kalos2a_2 = Künstler -Kalos2a_3 = Fußabdruck -Kalos2a_4 = Rekord -Kalos2a_5 = Legende -Kalos2a_6 = Land -Kalos2a_7 = Nation ---- -Kalos2b_0 = Erde -Kalos2b_1 = Welt -Kalos2b_2 = Klassisch -Kalos2b_3 = Premier -Kalos2b_4 = Geschichte -Kalos2b_5 = Geburtstag -Kalos2b_6 = Spezial -Kalos2b_7 = Gedenk ---- -GB_Extra1 = Set 3 -Extra1_0 = Wunsch -Extra1_1 = Kampfchampion -Extra1_2 = Regionaler Champion -Extra1_3 = Nationaler Champion -Extra1_4 = Weltchampion -L_PastContest = Verg. Wettbewerbsb.: -L_PastBattle = Verg. Kampfb.: -------------------Super Training--------------------- -L_SuperTraining = Normales Super Training -L_Rank1 = Rang 1 -TMedal1_3 = KP -TMedal1_4 = Atk -TMedal1_7 = Def -TMedal1_2 = SpA -TMedal1_5 = SpD -TMedal1_6 = Init -L_Rank2 = Rang 2 -TMedal2_1 = KP -TMedal2_2 = Atk -TMedal2_5 = Def -TMedal2_0 = SpA -TMedal2_3 = SpD -TMedal2_4 = Init -L_Rank3 = Rang 3 -TMedal2_7 = HP -TMedal3_0 = Atk -TMedal3_3 = Def -TMedal2_6 = SpA -TMedal3_1 = SpD -TMedal3_2 = Init +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = Kalos Champion +L_RibbonChampionG3Hoenn = Hoenn Champion (RSE) +L_RibbonChampionSinnoh = Sinnoh Champion +L_RibbonBestFriends = Beste Freunde +L_RibbonTraining = Training +L_RibbonBattlerSkillful = Erfahrener Kämpfer +L_RibbonBattlerExpert = Experten Kämpfer +L_RibbonEffort = Fleiß +L_RibbonAlert = Wachsamkeit +L_RibbonShock = Schock +L_RibbonDowncast = Niederschlag +L_RibbonCareless = Sorglosigkeit +L_RibbonRelax = Entspannung +L_RibbonSnooze = Schlafen +L_RibbonSmile = Lächeln +L_RibbonGorgeous = Hinreißend +L_RibbonRoyal = Königlich +L_RibbonGorgeousRoyal = Hinreißend Königl. +L_RibbonArtist = Künstler +L_RibbonFootprint = Fußabdruck +L_RibbonRecord = Rekord +L_RibbonLegend = Legende +L_RibbonCountry = Land +L_RibbonNational = Nation +L_RibbonEarth = Erde +L_RibbonWorld = Welt +L_RibbonClassic = Klassisch +L_RibbonPremier = Premier +L_RibbonEvent = Geschichte +L_RibbonBirthday = Geburtstag +L_RibbonSpecial = Spezial +L_RibbonSouvenir = Gedenk +L_RibbonWishing = Wunsch +L_RibbonChampionBattle = Kampfchampion +L_RibbonChampionRegional = Regionaler Champion +L_RibbonChampionNational = Nationaler Champion +L_RibbonChampionWorld = Weltchampion +L_RibbonCountMemoryContest = Verg. Wettbewerbsb. +L_RibbonCountMemoryBattle = Verg. Kampfb. +L_RibbonChampionG6Hoenn = Hoenn Champion (ORAS) +L_RibbonContestStar = Contest Star +L_RibbonMasterCoolness = Coolness Master +L_RibbonMasterBeauty = Beauty Master +L_RibbonMasterCuteness = Cuteness Master +L_RibbonMasterCleverness = Cleverness Master +L_RibbonMasterToughness = Toughness Master +----------------Contest/Battle (PAST)------------------- +L_RibbonG3Cool = Cool (G3) +L_RibbonG3CoolSuper = Cool Super +L_RibbonG3CoolHyper = Cool Hyper +L_RibbonG3CoolMaster = Cool Master +L_RibbonG3Beauty = Beauty (G3) +L_RibbonG3BeautySuper = Beauty Super +L_RibbonG3BeautyHyper = Beauty Hyper +L_RibbonG3BeautyMaster = Beauty Master +L_RibbonG3Cute = Cute (G3) +L_RibbonG3CuteSuper = Cute Super +L_RibbonG3CuteHyper = Cute Hyper +L_RibbonG3CuteMaster = Cute Master +L_RibbonG3Smart = Smart (G3) +L_RibbonG3SmartSuper = Smart Super +L_RibbonG3SmartHyper = Smart Hyper +L_RibbonG3SmartMaster = Smart Master +L_RibbonG3Tough = Tough (G3) +L_RibbonG3ToughSuper = Tough Super +L_RibbonG3ToughHyper = Tough Hyper +L_RibbonG3ToughMaster = Tough Master +L_RibbonG4Cool = Cool (G4) +L_RibbonG4CoolGreat = Cool Great +L_RibbonG4CoolUltra = Cool Ultra +L_RibbonG4CoolMaster = Cool Master +L_RibbonG4Beauty = Beauty (G4) +L_RibbonG4BeautyGreat = Beauty Great +L_RibbonG4BeautyUltra = Beauty Ultra +L_RibbonG4BeautyMaster = Beauty Master +L_RibbonG4Cute = Cute (G4) +L_RibbonG4CuteGreat = Cute Great +L_RibbonG4CuteUltra = Cute Ultra +L_RibbonG4CuteMaster = Cute Master +L_RibbonG4Smart = Smart (G4) +L_RibbonG4SmartGreat = Smart Great +L_RibbonG4SmartUltra = Smart Ultra +L_RibbonG4SmartMaster = Smart Master +L_RibbonG4Tough = Tough (G4) +L_RibbonG4ToughGreat = Tough Great +L_RibbonG4ToughUltra = Tough Ultra +L_RibbonG4ToughMaster = Tough Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = Cool +L_RibbonCountG3Beauty = Beauty +L_RibbonCountG3Cute = Cute +L_RibbonCountG3Smart = Smart +L_RibbonCountG3Tough = Tough +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Medal Editor +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +------------------Super Training----------------------- +L_SuperTrain1_HP = Rang 1: KP +L_SuperTrain1_ATK = Rang 1: Atk +L_SuperTrain1_DEF = Rang 1: Def +L_SuperTrain1_SPA = Rang 1: SpA +L_SuperTrain1_SPD = Rang 1: SpD +L_SuperTrain1_SPE = Rang 1: Init +L_SuperTrain2_HP = Rang 2: KP +L_SuperTrain2_ATK = Rang 2: Atk +L_SuperTrain2_DEF = Rang 2: Def +L_SuperTrain2_SPA = Rang 2: SpA +L_SuperTrain2_SPD = Rang 2: SpD +L_SuperTrain2_SPE = Rang 2: Init +L_SuperTrain3_HP = Rang 3: HP +L_SuperTrain3_ATK = Rang 3: Atk +L_SuperTrain3_DEF = Rang 3: Def +L_SuperTrain3_SPA = Rang 3: SpA +L_SuperTrain3_SPD = Rang 3: SpD +L_SuperTrain3_SPE = Rang 3: Init CHK_Secret = Geheimtraining verfügbar -L_Rank3 = Rang 4 -TMedal3_4 = Unheil -L_Rank3 = Rang 5 -TMedal3_5 = Blattst. -TMedal3_6 = Feuerst. -TMedal3_7 = Wasserst. -TMedal4_0 = Beweg. Tore! -L_Rank3 = Rang 6 -TMedal4_1 = 2. Halbzeit! -TMedal4_2 = 1. Haltzeit! -TMedal4_3 = Weitsch. -L_Rank3 = Rang 7 -TMedal4_4 = Purmel -TMedal4_5 = Bit-Ballon-Barriere -TMedal4_6 = Blitz-K.O.! -L_Rank3 = Rang 8 -TMedal4_7 = Pokémon X/Y +L_SuperTrain4_1 = Rang 4: Unheil +L_SuperTrain5_1 = Rang 5: Blattst. +L_SuperTrain5_2 = Rang 5: Feuerst. +L_SuperTrain5_3 = Rang 5: Wasserst. +L_SuperTrain5_4 = Rang 5: Beweg. Tore! +L_SuperTrain6_1 = Rang 6: 2. Halbzeit! +L_SuperTrain6_2 = Rang 6: 1. Haltzeit! +L_SuperTrain6_3 = Rang 6: Weitsch. +L_SuperTrain7_1 = Rang 7: Purmel +L_SuperTrain7_2 = Rang 7: Bit-Ballon-Barriere +L_SuperTrain7_3 = Rang 7: Blitz-K.O.! +L_SuperTrain8_1 = Rang 8: Pokémon X/Y --- L_Bag = Last Used Bag: L_Hits = Hits Remaining: diff --git a/Resources/text/de/text_Forms_de.txt b/Resources/text/de/text_Forms_de.txt index 337e94303..37474974f 100644 --- a/Resources/text/de/text_Forms_de.txt +++ b/Resources/text/de/text_Forms_de.txt @@ -1,4 +1,4 @@ - +Spiky diff --git a/Resources/text/en/lang_en.txt b/Resources/text/en/lang_en.txt index 7accf57f5..38767962c 100644 --- a/Resources/text/en/lang_en.txt +++ b/Resources/text/en/lang_en.txt @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = File Menu_Open = Open... -Menu_Save = Save PK6... +Menu_Save = Save PKM... Menu_ExportSAV = Export SAV... Menu_ExportMAIN = Export main Menu_ExportBAK = Export BAK @@ -26,8 +26,8 @@ Menu_Exit = Quit -- Menu_Tools = Tools Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = Import Set from Clipboard -Menu_ShowdownExportPK6 = Export Set to Clipboard +Menu_ShowdownImportPKM = Import Set from Clipboard +Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard Menu_CyberGadget = CyberGadget @@ -37,7 +37,7 @@ Menu_Data = Data Menu_LoadBoxes = Load Boxes Menu_DumpBoxes = Dump Boxes Menu_Report = Box Data Report -Menu_Database = PK6 Database +Menu_Database = PKM Database Menu_Other = Other Menu_OpenSDF = Open SaveDataFiler Folder Menu_OpenSDB = Open SaveDataBackup Folder @@ -46,7 +46,7 @@ Menu_Options = Options Menu_Language = Language Menu_Modify = Set to SAV Menu_ModifyDex = Modify Pokédex -Menu_ModifyPK6 = Modify PK6 Info +Menu_ModifyPKM = Modify PKM Info Menu_Unicode = Unicode Menu_About = About PKHeX --------------------Context Menus---------------------- @@ -129,8 +129,9 @@ GB_nOT = Latest (not OT) Handler Label_PrevOT = OT: GB_ExtraBytes = Extra Bytes GB_Markings = Markings -BTN_Ribbons = Ribbons/Medals -BTN_History = Memories/Amie +BTN_Ribbons = Ribbons +BTN_Medals = Medals +BTN_History = Memories Label_EncryptionConstant = Encryption Constant: BTN_RerollEC = Reroll -----------------Save Data Interface-------------------- @@ -171,113 +172,156 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. -! RibbonMedal = Ribbon / Medal Editor +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Ribbon Editor - Change stuff below this line, not above. ----------------------Buttons-------------------------- -BTN_All = Give All -BTN_None = Remove All -BTN_Cancel = Cancel -BTN_Save = Save --------------------Ribbons/Medals---------------------- -Tab_Kalos = Common Ribbons -Tab_Extra = Extra Ribbons -Tab_Medals = Training Medals -GB_Kalos12 = Set 1 -Kalos1a_0 = Kalos Champ -Kalos1a_1 = Hoenn Champ -Kalos1a_2 = Sinnoh Champ -Kalos1a_3 = Best Friends -Kalos1a_4 = Training -Kalos1a_5 = Skillful Battler -Kalos1a_6 = Expert Battler -Kalos1a_7 = Effort ---- -Kalos1b_0 = Alert -Kalos1b_1 = Shock -Kalos1b_2 = Downcast -Kalos1b_3 = Careless -Kalos1b_4 = Relax -Kalos1b_5 = Snooze -Kalos1b_6 = Smile -Kalos1b_7 = Gorgeous ---- -GB_Kalos34 = Set 2 -Kalos2a_0 = Royal -Kalos2a_1 = Gorgeous Royal -Kalos2a_2 = Artist -Kalos2a_3 = Footprint -Kalos2a_4 = Record -Kalos2a_5 = Legend -Kalos2a_6 = Country -Kalos2a_7 = National ---- -Kalos2b_0 = Earth -Kalos2b_1 = World -Kalos2b_2 = Classic -Kalos2b_3 = Premier -Kalos2b_4 = Event -Kalos2b_5 = Birthday -Kalos2b_6 = Special -Kalos2b_7 = Souvenir ---- -GB_Extra1 = Set 3 -Extra1_0 = Wishing -Extra1_1 = Battle Champ -Extra1_2 = Regional Champ -Extra1_3 = National Champ -Extra1_4 = World Champ -L_PastContest = Past Contest Ribbons: -L_PastBattle = Past Battle Ribbons: ---- -Extra1_7 = Hoenn Champion -ORAS_0 = Contest Star -ORAS_1 = Coolness Master -ORAS_2 = Beauty Master -ORAS_3 = Cuteness Master -ORAS_4 = Cleverness Master -ORAS_5 = Toughness Master -------------------Super Training--------------------- -L_SuperTraining = Normal Super Training -L_Rank1 = Rank 1 -TMedal1_3 = HP -TMedal1_4 = Atk -TMedal1_7 = Def -TMedal1_2 = SpA -TMedal1_5 = SpD -TMedal1_6 = Spe -L_Rank2 = Rank 2 -TMedal2_1 = HP -TMedal2_2 = Atk -TMedal2_5 = Def -TMedal2_0 = SpA -TMedal2_3 = SpD -TMedal2_4 = Spe -L_Rank3 = Rank 3 -TMedal2_7 = HP -TMedal3_0 = Atk -TMedal3_3 = Def -TMedal2_6 = SpA -TMedal3_1 = SpD -TMedal3_2 = Spe +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = Kalos Champion +L_RibbonChampionG3Hoenn = Hoenn Champion (RSE) +L_RibbonChampionSinnoh = Sinnoh Champion +L_RibbonBestFriends = Best Friends +L_RibbonTraining = Training +L_RibbonBattlerSkillful = Skillful Battler +L_RibbonBattlerExpert = Expert Battler +L_RibbonEffort = Effort +L_RibbonAlert = Alert +L_RibbonShock = Shock +L_RibbonDowncast = Downcast +L_RibbonCareless = Careless +L_RibbonRelax = Relax +L_RibbonSnooze = Snooze +L_RibbonSmile = Smile +L_RibbonGorgeous = Gorgeous +L_RibbonRoyal = Royal +L_RibbonGorgeousRoyal = Gorgeous Royal +L_RibbonArtist = Artist +L_RibbonFootprint = Footprint +L_RibbonRecord = Record +L_RibbonLegend = Legend +L_RibbonCountry = Country +L_RibbonNational = National +L_RibbonEarth = Earth +L_RibbonWorld = World +L_RibbonClassic = Classic +L_RibbonPremier = Premier +L_RibbonEvent = Event +L_RibbonBirthday = Birthday +L_RibbonSpecial = Special +L_RibbonSouvenir = Souvenir +L_RibbonWishing = Wishing +L_RibbonChampionBattle = Battle Champion +L_RibbonChampionRegional = Regional Champion +L_RibbonChampionNational = National Champion +L_RibbonChampionWorld = World Champion +L_RibbonCountMemoryContest = Past Contest Ribbons +L_RibbonCountMemoryBattle = Past Battle Ribbons +L_RibbonChampionG6Hoenn = Hoenn Champion (ORAS) +L_RibbonContestStar = Contest Star +L_RibbonMasterCoolness = Coolness Master +L_RibbonMasterBeauty = Beauty Master +L_RibbonMasterCuteness = Cuteness Master +L_RibbonMasterCleverness = Cleverness Master +L_RibbonMasterToughness = Toughness Master +----------------Contest/Battle (PAST)------------------- +L_RibbonG3Cool = Cool (G3) +L_RibbonG3CoolSuper = Cool Super +L_RibbonG3CoolHyper = Cool Hyper +L_RibbonG3CoolMaster = Cool Master +L_RibbonG3Beauty = Beauty (G3) +L_RibbonG3BeautySuper = Beauty Super +L_RibbonG3BeautyHyper = Beauty Hyper +L_RibbonG3BeautyMaster = Beauty Master +L_RibbonG3Cute = Cute (G3) +L_RibbonG3CuteSuper = Cute Super +L_RibbonG3CuteHyper = Cute Hyper +L_RibbonG3CuteMaster = Cute Master +L_RibbonG3Smart = Smart (G3) +L_RibbonG3SmartSuper = Smart Super +L_RibbonG3SmartHyper = Smart Hyper +L_RibbonG3SmartMaster = Smart Master +L_RibbonG3Tough = Tough (G3) +L_RibbonG3ToughSuper = Tough Super +L_RibbonG3ToughHyper = Tough Hyper +L_RibbonG3ToughMaster = Tough Master +L_RibbonG4Cool = Cool (G4) +L_RibbonG4CoolGreat = Cool Great +L_RibbonG4CoolUltra = Cool Ultra +L_RibbonG4CoolMaster = Cool Master +L_RibbonG4Beauty = Beauty (G4) +L_RibbonG4BeautyGreat = Beauty Great +L_RibbonG4BeautyUltra = Beauty Ultra +L_RibbonG4BeautyMaster = Beauty Master +L_RibbonG4Cute = Cute (G4) +L_RibbonG4CuteGreat = Cute Great +L_RibbonG4CuteUltra = Cute Ultra +L_RibbonG4CuteMaster = Cute Master +L_RibbonG4Smart = Smart (G4) +L_RibbonG4SmartGreat = Smart Great +L_RibbonG4SmartUltra = Smart Ultra +L_RibbonG4SmartMaster = Smart Master +L_RibbonG4Tough = Tough (G4) +L_RibbonG4ToughGreat = Tough Great +L_RibbonG4ToughUltra = Tough Ultra +L_RibbonG4ToughMaster = Tough Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = Cool +L_RibbonCountG3Beauty = Beauty +L_RibbonCountG3Cute = Cute +L_RibbonCountG3Smart = Smart +L_RibbonCountG3Tough = Tough +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Medal Editor +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +------------------Super Training----------------------- +L_SuperTrain1_HP = Rank 1: HP +L_SuperTrain1_ATK = Rank 1: Atk +L_SuperTrain1_DEF = Rank 1: Def +L_SuperTrain1_SPA = Rank 1: SpA +L_SuperTrain1_SPD = Rank 1: SpD +L_SuperTrain1_SPE = Rank 1: Spe +L_SuperTrain2_HP = Rank 2: HP +L_SuperTrain2_ATK = Rank 2: Atk +L_SuperTrain2_DEF = Rank 2: Def +L_SuperTrain2_SPA = Rank 2: SpA +L_SuperTrain2_SPD = Rank 2: SpD +L_SuperTrain2_SPE = Rank 2: Spe +L_SuperTrain3_HP = Rank 3: HP +L_SuperTrain3_ATK = Rank 3: Atk +L_SuperTrain3_DEF = Rank 3: Def +L_SuperTrain3_SPA = Rank 3: SpA +L_SuperTrain3_SPD = Rank 3: SpD +L_SuperTrain3_SPE = Rank 3: Spe CHK_Secret = Secret Training Enabled -L_Rank3 = Rank 4 -TMedal3_4 = Troubles -L_Rank3 = Rank 5 -TMedal3_5 = Leaf -TMedal3_6 = Fire -TMedal3_7 = Water -TMedal4_0 = Fleeing -L_Rank3 = Rank 6 -TMedal4_1 = Second -TMedal4_2 = Quick -TMedal4_3 = Long -L_Rank3 = Rank 7 -TMedal4_4 = Scatter -TMedal4_5 = Barrage -TMedal4_6 = Hydreigon -L_Rank3 = Rank 8 -TMedal4_7 = Best +L_SuperTrain4_1 = Rank 4: Troubles +L_SuperTrain5_1 = Rank 5: Leaf +L_SuperTrain5_2 = Rank 5: Fire +L_SuperTrain5_3 = Rank 5: Water +L_SuperTrain5_4 = Rank 5: Fleeing +L_SuperTrain6_1 = Rank 6: Second +L_SuperTrain6_2 = Rank 6: Quick +L_SuperTrain6_3 = Rank 6: Long +L_SuperTrain7_1 = Rank 7: Scatter +L_SuperTrain7_2 = Rank 7: Barrage +L_SuperTrain7_3 = Rank 7: Hydreigon +L_SuperTrain8_1 = Rank 8: Best --- L_Bag = Last Used Bag: L_Hits = Hits Remaining: @@ -749,8 +793,8 @@ L_Saying5 = 5: ------------------------------------------------------- L_Details = Details: L_Received = Received List: -B_Import = Import .wc6 -B_Output = Output .wc6 +B_Import = Import +B_Output = Export B_Cancel = Cancel B_Save = Save ! End \ No newline at end of file diff --git a/Resources/text/en/text_Forms_en.txt b/Resources/text/en/text_Forms_en.txt index e89339bce..114723069 100644 --- a/Resources/text/en/text_Forms_en.txt +++ b/Resources/text/en/text_Forms_en.txt @@ -1,4 +1,4 @@ - +Spiky diff --git a/Resources/text/es/lang_es.txt b/Resources/text/es/lang_es.txt index 9f6c551eb..348239b9f 100644 --- a/Resources/text/es/lang_es.txt +++ b/Resources/text/es/lang_es.txt @@ -1,10 +1,10 @@ ! PKHeX Interface Customization File ! Languages: Save this file accordingly and put it in the same folder as PKHeX's executable. -! lang_en.txt = English -! lang_jp.txt = Japanese +! lang_en.txt = Inglés +! lang_jp.txt = Japonés ! lang_fr.txt = French -! lang_de.txt = German -! lang_es.txt = Spanish +! lang_de.txt = Alemán +! lang_es.txt = Español ! lang_it.txt = Italian ! lang_ko.txt = Korean ! lang_zh.txt = Chinese @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = Archivo Menu_Open = Abrir... -Menu_Save = Guardar PK6... +Menu_Save = Guardar PKM... Menu_ExportSAV = Guardar SAV... Menu_ExportMAIN = Guardar main Menu_ExportBAK = Guardar BAK @@ -26,18 +26,18 @@ Menu_Exit = Salir -- Menu_Tools = Útiles Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = Import Set from Clipboard -Menu_ShowdownExportPK6 = Export Set to Clipboard -Menu_ShowdownExportParty = Export Party to Clipboard -Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard +Menu_ShowdownImportPKM = Importar set desde el portapapeles +Menu_ShowdownExportPKM = Exportar set desde el portapapeles +Menu_ShowdownExportParty = Exportar equipo desde el portapapeles +Menu_ShowdownExportBattleBox = Exportar caja de combate desde el portapapeles Menu_CyberGadget = CyberGadget Menu_OpenTemp = Abrir carpeta Temp Menu_OpenCache = Abrir carpeta Cache Menu_Data = Data Menu_LoadBoxes = Cargar Cajas Menu_DumpBoxes = Exportar Cajas -Menu_Report = Reporte de la caja -Menu_Database = PK6 Database +Menu_Report = Informe de la caja +Menu_Database = Base de datos de PKM Menu_Other = Otro Menu_OpenSDF = Abrir carpeta SaveDataFiler Menu_OpenSDB = Abrir carpeta SaveDataBackup @@ -46,7 +46,7 @@ Menu_Options = Opciones Menu_Language = Idioma Menu_Modify = Ajuste a SAV Menu_ModifyDex = Modificar Pokédex -Menu_ModifyPK6 = Modificar PK6 Info +Menu_ModifyPKM = Modificar info PKM Menu_Unicode = Unicode Menu_About = Sobre PKHeX --------------------Context Menus---------------------- @@ -68,14 +68,14 @@ Label_Friendship = Felicidad: Label_Form = Forma: Label_Ability = Habilidad: Label_Language = Idioma: -CHK_IsEgg = Es Huevo +CHK_IsEgg = Huevo CHK_Infected = Infectado CHK_Cured = Curado Label_PKRS = PkRs: Label_PKRSdays = d: Label_Country = País: -Label_SubRegion = Sub Region: -Label_3DSRegion = 3DS Region: +Label_SubRegion = Subregión: +Label_3DSRegion = Región 3DS: ---------------------Met Tab Data----------------------- Tab_Met = Conocido Label_OriginGame = Juego Original: @@ -94,7 +94,7 @@ Label_EggDate = Fecha: Tab_Stats = Estadísticas Label_IVs = IVs Label_EVs = EVs -Label_Stats = Estadísticas +Label_Stats = Estad. Label_HP = PS: Label_ATK = Atq: Label_DEF = Def: @@ -102,10 +102,10 @@ Label_SPA = Atq E: Label_SPD = Def E: Label_SPE = Velo: Label_Total = Total: -Label_HiddenPowerPrefix = Poder Oculto Tipo: +Label_HiddenPowerPrefix = Tipo del Poder Oculto: Label_CharacteristicPrefix = Características: -BTN_RandomIVs = Randomizar IVs -BTN_RandomEVs = Randomizar EVs +BTN_RandomIVs = Aleatorizar IVs +BTN_RandomEVs = Aleatorizar EVs Label_ContestStats = Estadísticas de concurso Label_Cool = Carisma Label_Beauty = Belleza @@ -121,17 +121,18 @@ Label_PPups = Más PP GB_RelearnMoves = Recordar Movimientos -------------------OT/Misc Tab Data--------------------- Tab_OTMisc = EO/Misc -GB_OT = Trainer Information +GB_OT = Info del Entrenador Label_TID = ID: Label_SID = IDS: Label_OT = EO: -GB_nOT = Ultimo dueño (no OT) -Label_PrevOT = OT: +GB_nOT = Ultimo dueño (no EO) +Label_PrevOT = EO: GB_ExtraBytes = Bytes Extras GB_Markings = Marcas -BTN_Ribbons = Listones/Medales -BTN_History = Memorias/Recreo -Label_EncryptionConstant = Constante de Encryption: +BTN_Ribbons = Cintas +BTN_Medals = Medallas +BTN_History = Memorias +Label_EncryptionConstant = Cte. de Encriptación: BTN_RerollEC = Generar -----------------Save Data Interface-------------------- Tab_Box = Caja @@ -139,17 +140,17 @@ Tab_PartyBattle = Caja de combate Tab_Other = Otro Tab_SAV = SAV B_OpenPokePuffs = ‎Pokélito -B_OpenItemPouch = Objeto -B_OpenTrainerInfo = Info del Entrenador -B_OpenBoxLayout = Box Layout +B_OpenItemPouch = Inventario +B_OpenTrainerInfo = Entrenador +B_OpenBoxLayout = Fondos Cajas B_OpenWondercards = Tarjetas Misteriosas -B_OpenBerryField = Cultivo de Bayas +B_OpenBerryField = C. de Bayas B_OpenOPowers = Poder O -B_OpenEventFlags = Event Flags +B_OpenEventFlags = Eventos B_OpenPokedex = Pokédex -B_OpenSuperTraining = Super Train +B_OpenSuperTraining = Superentren. -- -B_OpenSecretBase = Secret Base +B_OpenSecretBase = Base Secreta --------------------Tab Internals----------------------- L_Party = Equipo: L_BattleBox = Caja de Combate: @@ -171,112 +172,164 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. Ribbons / Medals UI Below -! RibbonMedal +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Editor de Cintas - Change stuff below this line, not above. ----------------------Buttons-------------------------- -BTN_All = Dar todos -BTN_None = Quitar todos -BTN_Cancel = Cancelar -BTN_Save = Guardar --------------------Ribbons/Medals---------------------- -Tab_Kalos = Cintas Comunes -Tab_Extra = Cintas Extras -Tab_Medals = Training Medals -GB_Kalos12 = Set 1 -Kalos1a_0 = Campeón de Kalos -Kalos1a_1 = Campeón de Hoenn -Kalos1a_2 = Campeón de Sinnoh -Kalos1a_3 = Afecto -Kalos1a_4 = Ejercicio -Kalos1a_5 = Figura del Combate -Kalos1a_6 = Experto del Combate -Kalos1a_7 = Esfuerzo ---- -Kalos1b_0 = Alerta -Kalos1b_1 = Impacto -Kalos1b_2 = Abatimiento -Kalos1b_3 = Descuido -Kalos1b_4 = Relax -Kalos1b_5 = Cabezada -Kalos1b_6 = Sonrisa -Kalos1b_7 = Maravilla ---- -GB_Kalos34 = Set 2 -Kalos2a_0 = Realeza -Kalos2a_1 = Realeza Maravila -Kalos2a_2 = Artista -Kalos2a_3 = Huella -Kalos2a_4 = Récord -Kalos2a_5 = Leyenda -Kalos2a_6 = Campo -Kalos2a_7 = Nacional ---- -Kalos2b_0 = Planeta -Kalos2b_1 = Mundo -Kalos2b_2 = Clásica -Kalos2b_3 = Principal -Kalos2b_4 = Evento -Kalos2b_5 = Cumpleaños -Kalos2b_6 = Especial -Kalos2b_7 = Recuerdo ---- -GB_Extra1 = Set 3 -Extra1_0 = Deseo -Extra1_1 = Campeón de Torneo -Extra1_2 = Campeón de Área -Extra1_3 = Campeón Nacional -Extra1_4 = Campeón Mundial -L_PastContest = Cintas de concursos anteriores: -L_PastBattle = Cintas de batallas anteriores: -------------------Super Training--------------------- +B_All = Dar todos +B_None = Quitar todos +B_Cancel = Cancelar +B_Save = Guardar +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = Campeón de Kalos +L_RibbonChampionG3Hoenn = Campeón de Hoenn (RSE) +L_RibbonChampionSinnoh = Campeón de Sinnoh +L_RibbonBestFriends = Afecto +L_RibbonTraining = Ejercicio +L_RibbonBattlerSkillful = Figura del Combate +L_RibbonBattlerExpert = Experto del Combate +L_RibbonEffort = Esfuerzo +L_RibbonAlert = Alerta +L_RibbonShock = Impacto +L_RibbonDowncast = Abatimiento +L_RibbonCareless = Descuido +L_RibbonRelax = Relax +L_RibbonSnooze = Cabezada +L_RibbonSmile = Sonrisa +L_RibbonGorgeous = Maravilla +L_RibbonRoyal = Realeza +L_RibbonGorgeousRoyal = Realeza Maravila +L_RibbonArtist = Artista +L_RibbonFootprint = Huella +L_RibbonRecord = Récord +L_RibbonLegend = Leyenda +L_RibbonCountry = Campo +L_RibbonNational = Nacional +L_RibbonEarth = Planeta +L_RibbonWorld = Mundo +L_RibbonClassic = Clásica +L_RibbonPremier = Principal +L_RibbonEvent = Evento +L_RibbonBirthday = Cumpleaños +L_RibbonSpecial = Especial +L_RibbonSouvenir = Recuerdo +L_RibbonWishing = Deseo +L_RibbonChampionBattle = Campeón de Torneo +L_RibbonChampionRegional = Campeón de Área +L_RibbonChampionNational = Campeón Nacional +L_RibbonChampionWorld = Campeón Mundial +L_RibbonCountMemoryContest = Cintas de concursos anteriores +L_RibbonCountMemoryBattle = Cintas de batallas anteriores +L_RibbonChampionG6Hoenn = Campeón de Hoenn (ORAS) +L_RibbonContestStar = Cinta estelar de los concursos +L_RibbonMasterCoolness = Cinta estrella del carisma +L_RibbonMasterBeauty = Cinta estrella de la belleza +L_RibbonMasterCuteness = Cinta estrella de la dulzura +L_RibbonMasterCleverness = Cinta estrella del ingenio +L_RibbonMasterToughness = Cinta estrella de la dureza +----------------Contest/Battle (PAST)------------------- +L_RibbonG3Cool = Cool (G3) +L_RibbonG3CoolSuper = Cool Super +L_RibbonG3CoolHyper = Cool Hyper +L_RibbonG3CoolMaster = Cool Master +L_RibbonG3Beauty = Beauty (G3) +L_RibbonG3BeautySuper = Beauty Super +L_RibbonG3BeautyHyper = Beauty Hyper +L_RibbonG3BeautyMaster = Beauty Master +L_RibbonG3Cute = Cute (G3) +L_RibbonG3CuteSuper = Cute Super +L_RibbonG3CuteHyper = Cute Hyper +L_RibbonG3CuteMaster = Cute Master +L_RibbonG3Smart = Smart (G3) +L_RibbonG3SmartSuper = Smart Super +L_RibbonG3SmartHyper = Smart Hyper +L_RibbonG3SmartMaster = Smart Master +L_RibbonG3Tough = Tough (G3) +L_RibbonG3ToughSuper = Tough Super +L_RibbonG3ToughHyper = Tough Hyper +L_RibbonG3ToughMaster = Tough Master +L_RibbonG4Cool = Cool (G4) +L_RibbonG4CoolGreat = Cool Great +L_RibbonG4CoolUltra = Cool Ultra +L_RibbonG4CoolMaster = Cool Master +L_RibbonG4Beauty = Beauty (G4) +L_RibbonG4BeautyGreat = Beauty Great +L_RibbonG4BeautyUltra = Beauty Ultra +L_RibbonG4BeautyMaster = Beauty Master +L_RibbonG4Cute = Cute (G4) +L_RibbonG4CuteGreat = Cute Great +L_RibbonG4CuteUltra = Cute Ultra +L_RibbonG4CuteMaster = Cute Master +L_RibbonG4Smart = Smart (G4) +L_RibbonG4SmartGreat = Smart Great +L_RibbonG4SmartUltra = Smart Ultra +L_RibbonG4SmartMaster = Smart Master +L_RibbonG4Tough = Tough (G4) +L_RibbonG4ToughGreat = Tough Great +L_RibbonG4ToughUltra = Tough Ultra +L_RibbonG4ToughMaster = Tough Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = Cool +L_RibbonCountG3Beauty = Beauty +L_RibbonCountG3Cute = Cute +L_RibbonCountG3Smart = Smart +L_RibbonCountG3Tough = Tough +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Editor de Medallas +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Dar todos +B_None = Quitar todos +B_Cancel = Cancelar +B_Save = Guardar +------------------Super Training----------------------- L_SuperTraining = Superentrenamiento Normal -L_Rank1 = Nv. 1 -TMedal1_3 = PS -TMedal1_4 = Atq -TMedal1_7 = Def -TMedal1_2 = AtE -TMedal1_5 = DfE -TMedal1_6 = Vel -L_Rank2 = Nv. 2 -TMedal2_1 = PS -TMedal2_2 = Atq -TMedal2_5 = Def -TMedal2_0 = AtE -TMedal2_3 = DfE -TMedal2_4 = Vel -L_Rank3 = Nv. 3 -TMedal2_7 = PS -TMedal3_0 = Atq -TMedal3_3 = Def -TMedal2_6 = AtE -TMedal3_1 = DfE -TMedal3_2 = Vel +L_SuperTrain1_HP = Nv. 1: PS +L_SuperTrain1_ATK = Nv. 1: Atq +L_SuperTrain1_DEF = Nv. 1: Def +L_SuperTrain1_SPA = Nv. 1: AtE +L_SuperTrain1_SPD = Nv. 1: DfE +L_SuperTrain1_SPE = Nv. 1: Vel +L_SuperTrain2_HP = Nv. 2: PS +L_SuperTrain2_ATK = Nv. 2: Atq +L_SuperTrain2_DEF = Nv. 2: Def +L_SuperTrain2_SPA = Nv. 2: AtE +L_SuperTrain2_SPD = Nv. 2: DfE +L_SuperTrain2_SPE = Nv. 2: Vel +L_SuperTrain3_HP = Nv. 3: PS +L_SuperTrain3_ATK = Nv. 3: Atq +L_SuperTrain3_DEF = Nv. 3: Def +L_SuperTrain3_SPA = Nv. 3: AtE +L_SuperTrain3_SPD = Nv. 3: DfE +L_SuperTrain3_SPE = Nv. 3: Vel CHK_Secret = Superentrenamiento -L_Rank3 = NV. 4 -TMedal3_4 = Dificultad tras otra -L_Rank3 = Nv. 5 -TMedal3_5 = Hoja -TMedal3_6 = Fuego -TMedal3_7 = Agua -TMedal4_0 = Evasivas -L_Rank3 = Nv. 6 -TMedal4_1 = Contraataque -TMedal4_2 = Agilidad -TMedal4_3 = Ristras -L_Rank3 = Nv. 7 -TMedal4_4 = Scatterbug -TMedal4_5 = Bombardeo -TMedal4_6 = Hydreigon -L_Rank3 = Nv. 8 -TMedal4_7 = X/Y +L_SuperTrain4_1 = Nv. 4: Dificultad tras otra +L_SuperTrain5_1 = Nv. 5: Hoja +L_SuperTrain5_2 = Nv. 5: Fuego +L_SuperTrain5_3 = Nv. 5: Agua +L_SuperTrain5_4 = Nv. 5: Evasivas +L_SuperTrain6_1 = Nv. 6: Contraataque +L_SuperTrain6_2 = Nv. 6: Agilidad +L_SuperTrain6_3 = Nv. 6: Ristras +L_SuperTrain7_1 = Nv. 7: Scatterbug +L_SuperTrain7_2 = Nv. 7: Bombardeo +L_SuperTrain7_3 = Nv. 7: Hydreigon +L_SuperTrain8_1 = Nv. 8: X/Y --- -L_Bag = Last Used Bag: -L_Hits = Hits Remaining: +L_Bag = Último saco usado: +L_Hits = Golpes restantes: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. Memories / Amie UI Below -! MemoryAmie +- DO NOT CHANGE THIS SECTION. +! MemoryAmie = Editor de Memorias / Amigos - Change stuff below this line, not above. ---------------------Bottom UI------------------------- BTN_Cancel = Cancelar @@ -286,11 +339,463 @@ L_Handler = Manejador Actual: Tab_OTMemory = Memorias con: EO L_OT_Friendship = Amistad: L_OT_Affection = Cariño: -Tab_CTMemory = Memorias con: notEO +Tab_CTMemory = Memorias con: noEO L_CT_Friendship = Amistad: L_cT_Affection = Cariño: Tab_Residence = Residencia -- +L_Country = País +L_Region = Región +L_Geo0 = Último: +L_Geo1 = Anterior 1: +L_Geo2 = Anterior 2: +L_Geo3 = Anterior 3: +L_Geo4 = Anterior 4: -- L_Arguments = Disabled ; Never left ; OT ; Past Gen ; Memories with ; Pokémon ; Area ; Item(s) ; Move ; Location ; ! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! f2_Text = Special Characters +- Change stuff below this line, not above. +------------------------------------------------------- +-- No Elements to rename here. +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_BerryField = Visor de Campos de Bayas +- Change stuff below this line, not above. +------------------------------------------------------- +L_Berry = Baya: +L_Field = Campo: +L_Unfinished = Unfinished: Needs More Research +L_u1 = 1 +L_u2 = 2 +L_u3 = 3 +L_u4 = 4 +L_u5 = 5 +L_u6 = 6 +L_u7 = 7 +B_Cancel = Cancelar +B_Save = Guardar +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. Memories / Amie UI Below +! SAV_BoxLayout = Box Layout Editor +- Change stuff below this line, not above. +------------------------------------------------------- +L_Unlocked = Unlocked: +B_Cancel = Cancel +B_Save = Save +L_Flags = Unlocked BG Flags: +L_BG = BG: +L_BoxName = Box Name: +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_EventFlagsORAS = Editor de Eventos (ORAS) +- Change stuff below this line, not above. +------------------------------------------------------ +L_Ash = Asho volcánico: +GB_Misc = Misc +flag_0288 = Multi Statuette +flag_0287 = Rotation Statuette +flag_0286 = Triples Statuette +flag_0293 = Super Multi Unlocked +flag_0292 = Super Rotation Unlocked +flag_0291 = Super Triples Unlocked +flag_0290 = Super Doubles Unlocked +flag_0289 = Super Singles Unlocked +flag_0285 = Doubles Statuette +flag_0284 = Singles Statuette +GB_Rebattle = Rebattle +flag_2835 = (AS) Latios Capturado +flag_0420 = (AS) Latios Derrotado +L_SkyTower = *Sky Tower +flag_2834 = (OR) Latias Capturado +flag_0419 = (OR) Latias Derrotado +flag_2828 = (OR) Tornadus Capturado +flag_2830 = (OR) Reshiram Capturado +flag_0182 = (OR) Reshiram Derrotado +flag_2820 = (OR) Palkia Capturado +flag_2839 = (OR) Groudon Capturado +flag_0648 = (OR) Groudon Derrotado +flag_2815 = (OR) Ho-Oh Capturado +flag_0208 = (OR) Ho-Oh Derrotado +flag_2824 = Cresselia Capturado +flag_0172 = Cresselia Derrotado +flag_2821 = Heatran Capturado +flag_0260 = Heatran Derrotado +flag_2842 = Deoxys Capturado +flag_0945 = Deoxys Derrotado +flag_2838 = Registeel Capturado +flag_0958 = Registeel Derrotado +flag_2836 = Regirock Capturado +flag_0956 = Regirock Derrotado +flag_2837 = Regice Capturado +flag_0957 = Regice Derrotado +flag_2813 = Suicune Capturado +flag_0175 = Suicune Derrotado +flag_2811 = Raikou Capturado +flag_0173 = Raikou Derrotado +flag_2812 = Entei Capturado +flag_0174 = Entei Derrotado +flag_2832 = Landorus Capturado +flag_2829 = (AS) Thundurus Capturado +flag_2822 = Regigigas Capturado +flag_0252 = Regigigas Derrotado +flag_2827 = Virizion Capturado +flag_0178 = Virizion Derrotado +flag_2826 = Terrakion Capturado +flag_0177 = Terrakion Derrotado +flag_2823 = Giratina Capturado +flag_2819 = (AS) Dialga Capturado +flag_2833 = Kyurem Capturado +flag_0184 = Kyurem Derrotado +flag_2816 = Uxie Capturado +flag_0179 = Uxie Derrotado +flag_2817 = Mesprit Capturado +flag_0180 = Mesprit Derrotado +flag_2825 = Cobalion Capturado +flag_0176 = Cobalion Derrotado +flag_2814 = (AS) Lugia Capturado +flag_0209 = (AS) Lugia Derrotado +flag_2818 = Azelf Capturado +flag_0181 = Azelf Derrotado +flag_2831 = (AS) Zekrom Capturado +flag_0183 = (AS) Zekrom Derrotado +flag_2840 = (AS) Kyogre Capturado +flag_0647 = (AS) Kyogre Derrotado +GB_Researcher = FlagDiff Researcher +L_UnSet = UnSet +L_IsSet = IsSet +B_LoadNew = Carg. Nuevo +B_LoadOld = Carg. Antiguo +GB_FlagStatus = Check Flag Status +L_Flag = Flag: +CHK_CustomFlag = Estado: +B_Save = Guardar +B_Cancel = Cancelar +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_EventFlagsXY = Editor de Eventos (XY) +- Change stuff below this line, not above. +------------------------------------------------------- +flag_2546 = Pokédex Obtained +GB_Misc = Misc +flag_0289 = Multi Statuette +flag_0288 = Rotation Statuette +flag_0287 = Triples Statuette +flag_0294 = Super Multi Unlocked +flag_0293 = Super Rotation Unlocked +flag_0292 = Super Triples Unlocked +flag_0291 = Super Doubles Unlocked +flag_0290 = Super Singles Unlocked +flag_0675 = 50: Beat Chatelaine +flag_0286 = Doubles Statuette +flag_0285 = Singles Statuette +GB_Rebattle = Rebattle +flag_0114 = Zygarde Capturado +flag_0790 = Zygarde Derrotado +flag_0115 = Mewtwo Capturado +flag_0963 = Mewtwo Derrotado +GB_Researcher = FlagDiff Researcher +L_UnSet = UnSet +L_IsSet = IsSet +B_LoadNew = Carg. Nuevo +B_LoadOld = Carg. Antiguo +flag_2239 = 2239 +flag_2238 = 2238 +flag_2237 = 2237 +B_Save = Guardar +flag_0005 = Flag5 +flag_0004 = Flag4 +flag_0003 = Flag3 +flag_0002 = Flag2 +flag_0001 = Flag1 +GB_FlagStatus = Check Flag Status +L_Flag = Flag: +CHK_CustomFlag = Estado: +B_Cancel = Cancelar +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_PokedexORAS = Editor de Pokédex (ORAS) +- Change stuff below this line, not above. +------------------------------------------------------ +L_goto = goto: +GB_Owned = Obtenido +CHK_P1 = Obtenido +CHK_P2 = Macho +CHK_P3 = Hembra +CHK_P4 = Macho brillante +CHK_P5 = Hembra brillante +GB_Encountered = Encontrado +CHK_P6 = Macho +CHK_P7 = Hembra +CHK_P8 = Macho brillante +CHK_P9 = Hembra brillante +L_DexNav = Nvl. DexNav: +GB_Language = Idiomas +CHK_L1 = Japonés +CHK_L2 = Inglés +CHK_L3 = Francés +CHK_L4 = Italiano +CHK_L5 = Alemán +CHK_L6 = Español +CHK_L7 = Coreano +B_Modify = Modificar... +B_GiveAll = Marcar todos +L_Spinda = Spinda: +B_Save = Guardar +B_Cancel = Cancelar +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_PokedexXY = Editor de Pokédex (XY) +- Change stuff below this line, not above. +------------------------------------------------------- +L_goto = goto: +GB_Owned = Obtenido +CHK_F1 = Extranjero (Pre) +CHK_P1 = Nativo (Kalos) +GB_Encountered = Encontrado +CHK_P2 = Macho +CHK_P3 = Hembra +CHK_P4 = Macho brillante +CHK_P5 = Hembra brillante +GB_Displayed = Mostrado +CHK_P6 = Macho +CHK_P7 = Hembra +CHK_P8 = Macho brillante +CHK_P9 = Hembra brillante +GB_Language = Idiomas +CHK_L1 = Japonés +CHK_L2 = Inglés +CHK_L3 = Francés +CHK_L4 = Italiano +CHK_L5 = Alemán +CHK_L6 = Español +CHK_L7 = Coreano +B_Modify = Modificar... +B_GiveAll = Marcar todos +L_Spinda = Spinda: +B_Save = Guardar +B_Cancel = Cancelar +! End +------------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_HallOfFame = Editor de Hall de la Fama +- Change stuff below this line, not above. +------------------------------------------------------- +B_CopyText = Copiar txt +L_Level = Nivel: +L_Shiny = Brillante: +Label_Form = Forma: +B_Cancel = Canceler +Label_MetDate = Fecha: +L_Victory = Núm. Victorias: +GB_OT = Info del Entrenador +Label_OT = OT: +Label_SID = SID: +Label_TID = TID: +Label_HeldItem = Objeto: +GB_CurrentMoves = Mov. actuales +Label_EncryptionConstant = Cte. de Encriptación: +CHK_Nicknamed = Apodo: +Label_Species = Especie: +L_PartyNum = N. equipo: +B_Close = Guardar +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_Inventory = Editor de Inventario +- Change stuff below this line, not above. +------------------------------------------------------- +GB_Pouch = Pokélitos +B_DisplayBerries = Bayas +B_DisplayMedicine = Medicinas +B_DisplayTMHM = MT/MO +B_DisplayKeyItems = Objetos clave +B_DisplayItems = Objetos +B_Save = Guardar +B_Cancel = Cancelar +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_OPower = Editor de Poder O +- Change stuff below this line, not above. +------------------------------------------------------- +GB_Regular = Regular +B_MaxP = Give All +L_1 = Hatching: +L_2 = Bargain: +L_3 = ?Prize: +L_4 = EXP: +L_5 = Capture: +L_6 = ?Encounter +L_7 = ?Stealth: +L_8 = HP Restore: +L_9 = ?PP: +L_10 = ?Befriend: +L_11 = ?Attack: +L_12 = ?Defense: +L_13 = ?Sp. Atk: +L_14 = ?Sp. Def: +L_15 = ?Speed: +L_16 = ?Critical Hit: +L_17 = ?Accuracy: +GB_Event = Event +CHK_1 = ?Bargain MAX +CHK_2 = ?EXP MAX +CHK_3 = ?Prize MAX +CHK_4 = ?Hatch MAX +CHK_5 = ?Capture MAX +CHK_6 = ?Restore MAX +CHK_7 = ?Befriend MAX +CHK_8 = ?Unused +B_AllMax = Give All +B_Save = Save +B_Cancel = Cancel +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_Pokepuff = ‎Poké Puffs Editor +- Change stuff below this line, not above. +------------------------------------------------------- +L_Count = CNT: +B_None = None +B_Sort = Sort +B_All = All +B_Cancel = Cancel +B_Save = Save +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_SecretBase = Secret Base Editor +- Change stuff below this line, not above. +------------------------------------------------------- +L_FlagsCaptured = Flags Captured: +B_FSave = < +B_GiveDecor = Give All Decorations +B_Cancel = Cancel +B_Save = Save +B_FDisplay = > +L_Favorite = Favorites: +-- +f_MAIN = Main +L_TrName = Trainer Name: +L_BaseLocation = Secret Base Location: +L_Happy = Happy: +L_Encourage = Encourage: +L_Blackboard = Blackboard: +L_Confetti = Confetti: +L_TeamName = Team Name: +L_TeamSlogan = Team Slogan: +-- +GB_Object = Object Layout +L_Index = Index: +L_Decoration = Decoration: +L_Rotation = Rotation Val: +L_X = X Coordinate: +L_Y = Y Coordinate: +-- +f_PKM = Trainer Pokémon +GB_PKM = PKM +L_Participant = Participant: +L_EncryptionConstant = ENC: +L_IVs = IVs +L_EVs = EVs +L_HP = HP +L_ATK = ATK +L_DEF = DEF +L_SpA = SpA +L_SpD = SpD +L_SPE = SPE +L_PKFriendship = Friendship: +L_PPUps = PPUps +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_Trainer = Trainer Data Editor +- Change stuff below this line, not above. +------------------------------------------------------- +Tab_Multiplayer = Multiplayer +L_MultiplayerSprite = Multiplayer Sprite: +L_Style = Style: +Tab_BadgeMap = Badges/Map +GB_Map = Map Position +L_CurrentMap = Current Map: +L_X = X Coordinate: +L_Z = Z Coordinate: +L_Y = Y Coordinate: +L_Offset = (offset) +Tab_Appearance = Current Appearance (X/Y) +L_Outfit = Outfit Vals +B_GiveAccessories = Give All Accessories +L_Dress = Dress: +L_Accessory = Accessory: +L_Bag = Bag: +L_Socks = Socks: +L_Pants = Pants: +L_Shirt = Shirt: +L_Hat = Hat: +L_FacialHair = Facial Hair: +L_Hairstyle = Hairstyle: +L_HairColor = Hair Color: +L_SkinColor = Skin Color: +GB_MaisonCurrent = Maison Streaks (Current) +L_SuperC = Super +L_NormalC = Normal +L_MultiC = Multi: +L_RotationC = Rotation: +L_TriplesC = Triples: +L_DoublesC = Doubles: +L_SinglesC = Singles: +GB_MaisonBest = Maison Streaks (Best) +L_SuperB = Super +L_NormalB = Normal +L_MultiB = Multi: +L_RotationB = Rotation: +L_TriplesB = Triples: +L_DoublesB = Doubles: +L_SinglesB = Singles: +B_Save = Save +L_Stats = Stats +B_Cancel = Cancel +Tab_Overview = Overview +L_Seconds = Sec: +L_Minutes = Min: +L_Hours = Hrs: +L_Language = Language: +L_PM = PokéMiles: +L_Region = Region: +L_BP = BP: +L_Country = Country: +B_MaxCash = + +L_3DSReg = 3DS Region: +L_Money = $: +L_SID = SID: +L_TID = TID: +L_TrainerName = Trainer Name: +L_Value = Value +GB_Sayings = Saved Sayings +L_Saying1 = 1: +L_Saying2 = 2: +L_Saying3 = 3: +L_Saying4 = 4: +L_Saying5 = 5: +! End +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SAV_Wondercard = Wonder Card I/O +- Change stuff below this line, not above. +------------------------------------------------------- +L_Details = Details: +L_Received = Received List: +B_Import = Import +B_Output = Export +B_Cancel = Cancel +B_Save = Save +! End \ No newline at end of file diff --git a/Resources/text/es/text_EncounterType_es.txt b/Resources/text/es/text_EncounterType_es.txt index 99492d953..c0c7536c4 100644 --- a/Resources/text/es/text_EncounterType_es.txt +++ b/Resources/text/es/text_EncounterType_es.txt @@ -1,16 +1,16 @@ None -Rock Smash (HGSS) -Tall Grass +Golpe roca (HGSS) +Hierba Alta Dialga/Palkia -Cave/Hall of Origin +Cueva/Sala del Origen -Surfing/Fishing +Surfeando/Pescando -Building/Enigma Stone -Marsh/Safari +Edificio/Misticristal +Pantano/Safari -Starter/Fossil/Gift (DP) +Inicial/Fosil/Regalo (DP) @@ -21,5 +21,5 @@ Starter/Fossil/Gift (DP) -Distortion World (Pt) -Starter/Fossil/Gift (Pt/DP Trio) \ No newline at end of file +Mundo Distorsion (Pt) +Inicial/Fosil/Regalo (Pt/DP Trio) \ No newline at end of file diff --git a/Resources/text/es/text_Forms_es.txt b/Resources/text/es/text_Forms_es.txt index a6cef80de..2ad2e7655 100644 --- a/Resources/text/es/text_Forms_es.txt +++ b/Resources/text/es/text_Forms_es.txt @@ -1,4 +1,4 @@ - +Spiky diff --git a/Resources/text/es/text_Games_es.txt b/Resources/text/es/text_Games_es.txt index 2edc80d22..d25560725 100644 --- a/Resources/text/es/text_Games_es.txt +++ b/Resources/text/es/text_Games_es.txt @@ -5,8 +5,8 @@ Esmeralda RojoFuego VerdeHoja -HeartGold -SoulSilver +Oro HeartGold +Plata SoulSilver Diamante Perla @@ -24,5 +24,5 @@ Blanca2 Negra2 X Y -AS -OR \ No newline at end of file +Zafiro Alfa +Rubí Omega \ No newline at end of file diff --git a/Resources/text/fr/lang_fr.txt b/Resources/text/fr/lang_fr.txt index b4cb4c8a3..3eb8c9291 100644 --- a/Resources/text/fr/lang_fr.txt +++ b/Resources/text/fr/lang_fr.txt @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = File Menu_Open = Ouvrir... -Menu_Save = Enregistrer PK6... +Menu_Save = Enregistrer PKM... Menu_ExportSAV = Enregistrer SAV... Menu_ExportMAIN = Enregistrer main Menu_ExportBAK = Enregistrer BAK @@ -26,8 +26,8 @@ Menu_Exit = Quitter -- Menu_Tools = Outils Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = Import Set from Clipboard -Menu_ShowdownExportPK6 = Export Set to Clipboard +Menu_ShowdownImportPKM = Import Set from Clipboard +Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard Menu_CyberGadget = CyberGadget @@ -37,7 +37,7 @@ Menu_Data = Données Menu_LoadBoxes = Charger Boîtes Menu_DumpBoxes = Dumper Boîtes Menu_Report = Rapport de données Box -Menu_Database = Base de données PK6 +Menu_Database = Base de données PKM Menu_Other = Autre Menu_OpenSDF = Ouvrir le dossier SaveDataFiler Menu_OpenSDB = Ouvrir le dossier SaveDataBackup @@ -46,7 +46,7 @@ Menu_Options = Options Menu_Language = Langue Menu_Modify = Réglez SAV Menu_ModifyDex = Modifier Pokédex Infos -Menu_ModifyPK6 = Modifier PK6 Infos +Menu_ModifyPKM = Modifier PKM Infos Menu_Unicode = Unicode Menu_About = A propos de PKHeX --------------------Context Menus---------------------- @@ -129,8 +129,9 @@ GB_nOT = Dernier Dresseur connu Label_PrevOT = DO : GB_ExtraBytes = Octets supplémentaires GB_Markings = Marquages -BTN_Ribbons = Rubans / Médaill. -BTN_History = Souvenirs/Récré +BTN_Ribbons = Rubans +BTN_Medals = Médaill. +BTN_History = Souvenirs Label_EncryptionConstant = Valeur de cryptage : BTN_RerollEC = Edit. -----------------Save Data Interface-------------------- @@ -170,105 +171,156 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. Ribbons / Medals UI Below -! RibbonMedal +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Ribbon Editor - Change stuff below this line, not above. ----------------------Buttons-------------------------- BTN_All = Donner tout BTN_None = Retirer tout BTN_Cancel = Annuler BTN_Save = Sauvegarder --------------------Ribbons/Medals---------------------- -Tab_Kalos = Rubans courants -Tab_Extra = Rubans divers -Tab_Medals = Médailles Dresseur -GB_Kalos12 = Série 1 -Kalos1a_0 = Maître Kalos -Kalos1a_1 = Maître Hoenn -Kalos1a_2 = Maître Sinnoh -Kalos1a_3 = Affection -Kalos1a_4 = Perfectionnement -Kalos1a_5 = Élite -Kalos1a_6 = Génie -Kalos1a_7 = Effort ---- -Kalos1b_0 = Alerte -Kalos1b_1 = Choc -Kalos1b_2 = Déprime -Kalos1b_3 = Négligence -Kalos1b_4 = Détente -Kalos1b_5 = Sieste -Kalos1b_6 = Sourire -Kalos1b_7 = Sublime ---- -GB_Kalos34 = Série 2 -Kalos2a_0 = Royal -Kalos2a_1 = Royal Sublime -Kalos2a_2 = Artiste -Kalos2a_3 = Empreinte -Kalos2a_4 = Record -Kalos2a_5 = Légende -Kalos2a_6 = Pays -Kalos2a_7 = National ---- -Kalos2b_0 = Terre -Kalos2b_1 = Monde -Kalos2b_2 = Classique -Kalos2b_3 = Premier -Kalos2b_4 = Événement -Kalos2b_5 = Anniversaire -Kalos2b_6 = Spécial -Kalos2b_7 = Souvenir ---- -GB_Extra1 = Série 3 -Extra1_0 = Souhait -Extra1_1 = Vainqueur Championnat -Extra1_2 = Champion Régional -Extra1_3 = Champion National -Extra1_4 = Champion du Monde -L_PastContest = Souvenir Concours : -L_PastBattle = Souvenir Combat : -------------------Super Training--------------------- -L_SuperTraining = Entraînement Normal / Super -L_Rank1 = Rang 1 -TMedal1_3 = PV -TMedal1_4 = Attq. -TMedal1_7 = Déf. -TMedal1_2 = A. Spé. -TMedal1_5 = D. Spé. -TMedal1_6 = Vit. -L_Rank2 = Rang 2 -TMedal2_1 = PV -TMedal2_2 = Attq. -TMedal2_5 = Déf. -TMedal2_0 = A. Spé. -TMedal2_3 = D. Spé. -TMedal2_4 = Vit. -L_Rank3 = Rang 3 -TMedal2_7 = PV -TMedal3_0 = Attq. -TMedal3_3 = Déf. -TMedal2_6 = A. Spé. -TMedal3_1 = D. Spé. -TMedal3_2 = Vit. +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = Maître Kalos +L_RibbonChampionG3Hoenn = Maître Hoenn (RSE) +L_RibbonChampionSinnoh = Maître Sinnoh +L_RibbonBestFriends = Affection +L_RibbonTraining = Perfectionnement +L_RibbonBattlerSkillful = Élite +L_RibbonBattlerExpert = Génie +L_RibbonEffort = Effort +L_RibbonAlert = Alerte +L_RibbonShock = Choc +L_RibbonDowncast = Déprime +L_RibbonCareless = Négligence +L_RibbonRelax = Détente +L_RibbonSnooze = Sieste +L_RibbonSmile = Sourire +L_RibbonGorgeous = Sublime +L_RibbonRoyal = Royal +L_RibbonGorgeousRoyal = Royal Sublime +L_RibbonArtist = Artiste +L_RibbonFootprint = Empreinte +L_RibbonRecord = Record +L_RibbonLegend = Légende +L_RibbonCountry = Pays +L_RibbonNational = National +L_RibbonEarth = Terre +L_RibbonWorld = Monde +L_RibbonClassic = Classique +L_RibbonPremier = Premier +L_RibbonEvent = Événement +L_RibbonBirthday = Anniversaire +L_RibbonSpecial = Spécial +L_RibbonSouvenir = Souvenir +L_RibbonWishing = Souhait +L_RibbonChampionBattle = Vainqueur Championnat +L_RibbonChampionRegional = Champion Régional +L_RibbonChampionNational = Champion National +L_RibbonChampionWorld = Champion du Monde +L_RibbonCountMemoryContest = Souvenir Concours +L_RibbonCountMemoryBattle = Souvenir Combat +L_RibbonChampionG6Hoenn = Hoenn Champion (ORAS) +L_RibbonContestStar = Contest Star +L_RibbonMasterCoolness = Coolness Master +L_RibbonMasterBeauty = Beauty Master +L_RibbonMasterCuteness = Cuteness Master +L_RibbonMasterCleverness = Cleverness Master +L_RibbonMasterToughness = Toughness Master +----------------Contest/Battle (PAST)------------------- +L_RibbonG3Cool = Cool (G3) +L_RibbonG3CoolSuper = Cool Super +L_RibbonG3CoolHyper = Cool Hyper +L_RibbonG3CoolMaster = Cool Master +L_RibbonG3Beauty = Beauty (G3) +L_RibbonG3BeautySuper = Beauty Super +L_RibbonG3BeautyHyper = Beauty Hyper +L_RibbonG3BeautyMaster = Beauty Master +L_RibbonG3Cute = Cute (G3) +L_RibbonG3CuteSuper = Cute Super +L_RibbonG3CuteHyper = Cute Hyper +L_RibbonG3CuteMaster = Cute Master +L_RibbonG3Smart = Smart (G3) +L_RibbonG3SmartSuper = Smart Super +L_RibbonG3SmartHyper = Smart Hyper +L_RibbonG3SmartMaster = Smart Master +L_RibbonG3Tough = Tough (G3) +L_RibbonG3ToughSuper = Tough Super +L_RibbonG3ToughHyper = Tough Hyper +L_RibbonG3ToughMaster = Tough Master +L_RibbonG4Cool = Cool (G4) +L_RibbonG4CoolGreat = Cool Great +L_RibbonG4CoolUltra = Cool Ultra +L_RibbonG4CoolMaster = Cool Master +L_RibbonG4Beauty = Beauty (G4) +L_RibbonG4BeautyGreat = Beauty Great +L_RibbonG4BeautyUltra = Beauty Ultra +L_RibbonG4BeautyMaster = Beauty Master +L_RibbonG4Cute = Cute (G4) +L_RibbonG4CuteGreat = Cute Great +L_RibbonG4CuteUltra = Cute Ultra +L_RibbonG4CuteMaster = Cute Master +L_RibbonG4Smart = Smart (G4) +L_RibbonG4SmartGreat = Smart Great +L_RibbonG4SmartUltra = Smart Ultra +L_RibbonG4SmartMaster = Smart Master +L_RibbonG4Tough = Tough (G4) +L_RibbonG4ToughGreat = Tough Great +L_RibbonG4ToughUltra = Tough Ultra +L_RibbonG4ToughMaster = Tough Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = Cool +L_RibbonCountG3Beauty = Beauty +L_RibbonCountG3Cute = Cute +L_RibbonCountG3Smart = Smart +L_RibbonCountG3Tough = Tough +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Medal Editor +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +------------------Super Training----------------------- +L_SuperTrain1_HP = Rang 1: PV +L_SuperTrain1_ATK = Rang 1: Attq. +L_SuperTrain1_DEF = Rang 1: Déf. +L_SuperTrain1_SPA = Rang 1: A. Spé. +L_SuperTrain1_SPD = Rang 1: D. Spé. +L_SuperTrain1_SPE = Rang 1: Vit. +L_SuperTrain2_HP = Rang 2: PV +L_SuperTrain2_ATK = Rang 2: Attq. +L_SuperTrain2_DEF = Rang 2: Déf. +L_SuperTrain2_SPA = Rang 2: A. Spé. +L_SuperTrain2_SPD = Rang 2: D. Spé. +L_SuperTrain2_SPE = Rang 2: Vit. +L_SuperTrain3_HP = Rang 3: PV +L_SuperTrain3_ATK = Rang 3: Attq. +L_SuperTrain3_DEF = Rang 3: Déf. +L_SuperTrain3_SPA = Rang 3: A. Spé. +L_SuperTrain3_SPD = Rang 3: D. Spé. +L_SuperTrain3_SPE = Rang 3: Vit. CHK_Secret = Entraînement Secret Activé -L_Rank3 = Rang 4 -TMedal3_4 = Troubles -L_Rank3 = Rang 5 -TMedal3_5 = Plante -TMedal3_6 = Feu -TMedal3_7 = Eau -TMedal4_0 = Cibles Fuyantes -L_Rank3 = Rang 6 -TMedal4_1 = Riposte -TMedal4_2 = Rapide -TMedal4_3 = Longue -L_Rank3 = Rang 7 -TMedal4_4 = Lépidonille -TMedal4_5 = Ballon Pixel -TMedal4_6 = Trioxhydre -L_Rank3 = Rang 8 -TMedal4_7 = X / Y +L_SuperTrain4_1 = Rang 4: Troubles +L_SuperTrain5_1 = Rang 5: Plante +L_SuperTrain5_2 = Rang 5: Feu +L_SuperTrain5_3 = Rang 5: Eau +L_SuperTrain5_4 = Rang 5: Cibles Fuyantes +L_SuperTrain6_1 = Rang 6: Riposte +L_SuperTrain6_2 = Rang 6: Rapide +L_SuperTrain6_3 = Rang 6: Longue +L_SuperTrain7_1 = Rang 7: Lépidonille +L_SuperTrain7_2 = Rang 7: Ballon Pixel +L_SuperTrain7_3 = Rang 7: Trioxhydre +L_SuperTrain8_1 = Rang 8: X / Y --- L_Bag = Last Used Bag: L_Hits = Hits Remaining: diff --git a/Resources/text/fr/text_Forms_fr.txt b/Resources/text/fr/text_Forms_fr.txt index ed0229aa3..47befb30c 100644 --- a/Resources/text/fr/text_Forms_fr.txt +++ b/Resources/text/fr/text_Forms_fr.txt @@ -1,4 +1,4 @@ - +Spiky diff --git a/Resources/text/gen3/text_ItemsG3_en.txt b/Resources/text/gen3/text_ItemsG3_en.txt new file mode 100644 index 000000000..99af64863 Binary files /dev/null and b/Resources/text/gen3/text_ItemsG3_en.txt differ diff --git a/Resources/text/gen3/text_rsefrlg_00000_en.txt b/Resources/text/gen3/text_rsefrlg_00000_en.txt new file mode 100644 index 000000000..62f73ec94 Binary files /dev/null and b/Resources/text/gen3/text_rsefrlg_00000_en.txt differ diff --git a/Resources/text/it/lang_it.txt b/Resources/text/it/lang_it.txt index 4ae5b2196..192f8e996 100644 --- a/Resources/text/it/lang_it.txt +++ b/Resources/text/it/lang_it.txt @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = File Menu_Open = Open... -Menu_Save = Save PK6... +Menu_Save = Save PKM... Menu_ExportSAV = Export SAV... Menu_ExportMAIN = Export main Menu_ExportBAK = Export BAK @@ -26,8 +26,8 @@ Menu_Exit = Quit -- Menu_Tools = Tools Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = Import Set from Clipboard -Menu_ShowdownExportPK6 = Export Set to Clipboard +Menu_ShowdownImportPKM = Import Set from Clipboard +Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard Menu_CyberGadget = CyberGadget @@ -37,7 +37,7 @@ Menu_Data = Data Menu_LoadBoxes = Load Boxes Menu_DumpBoxes = Dump Boxes Menu_Report = Box Data Report -Menu_Database = PK6 Database +Menu_Database = PKM Database Menu_Other = Other Menu_OpenSDF = Open SaveDataFiler Folder Menu_OpenSDB = Open SaveDataBackup Folder @@ -46,7 +46,7 @@ Menu_Options = Options Menu_Language = Language Menu_Modify = Set to SAV Menu_ModifyDex = Modify Pokédex -Menu_ModifyPK6 = Modify PK6 Info +Menu_ModifyPKM = Modify PKM Info Menu_Unicode = Unicode Menu_About = About PKHeX --------------------Context Menus---------------------- @@ -129,8 +129,9 @@ GB_nOT = Latest (not OT) Handler Label_PrevOT = OT: GB_ExtraBytes = Extra Bytes GB_Markings = Markings -BTN_Ribbons = Ribbons/Medals -BTN_History = Memories/Amie +BTN_Ribbons = Ribbons +BTN_Medals = Medals +BTN_History = Memories Label_EncryptionConstant = Encryption Constant: BTN_RerollEC = Reroll -----------------Save Data Interface-------------------- @@ -171,113 +172,156 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. -! RibbonMedal = Ribbon / Medal Editor +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Ribbon Editor - Change stuff below this line, not above. ----------------------Buttons-------------------------- BTN_All = Give All BTN_None = Remove All BTN_Cancel = Cancel BTN_Save = Save --------------------Ribbons/Medals---------------------- -Tab_Kalos = Common Ribbons -Tab_Extra = Extra Ribbons -Tab_Medals = Training Medals -GB_Kalos12 = Set 1 -Kalos1a_0 = Kalos Champ -Kalos1a_1 = Hoenn Champ -Kalos1a_2 = Sinnoh Champ -Kalos1a_3 = Best Friends -Kalos1a_4 = Training -Kalos1a_5 = Skillful Battler -Kalos1a_6 = Expert Battler -Kalos1a_7 = Effort ---- -Kalos1b_0 = Alert -Kalos1b_1 = Shock -Kalos1b_2 = Downcast -Kalos1b_3 = Careless -Kalos1b_4 = Relax -Kalos1b_5 = Snooze -Kalos1b_6 = Smile -Kalos1b_7 = Gorgeous ---- -GB_Kalos34 = Set 2 -Kalos2a_0 = Royal -Kalos2a_1 = Gorgeous Royal -Kalos2a_2 = Artist -Kalos2a_3 = Footprint -Kalos2a_4 = Record -Kalos2a_5 = Legend -Kalos2a_6 = Country -Kalos2a_7 = National ---- -Kalos2b_0 = Earth -Kalos2b_1 = World -Kalos2b_2 = Classic -Kalos2b_3 = Premier -Kalos2b_4 = Event -Kalos2b_5 = Birthday -Kalos2b_6 = Special -Kalos2b_7 = Souvenir ---- -GB_Extra1 = Set 3 -Extra1_0 = Wishing -Extra1_1 = Battle Champ -Extra1_2 = Regional Champ -Extra1_3 = National Champ -Extra1_4 = World Champ -L_PastContest = Past Contest Ribbons: -L_PastBattle = Past Battle Ribbons: ---- -Extra1_7 = Hoenn Champion -ORAS_0 = Contest Star -ORAS_1 = Coolness Master -ORAS_2 = Beauty Master -ORAS_3 = Cuteness Master -ORAS_4 = Cleverness Master -ORAS_5 = Toughness Master -------------------Super Training--------------------- -L_SuperTraining = Normal Super Training -L_Rank1 = Rank 1 -TMedal1_3 = HP -TMedal1_4 = Atk -TMedal1_7 = Def -TMedal1_2 = SpA -TMedal1_5 = SpD -TMedal1_6 = Spe -L_Rank2 = Rank 2 -TMedal2_1 = HP -TMedal2_2 = Atk -TMedal2_5 = Def -TMedal2_0 = SpA -TMedal2_3 = SpD -TMedal2_4 = Spe -L_Rank3 = Rank 3 -TMedal2_7 = HP -TMedal3_0 = Atk -TMedal3_3 = Def -TMedal2_6 = SpA -TMedal3_1 = SpD -TMedal3_2 = Spe +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = Kalos Champion +L_RibbonChampionG3Hoenn = Hoenn Champion (RSE) +L_RibbonChampionSinnoh = Sinnoh Champion +L_RibbonBestFriends = Best Friends +L_RibbonTraining = Training +L_RibbonBattlerSkillful = Skillful Battler +L_RibbonBattlerExpert = Expert Battler +L_RibbonEffort = Effort +L_RibbonAlert = Alert +L_RibbonShock = Shock +L_RibbonDowncast = Downcast +L_RibbonCareless = Careless +L_RibbonRelax = Relax +L_RibbonSnooze = Snooze +L_RibbonSmile = Smile +L_RibbonGorgeous = Gorgeous +L_RibbonRoyal = Royal +L_RibbonGorgeousRoyal = Gorgeous Royal +L_RibbonArtist = Artist +L_RibbonFootprint = Footprint +L_RibbonRecord = Record +L_RibbonLegend = Legend +L_RibbonCountry = Country +L_RibbonNational = National +L_RibbonEarth = Earth +L_RibbonWorld = World +L_RibbonClassic = Classic +L_RibbonPremier = Premier +L_RibbonEvent = Event +L_RibbonBirthday = Birthday +L_RibbonSpecial = Special +L_RibbonSouvenir = Souvenir +L_RibbonWishing = Wishing +L_RibbonChampionBattle = Battle Champion +L_RibbonChampionRegional = Regional Champion +L_RibbonChampionNational = National Champion +L_RibbonChampionWorld = World Champion +L_RibbonCountMemoryContest = Past Contest Ribbons +L_RibbonCountMemoryBattle = Past Battle Ribbons +L_RibbonChampionG6Hoenn = Hoenn Champion (ORAS) +L_RibbonContestStar = Contest Star +L_RibbonMasterCoolness = Coolness Master +L_RibbonMasterBeauty = Beauty Master +L_RibbonMasterCuteness = Cuteness Master +L_RibbonMasterCleverness = Cleverness Master +L_RibbonMasterToughness = Toughness Master +----------------Contest/Battle (PAST)------------------- +L_RibbonG3Cool = Cool (G3) +L_RibbonG3CoolSuper = Cool Super +L_RibbonG3CoolHyper = Cool Hyper +L_RibbonG3CoolMaster = Cool Master +L_RibbonG3Beauty = Beauty (G3) +L_RibbonG3BeautySuper = Beauty Super +L_RibbonG3BeautyHyper = Beauty Hyper +L_RibbonG3BeautyMaster = Beauty Master +L_RibbonG3Cute = Cute (G3) +L_RibbonG3CuteSuper = Cute Super +L_RibbonG3CuteHyper = Cute Hyper +L_RibbonG3CuteMaster = Cute Master +L_RibbonG3Smart = Smart (G3) +L_RibbonG3SmartSuper = Smart Super +L_RibbonG3SmartHyper = Smart Hyper +L_RibbonG3SmartMaster = Smart Master +L_RibbonG3Tough = Tough (G3) +L_RibbonG3ToughSuper = Tough Super +L_RibbonG3ToughHyper = Tough Hyper +L_RibbonG3ToughMaster = Tough Master +L_RibbonG4Cool = Cool (G4) +L_RibbonG4CoolGreat = Cool Great +L_RibbonG4CoolUltra = Cool Ultra +L_RibbonG4CoolMaster = Cool Master +L_RibbonG4Beauty = Beauty (G4) +L_RibbonG4BeautyGreat = Beauty Great +L_RibbonG4BeautyUltra = Beauty Ultra +L_RibbonG4BeautyMaster = Beauty Master +L_RibbonG4Cute = Cute (G4) +L_RibbonG4CuteGreat = Cute Great +L_RibbonG4CuteUltra = Cute Ultra +L_RibbonG4CuteMaster = Cute Master +L_RibbonG4Smart = Smart (G4) +L_RibbonG4SmartGreat = Smart Great +L_RibbonG4SmartUltra = Smart Ultra +L_RibbonG4SmartMaster = Smart Master +L_RibbonG4Tough = Tough (G4) +L_RibbonG4ToughGreat = Tough Great +L_RibbonG4ToughUltra = Tough Ultra +L_RibbonG4ToughMaster = Tough Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = Cool +L_RibbonCountG3Beauty = Beauty +L_RibbonCountG3Cute = Cute +L_RibbonCountG3Smart = Smart +L_RibbonCountG3Tough = Tough +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Medal Editor +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +------------------Super Training----------------------- +L_SuperTrain1_HP = Rank 1: HP +L_SuperTrain1_ATK = Rank 1: Atk +L_SuperTrain1_DEF = Rank 1: Def +L_SuperTrain1_SPA = Rank 1: SpA +L_SuperTrain1_SPD = Rank 1: SpD +L_SuperTrain1_SPE = Rank 1: Spe +L_SuperTrain2_HP = Rank 2: HP +L_SuperTrain2_ATK = Rank 2: Atk +L_SuperTrain2_DEF = Rank 2: Def +L_SuperTrain2_SPA = Rank 2: SpA +L_SuperTrain2_SPD = Rank 2: SpD +L_SuperTrain2_SPE = Rank 2: Spe +L_SuperTrain3_HP = Rank 3: HP +L_SuperTrain3_ATK = Rank 3: Atk +L_SuperTrain3_DEF = Rank 3: Def +L_SuperTrain3_SPA = Rank 3: SpA +L_SuperTrain3_SPD = Rank 3: SpD +L_SuperTrain3_SPE = Rank 3: Spe CHK_Secret = Secret Training Enabled -L_Rank3 = Rank 4 -TMedal3_4 = Troubles -L_Rank3 = Rank 5 -TMedal3_5 = Leaf -TMedal3_6 = Fire -TMedal3_7 = Water -TMedal4_0 = Fleeing -L_Rank3 = Rank 6 -TMedal4_1 = Second -TMedal4_2 = Quick -TMedal4_3 = Long -L_Rank3 = Rank 7 -TMedal4_4 = Scatter -TMedal4_5 = Barrage -TMedal4_6 = Hydreigon -L_Rank3 = Rank 8 -TMedal4_7 = Best +L_SuperTrain4_1 = Rank 4: Troubles +L_SuperTrain5_1 = Rank 5: Leaf +L_SuperTrain5_2 = Rank 5: Fire +L_SuperTrain5_3 = Rank 5: Water +L_SuperTrain5_4 = Rank 5: Fleeing +L_SuperTrain6_1 = Rank 6: Second +L_SuperTrain6_2 = Rank 6: Quick +L_SuperTrain6_3 = Rank 6: Long +L_SuperTrain7_1 = Rank 7: Scatter +L_SuperTrain7_2 = Rank 7: Barrage +L_SuperTrain7_3 = Rank 7: Hydreigon +L_SuperTrain8_1 = Rank 8: Best --- L_Bag = Last Used Bag: L_Hits = Hits Remaining: @@ -749,8 +793,8 @@ L_Saying5 = 5: ------------------------------------------------------- L_Details = Details: L_Received = Received List: -B_Import = Import .wc6 -B_Output = Output .wc6 +B_Import = Import +B_Output = Export B_Cancel = Cancel B_Save = Save ! End \ No newline at end of file diff --git a/Resources/text/it/text_Forms_it.txt b/Resources/text/it/text_Forms_it.txt index ab2aca492..e773f7ee1 100644 --- a/Resources/text/it/text_Forms_it.txt +++ b/Resources/text/it/text_Forms_it.txt @@ -1,4 +1,4 @@ - +Spiky diff --git a/Resources/text/ja/lang_ja.txt b/Resources/text/ja/lang_ja.txt index 630b7c665..3b4a52354 100644 --- a/Resources/text/ja/lang_ja.txt +++ b/Resources/text/ja/lang_ja.txt @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = ファイル Menu_Open = 読み込み... -Menu_Save = 保存 PK6... +Menu_Save = 保存 PKM... Menu_ExportSAV = 保存 SAV... Menu_ExportMAIN = 保存 main Menu_ExportBAK = 保存 BAK @@ -26,8 +26,8 @@ Menu_Exit = やめる -- Menu_Tools = ツール Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = Import Set from Clipboard -Menu_ShowdownExportPK6 = Export Set to Clipboard +Menu_ShowdownImportPKM = Import Set from Clipboard +Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard Menu_CyberGadget = CyberGadget @@ -37,7 +37,7 @@ Menu_Data = データ Menu_LoadBoxes = ロードボックス Menu_DumpBoxes = ダンプボックス Menu_Report = ボックスデータレポート -Menu_Database = PK6データベース +Menu_Database = PKMデータベース Menu_Other = その他 Menu_OpenSDF = オープンSaveDataFilerフォルダ Menu_OpenSDB = オープンSaveDataBackupフォルダ @@ -46,7 +46,7 @@ Menu_Options = 設定 Menu_Language = 言語 Menu_Modify = SAVに設定 Menu_ModifyDex = ポケモン図鑑を変更 -Menu_ModifyPK6 = PK6情報の変更 +Menu_ModifyPKM = PKM情報の変更 Menu_Unicode = Unicode Menu_About = PKHeXについて --------------------Context Menus---------------------- @@ -129,8 +129,9 @@ GB_nOT = 最新の(非親)ハンドラ Label_PrevOT = 親のなまえ GB_ExtraBytes = 余分なバイト GB_Markings = マーキング -BTN_Ribbons = リボン/スーパートレーニング -BTN_History = メモリ/ポケパルレ +BTN_Ribbons = リボン +BTN_Medals = スーパートレーニング +BTN_History = メモリ Label_EncryptionConstant = 暗号化定数 BTN_RerollEC = 新規作成 -----------------Save Data Interface-------------------- @@ -170,105 +171,156 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. Ribbons / Medals UI Below -! RibbonMedal +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Ribbon Editor - Change stuff below this line, not above. ----------------------Buttons-------------------------- BTN_All = すべてを許可する BTN_None = すべての取り外し BTN_Cancel = キャンセル BTN_Save = 保存 --------------------Ribbons/Medals---------------------- -Tab_Kalos = 共通リボン -Tab_Extra = 余分なリボン -Tab_Medals = トレーニングのメダル -GB_Kalos12 = 設定1 -Kalos1a_0 = カロス チャンプ -Kalos1a_1 = ホウエン チャンプ -Kalos1a_2 = シンオウ チャンプ -Kalos1a_3 = なかよし -Kalos1a_4 = しゅぎょう -Kalos1a_5 = グレートバトル -Kalos1a_6 = マスターバトル -Kalos1a_7 = がんば ---- -Kalos1b_0 = しゃっき -Kalos1b_1 = どっき -Kalos1b_2 = しょんぼ -Kalos1b_3 = うっか -Kalos1b_4 = すっき -Kalos1b_5 = ぐっす -Kalos1b_6 = にっこ -Kalos1b_7 = ゴージャス ---- -GB_Kalos34 = 設定2 -Kalos2a_0 = ロイヤル -Kalos2a_1 = ゴージャスロイヤル -Kalos2a_2 = ブロマイド -Kalos2a_3 = あしあと -Kalos2a_4 = レコード -Kalos2a_5 = レジェンド -Kalos2a_6 = カントリー -Kalos2a_7 = ナショナル ---- -Kalos2b_0 = アース -Kalos2b_1 = ワールド -Kalos2b_2 = クラシック -Kalos2b_3 = プレミア -Kalos2b_4 = イベント -Kalos2b_5 = バースデー -Kalos2b_6 = スペシャル -Kalos2b_7 = メモリアル ---- -GB_Extra1 = 設定3 -Extra1_0 = ウィッシュ -Extra1_1 = バトルチャンプ -Extra1_2 = エリアチャンプ -Extra1_3 = ナショナルチャンプ -Extra1_4 = ワールドチャンプ -L_PastContest = 過去のコンテストリボン -L_PastBattle = 過去のバトルリボン -------------------Super Training--------------------- -L_SuperTraining = 通常のトレーニング -L_Rank1 = ランク1 -TMedal1_3 = HP -TMedal1_4 = 攻撃 -TMedal1_7 = 防御 -TMedal1_2 = 特攻 -TMedal1_5 = 特防 -TMedal1_6 = 素早さ -L_Rank2 = ランク2 -TMedal2_1 = HP -TMedal2_2 = 攻撃 -TMedal2_5 = 防御 -TMedal2_0 = 特攻 -TMedal2_3 = 特防 -TMedal2_4 = 素早さ -L_Rank3 = ランク3 -TMedal2_7 = HP -TMedal3_0 = 攻撃 -TMedal3_3 = 防御 -TMedal2_6 = 特攻 -TMedal3_1 = 特防 -TMedal3_2 = 素早さ +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = カロス チャンプ +L_RibbonChampionG3Hoenn = ホウエン チャンプ (RSE) +L_RibbonChampionSinnoh = シンオウ チャンプ +L_RibbonBestFriends = なかよし +L_RibbonTraining = しゅぎょう +L_RibbonBattlerSkillful = グレートバトル +L_RibbonBattlerExpert = マスターバトル +L_RibbonEffort = がんば +L_RibbonAlert = しゃっき +L_RibbonShock = どっき +L_RibbonDowncast = しょんぼ +L_RibbonCareless = うっか +L_RibbonRelax = すっき +L_RibbonSnooze = ぐっす +L_RibbonSmile = にっこ +L_RibbonGorgeous = ゴージャス +L_RibbonRoyal = ロイヤル +L_RibbonGorgeousRoyal = ゴージャスロイヤル +L_RibbonArtist = ブロマイド +L_RibbonFootprint = あしあと +L_RibbonRecord = レコード +L_RibbonLegend = レジェンド +L_RibbonCountry = カントリー +L_RibbonNational = ナショナル +L_RibbonEarth = アース +L_RibbonWorld = ワールド +L_RibbonClassic = クラシック +L_RibbonPremier = プレミア +L_RibbonEvent = イベント +L_RibbonBirthday = バースデー +L_RibbonSpecial = スペシャル +L_RibbonSouvenir = メモリアル +L_RibbonWishing = ウィッシュ +L_RibbonChampionBattle = バトルチャンプ +L_RibbonChampionRegional = エリアチャンプ +L_RibbonChampionNational = ナショナルチャンプ +L_RibbonChampionWorld = ワールドチャンプ +L_RibbonCountMemoryContest = 過去のコンテストリボン +L_RibbonCountMemoryBattle = 過去のバトルリボン +L_RibbonChampionG6Hoenn = Hoenn Champion (ORAS) +L_RibbonContestStar = Contest Star +L_RibbonMasterCoolness = Coolness Master +L_RibbonMasterBeauty = Beauty Master +L_RibbonMasterCuteness = Cuteness Master +L_RibbonMasterCleverness = Cleverness Master +L_RibbonMasterToughness = Toughness Master +----------------Contest/Battle (PAST)------------------- +L_RibbonG3Cool = Cool (G3) +L_RibbonG3CoolSuper = Cool Super +L_RibbonG3CoolHyper = Cool Hyper +L_RibbonG3CoolMaster = Cool Master +L_RibbonG3Beauty = Beauty (G3) +L_RibbonG3BeautySuper = Beauty Super +L_RibbonG3BeautyHyper = Beauty Hyper +L_RibbonG3BeautyMaster = Beauty Master +L_RibbonG3Cute = Cute (G3) +L_RibbonG3CuteSuper = Cute Super +L_RibbonG3CuteHyper = Cute Hyper +L_RibbonG3CuteMaster = Cute Master +L_RibbonG3Smart = Smart (G3) +L_RibbonG3SmartSuper = Smart Super +L_RibbonG3SmartHyper = Smart Hyper +L_RibbonG3SmartMaster = Smart Master +L_RibbonG3Tough = Tough (G3) +L_RibbonG3ToughSuper = Tough Super +L_RibbonG3ToughHyper = Tough Hyper +L_RibbonG3ToughMaster = Tough Master +L_RibbonG4Cool = Cool (G4) +L_RibbonG4CoolGreat = Cool Great +L_RibbonG4CoolUltra = Cool Ultra +L_RibbonG4CoolMaster = Cool Master +L_RibbonG4Beauty = Beauty (G4) +L_RibbonG4BeautyGreat = Beauty Great +L_RibbonG4BeautyUltra = Beauty Ultra +L_RibbonG4BeautyMaster = Beauty Master +L_RibbonG4Cute = Cute (G4) +L_RibbonG4CuteGreat = Cute Great +L_RibbonG4CuteUltra = Cute Ultra +L_RibbonG4CuteMaster = Cute Master +L_RibbonG4Smart = Smart (G4) +L_RibbonG4SmartGreat = Smart Great +L_RibbonG4SmartUltra = Smart Ultra +L_RibbonG4SmartMaster = Smart Master +L_RibbonG4Tough = Tough (G4) +L_RibbonG4ToughGreat = Tough Great +L_RibbonG4ToughUltra = Tough Ultra +L_RibbonG4ToughMaster = Tough Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = Cool +L_RibbonCountG3Beauty = Beauty +L_RibbonCountG3Cute = Cute +L_RibbonCountG3Smart = Smart +L_RibbonCountG3Tough = Tough +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Medal Editor +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +------------------Super Training----------------------- +L_SuperTrain1_HP = ランク1: HP +L_SuperTrain1_ATK = ランク1: 攻撃 +L_SuperTrain1_DEF = ランク1: 防御 +L_SuperTrain1_SPA = ランク1: 特攻 +L_SuperTrain1_SPD = ランク1: 特防 +L_SuperTrain1_SPE = ランク1: 素早さ +L_SuperTrain2_HP = ランク2: HP +L_SuperTrain2_ATK = ランク2: 攻撃 +L_SuperTrain2_DEF = ランク2: 防御 +L_SuperTrain2_SPA = ランク2: 特攻 +L_SuperTrain2_SPD = ランク2: 特防 +L_SuperTrain2_SPE = ランク2: 素早さ +L_SuperTrain3_HP = ランク3: HP +L_SuperTrain3_ATK = ランク3: 攻撃 +L_SuperTrain3_DEF = ランク3: 防御 +L_SuperTrain3_SPA = ランク3: 特攻 +L_SuperTrain3_SPD = ランク3: 特防 +L_SuperTrain3_SPE = ランク3: 素早さ CHK_Secret = 秘密の訓練 -L_Rank3 = ランク4 -TMedal3_4 = Troubles -L_Rank3 = ランク5 -TMedal3_5 = Leaf -TMedal3_6 = Fire -TMedal3_7 = Water -TMedal4_0 = Fleeing -L_Rank3 = ランク6 -TMedal4_1 = Second -TMedal4_2 = Quick -TMedal4_3 = Long -L_Rank3 = ランク7 -TMedal4_4 = Scatter -TMedal4_5 = Barrage -TMedal4_6 = Hydreigon -L_Rank3 = ランク8 -TMedal4_7 = X/Y +L_SuperTrain4_1 = ランク4: Troubles +L_SuperTrain5_1 = ランク5: Leaf +L_SuperTrain5_2 = ランク5: Fire +L_SuperTrain5_3 = ランク5: Water +L_SuperTrain5_4 = ランク5: Fleeing +L_SuperTrain6_1 = ランク6: Second +L_SuperTrain6_2 = ランク6: Quick +L_SuperTrain6_3 = ランク6: Long +L_SuperTrain7_1 = ランク7: Scatter +L_SuperTrain7_2 = ランク7: Barrage +L_SuperTrain7_3 = ランク7: Hydreigon +L_SuperTrain8_1 = ランク8: X/Y --- L_Bag = Last Used Bag: L_Hits = Hits Remaining: diff --git a/Resources/text/ja/text_Forms_ja.txt b/Resources/text/ja/text_Forms_ja.txt index 7c583c5fb..1b76f216c 100644 --- a/Resources/text/ja/text_Forms_ja.txt +++ b/Resources/text/ja/text_Forms_ja.txt @@ -1,4 +1,4 @@ - +Spiky diff --git a/Resources/text/ko/lang_ko.txt b/Resources/text/ko/lang_ko.txt index e5c82edf7..25078380f 100644 --- a/Resources/text/ko/lang_ko.txt +++ b/Resources/text/ko/lang_ko.txt @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = 파일 Menu_Open = 열기... -Menu_Save = 저장 PK6... +Menu_Save = 저장 PKM... Menu_ExportSAV = 저장 SAV... Menu_ExportMAIN = 저장 main Menu_ExportBAK = 저장 BAK @@ -26,8 +26,8 @@ Menu_Exit = 종료 -- Menu_Tools = 도구 Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = Import Set from Clipboard -Menu_ShowdownExportPK6 = Export Set to Clipboard +Menu_ShowdownImportPKM = Import Set from Clipboard +Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard Menu_CyberGadget = CyberGadget @@ -37,7 +37,7 @@ Menu_Data = 데이터 Menu_LoadBoxes = 로드 박스 Menu_DumpBoxes = 덤프 박스 Menu_Report = 박스 데이터 리포트 -Menu_Database = PK6 데이터베이스 +Menu_Database = PKM 데이터베이스 Menu_Other = 다른 Menu_OpenSDF = 열기 SaveDataFiler 폴더 Menu_OpenSDB = 열기 SaveDataBackup 폴더 @@ -46,7 +46,7 @@ Menu_Options = 옵션 Menu_Language = 언어 Menu_Modify = SAV로 설정 Menu_ModifyDex = 포켓몬 도감 수정 -Menu_ModifyPK6 = PK6 정보 수정 +Menu_ModifyPKM = PKM 정보 수정 Menu_Unicode = Unicode Menu_About = PKHeX에 대하여 --------------------Context Menus---------------------- @@ -129,7 +129,8 @@ GB_nOT = 최근 (주인이 아닌) 트레이너 Label_PrevOT = 주인: GB_ExtraBytes = Extra Bytes GB_Markings = 마킹 -BTN_Ribbons = 리본/메달 +BTN_Ribbons = 리본 +BTN_Medals = 메달 BTN_History = 기억 Label_EncryptionConstant = Encryption Constant: BTN_RerollEC = 재설정 @@ -171,113 +172,156 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. -! RibbonMedal = 리본/메달 에디터 +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Ribbon Editor - Change stuff below this line, not above. ----------------------Buttons-------------------------- BTN_All = 모두 주기 BTN_None = 모두 제거 BTN_Cancel = 취소 BTN_Save = 저장 --------------------Ribbons/Medals---------------------- -Tab_Kalos = 보통 리본 -Tab_Extra = 부가 리본 -Tab_Medals = 트레이닝 메달 -GB_Kalos12 = 셋 1 -Kalos1a_0 = 칼로스 챔피언 -Kalos1a_1 = 호연 챔피언 -Kalos1a_2 = 신호 챔피언 -Kalos1a_3 = 절친 -Kalos1a_4 = 수행 -Kalos1a_5 = 그레이트 배틀 -Kalos1a_6 = 마스터 배틀 -Kalos1a_7 = 노력 ---- -Kalos1b_0 = Alert -Kalos1b_1 = Shock -Kalos1b_2 = Downcast -Kalos1b_3 = Careless -Kalos1b_4 = Relax -Kalos1b_5 = Snooze -Kalos1b_6 = Smile -Kalos1b_7 = Gorgeous ---- -GB_Kalos34 = Set 2 -Kalos2a_0 = Royal -Kalos2a_1 = Gorgeous Royal -Kalos2a_2 = 아티스트 -Kalos2a_3 = Footprint -Kalos2a_4 = 기록 -Kalos2a_5 = 전설 -Kalos2a_6 = 나라 -Kalos2a_7 = National ---- -Kalos2b_0 = 지구 -Kalos2b_1 = World -Kalos2b_2 = 클래식 -Kalos2b_3 = Premier -Kalos2b_4 = 이벤트 -Kalos2b_5 = 생일 -Kalos2b_6 = 스페셜 -Kalos2b_7 = Souvenir ---- -GB_Extra1 = Set 3 -Extra1_0 = 위시 -Extra1_1 = 배틀 챔피언 -Extra1_2 = Regional Champ -Extra1_3 = National Champ -Extra1_4 = World Champ -L_PastContest = 과거 콘테스트 리본: -L_PastBattle = 과거 배틀 리본: ---- -Extra1_7 = 호연 챔피언 -ORAS_0 = 콘테스트 스타 -ORAS_1 = 근사함 마스터 -ORAS_2 = 아름다움 마스터 -ORAS_3 = 귀여움 마스터 -ORAS_4 = 슬기로움 마스터 -ORAS_5 = 강인함 마스터 -------------------Super Training--------------------- -L_SuperTraining = 노말슈퍼트레이닝 -L_Rank1 = 랭크 1 -TMedal1_3 = HP(체력) -TMedal1_4 = Atk(공격) -TMedal1_7 = Def(방어) -TMedal1_2 = SpA(특공) -TMedal1_5 = SpD(특방) -TMedal1_6 = Spe(스피드) -L_Rank2 = 랭크 2 -TMedal2_1 = HP(체력) -TMedal2_2 = Atk(공격) -TMedal2_5 = Def(방어) -TMedal2_0 = SpA(특공) -TMedal2_3 = SpD(특방) -TMedal2_4 = Spe(스피드) -L_Rank3 = 랭크 3 -TMedal2_7 = HP(체력) -TMedal3_0 = Atk(공격) -TMedal3_3 = Def(방어) -TMedal2_6 = SpA(특공) -TMedal3_1 = SpD(특방) -TMedal3_2 = Spe(스피드) +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = 칼로스 챔피언 +L_RibbonChampionG3Hoenn = 호연 챔피언 (RSE) +L_RibbonChampionSinnoh = 신호 챔피언 +L_RibbonBestFriends = 절친 +L_RibbonTraining = 수행 +L_RibbonBattlerSkillful = 그레이트 배틀 +L_RibbonBattlerExpert = 마스터 배틀 +L_RibbonEffort = 노력 +L_RibbonAlert = Alert +L_RibbonShock = Shock +L_RibbonDowncast = Downcast +L_RibbonCareless = Careless +L_RibbonRelax = Relax +L_RibbonSnooze = Snooze +L_RibbonSmile = Smile +L_RibbonGorgeous = Gorgeous +L_RibbonRoyal = Royal +L_RibbonGorgeousRoyal = Gorgeous Royal +L_RibbonArtist = 아티스트 +L_RibbonFootprint = Footprint +L_RibbonRecord = 기록 +L_RibbonLegend = 전설 +L_RibbonCountry = 나라 +L_RibbonNational = National +L_RibbonEarth = 지구 +L_RibbonWorld = World +L_RibbonClassic = 클래식 +L_RibbonPremier = Premier +L_RibbonEvent = 이벤트 +L_RibbonBirthday = 생일 +L_RibbonSpecial = 스페셜 +L_RibbonSouvenir = Souvenir +L_RibbonWishing = 위시 +L_RibbonChampionBattle = 배틀 챔피언 +L_RibbonChampionRegional = Regional Champ +L_RibbonChampionNational = National Champ +L_RibbonChampionWorld = World Champ +L_RibbonCountMemoryContest = 과거 콘테스트 리본 +L_RibbonCountMemoryBattle = 과거 배틀 리본 +L_RibbonChampionG6Hoenn = 호연 챔피언 (ORAS) +L_RibbonContestStar = 콘테스트 스타 +L_RibbonMasterCoolness = 근사함 마스터 +L_RibbonMasterBeauty = 아름다움 마스터 +L_RibbonMasterCuteness = 귀여움 마스터 +L_RibbonMasterCleverness = 슬기로움 마스터 +L_RibbonMasterToughness = 강인함 마스터 +----------------Contest/Battle (PAST)------------------- +L_RibbonG3Cool = 근사함 (G3) +L_RibbonG3CoolSuper = 근사함 Super +L_RibbonG3CoolHyper = 근사함 Hyper +L_RibbonG3CoolMaster = 근사함 Master +L_RibbonG3Beauty = 아름다움 (G3) +L_RibbonG3BeautySuper = 아름다움 Super +L_RibbonG3BeautyHyper = 아름다움 Hyper +L_RibbonG3BeautyMaster = 아름다움 Master +L_RibbonG3Cute = 귀여움 (G3) +L_RibbonG3CuteSuper = 귀여움 Super +L_RibbonG3CuteHyper = 귀여움 Hyper +L_RibbonG3CuteMaster = 귀여움 Master +L_RibbonG3Smart = 슬기로움 (G3) +L_RibbonG3SmartSuper = 슬기로움 Super +L_RibbonG3SmartHyper = 슬기로움 Hyper +L_RibbonG3SmartMaster = 슬기로움 Master +L_RibbonG3Tough = 강인함 (G3) +L_RibbonG3ToughSuper = 강인함 Super +L_RibbonG3ToughHyper = 강인함 Hyper +L_RibbonG3ToughMaster = 강인함 Master +L_RibbonG4Cool = 근사함 (G4) +L_RibbonG4CoolGreat = 근사함 Great +L_RibbonG4CoolUltra = 근사함 Ultra +L_RibbonG4CoolMaster = 근사함 Master +L_RibbonG4Beauty = 아름다움 (G4) +L_RibbonG4BeautyGreat = 아름다움 Great +L_RibbonG4BeautyUltra = 아름다움 Ultra +L_RibbonG4BeautyMaster = 아름다움 Master +L_RibbonG4Cute = 귀여움 (G4) +L_RibbonG4CuteGreat = 귀여움 Great +L_RibbonG4CuteUltra = 귀여움 Ultra +L_RibbonG4CuteMaster = 귀여움 Master +L_RibbonG4Smart = 슬기로움 (G4) +L_RibbonG4SmartGreat = 슬기로움 Great +L_RibbonG4SmartUltra = 슬기로움 Ultra +L_RibbonG4SmartMaster = 슬기로움 Master +L_RibbonG4Tough = 강인함 (G4) +L_RibbonG4ToughGreat = 강인함 Great +L_RibbonG4ToughUltra = 강인함 Ultra +L_RibbonG4ToughMaster = 강인함 Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = 근사함 +L_RibbonCountG3Beauty = 아름다움 +L_RibbonCountG3Cute = 귀여움 +L_RibbonCountG3Smart = 슬기로움 +L_RibbonCountG3Tough = 강인함 +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Medal Editor +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +------------------Super Training----------------------- +L_SuperTrain1_HP = 랭크 1: HP(체력) +L_SuperTrain1_ATK = 랭크 1: Atk(공격) +L_SuperTrain1_DEF = 랭크 1: Def(방어) +L_SuperTrain1_SPA = 랭크 1: SpA(특공) +L_SuperTrain1_SPD = 랭크 1: SpD(특방) +L_SuperTrain1_SPE = 랭크 1: Spe(스피드) +L_SuperTrain2_HP = 랭크 2: HP(체력) +L_SuperTrain2_ATK = 랭크 2: Atk(공격) +L_SuperTrain2_DEF = 랭크 2: Def(방어) +L_SuperTrain2_SPA = 랭크 2: SpA(특공) +L_SuperTrain2_SPD = 랭크 2: SpD(특방) +L_SuperTrain2_SPE = 랭크 2: Spe(스피드) +L_SuperTrain3_HP = 랭크 3: HP(체력) +L_SuperTrain3_ATK = 랭크 3: Atk(공격) +L_SuperTrain3_DEF = 랭크 3: Def(방어) +L_SuperTrain3_SPA = 랭크 3: SpA(특공) +L_SuperTrain3_SPD = 랭크 3: SpD(특방) +L_SuperTrain3_SPE = 랭크 3: Spe(스피드) CHK_Secret = 비밀 트레이닝 활성화 -L_Rank3 = 랭크 4 -TMedal3_4 = Troubles -L_Rank3 = 랭크 5 -TMedal3_5 = 풀 -TMedal3_6 = 불 -TMedal3_7 = 물 -TMedal4_0 = Fleeing -L_Rank3 = 랭크 6 -TMedal4_1 = Second -TMedal4_2 = Quick -TMedal4_3 = Long -L_Rank3 = 랭크 7 -TMedal4_4 = Scatter -TMedal4_5 = Barrage -TMedal4_6 = Hydreigon -L_Rank3 = 랭크 8 -TMedal4_7 = 베스트 +L_SuperTrain4_1 = 랭크 4: Troubles +L_SuperTrain5_1 = 랭크 5: 풀 +L_SuperTrain5_2 = 랭크 5: 불 +L_SuperTrain5_3 = 랭크 5: 물 +L_SuperTrain5_4 = 랭크 5: Fleeing +L_SuperTrain6_1 = 랭크 6: Second +L_SuperTrain6_2 = 랭크 6: Quick +L_SuperTrain6_3 = 랭크 6: Long +L_SuperTrain7_1 = 랭크 7: Scatter +L_SuperTrain7_2 = 랭크 7: Barrage +L_SuperTrain7_3 = 랭크 7: Hydreigon +L_SuperTrain8_1 = 랭크 8: 베스트 --- L_Bag = Last Used Bag: L_Hits = Hits Remaining: @@ -749,8 +793,8 @@ L_Saying5 = 5: ------------------------------------------------------- L_Details = 세부사항: L_Received = 받은 것들: -B_Import = .wc6 넣기 -B_Output = .wc6 빼내기 +B_Import = 넣기 +B_Output = 빼내기 B_Cancel = 취소 B_Save = 저장 ! End \ No newline at end of file diff --git a/Resources/text/ko/text_Forms_ko.txt b/Resources/text/ko/text_Forms_ko.txt index 902904911..c1bb723bc 100644 --- a/Resources/text/ko/text_Forms_ko.txt +++ b/Resources/text/ko/text_Forms_ko.txt @@ -1,4 +1,4 @@ - +Spiky diff --git a/Resources/text/other/lang_pt.txt b/Resources/text/other/lang_pt.txt index a8e875ce6..ef08a5fe5 100644 --- a/Resources/text/other/lang_pt.txt +++ b/Resources/text/other/lang_pt.txt @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = Ficheiro Menu_Open = Abrir... -Menu_Save = Guardar PK6... +Menu_Save = Guardar PKM... Menu_ExportSAV = Guardar SAV... Menu_ExportMAIN = Guardar main Menu_ExportBAK = Guardar BAK @@ -26,8 +26,8 @@ Menu_Exit = Sair -- Menu_Tools = Ferramentas Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = Import Set from Clipboard -Menu_ShowdownExportPK6 = Export Set to Clipboard +Menu_ShowdownImportPKM = Import Set from Clipboard +Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard Menu_CyberGadget = CyberGadget @@ -37,7 +37,7 @@ Menu_Data = Dados Menu_LoadBoxes = Carregar Boxes Menu_DumpBoxes = Despejar Boxes Menu_Report = Relatório de Dados das Boxes -Menu_Database = PK6 Database +Menu_Database = PKM Database Menu_Other = Outro Menu_OpenSDF = Abrir pasta SaveDataFiler Menu_OpenSDB = Abrir pasta SaveDataBackup @@ -46,7 +46,7 @@ Menu_Options = Opções Menu_Language = Idioma Menu_Modify = Defina para SAV Menu_ModifyDex = Modificar Pokédex -Menu_ModifyPK6 = Modificar PK6 Info +Menu_ModifyPKM = Modificar PKM Info Menu_Unicode = Unicode Menu_About = Sobre o PKHeX --------------------Context Menus---------------------- @@ -129,8 +129,9 @@ GB_nOT = Último (não OT) Treinador Label_PrevOT = OT: GB_ExtraBytes = Bytes Extra GB_Markings = Marcas -BTN_Ribbons = Fitas/Medalhas -BTN_History = Memórias/Amie +BTN_Ribbons = Fitas +BTN_Medals = Medalhas +BTN_History = Memórias Label_EncryptionConstant = Constante de Encriptação: BTN_RerollEC = Gerar -----------------Save Data Interface-------------------- @@ -171,113 +172,156 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. -! RibbonMedal = Ribbon / Medal Editor +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Ribbon Editor - Change stuff below this line, not above. ----------------------Buttons-------------------------- BTN_All = Dar TODOS BTN_None = Remover TODOS BTN_Cancel = Cancelar BTN_Save = Guardar --------------------Ribbons/Medals---------------------- -Tab_Kalos = Fitas Comuns -Tab_Extra = Fitas Extra -Tab_Medals = Medalhas de Treino -GB_Kalos12 = Conjunto 1 -Kalos1a_0 = Campião de Kalos -Kalos1a_1 = Campião de Hoenn -Kalos1a_2 = Campião de Sinnoh -Kalos1a_3 = Melhores Amigos -Kalos1a_4 = Treino -Kalos1a_5 = Batalhador Hábil -Kalos1a_6 = Batalhador Experiente -Kalos1a_7 = Empenho ---- -Kalos1b_0 = Alerta -Kalos1b_1 = Choque -Kalos1b_2 = Desanimado -Kalos1b_3 = Descuidado -Kalos1b_4 = Descontraído -Kalos1b_5 = Dorminhoco -Kalos1b_6 = Sorridente -Kalos1b_7 = Deslumbrante ---- -GB_Kalos34 = Conjunto 2 -Kalos2a_0 = Nobre -Kalos2a_1 = Nobre Deslumbrante -Kalos2a_2 = Artista -Kalos2a_3 = Pegada -Kalos2a_4 = Recorde -Kalos2a_5 = Lenda -Kalos2a_6 = País -Kalos2a_7 = Nacional ---- -Kalos2b_0 = Terra -Kalos2b_1 = Mundo -Kalos2b_2 = Clássico -Kalos2b_3 = Premier -Kalos2b_4 = Evento -Kalos2b_5 = Aniversário -Kalos2b_6 = Especial -Kalos2b_7 = Lembrança ---- -GB_Extra1 = Conjunto 3 -Extra1_0 = Desejando -Extra1_1 = Campião de Batalha -Extra1_2 = Campião Regional -Extra1_3 = Campião Nacional -Extra1_4 = Campião Mundial -L_PastContest = Fitas de Concursos Passados: -L_PastBattle = Fitas de Batalhas Passadas: ---- -Extra1_7 = Campeão de Hoenn -ORAS_0 = Estrela de Concurso -ORAS_1 = Mestre da Fixeza -ORAS_2 = Mestre da Beleza -ORAS_3 = Mestre da Fofura -ORAS_4 = Mestre da Esperteza -ORAS_5 = Mestre da Tenacidade -------------------Super Training--------------------- -L_SuperTraining = Super Treino Normal -L_Rank1 = Rank 1 -TMedal1_3 = HP -TMedal1_4 = Atk -TMedal1_7 = Def -TMedal1_2 = SpA -TMedal1_5 = SpD -TMedal1_6 = Spe -L_Rank2 = Rank 2 -TMedal2_1 = HP -TMedal2_2 = Atk -TMedal2_5 = Def -TMedal2_0 = SpA -TMedal2_3 = SpD -TMedal2_4 = Spe -L_Rank3 = Rank 3 -TMedal2_7 = HP -TMedal3_0 = Atk -TMedal3_3 = Def -TMedal2_6 = SpA -TMedal3_1 = SpD -TMedal3_2 = Spe +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = Campião de Kalos +L_RibbonChampionG3Hoenn = Campião de Hoenn (RSE) +L_RibbonChampionSinnoh = Campião de Sinnoh +L_RibbonBestFriends = Melhores Amigos +L_RibbonTraining = Treino +L_RibbonBattlerSkillful = Batalhador Hábil +L_RibbonBattlerExpert = Batalhador Experiente +L_RibbonEffort = Empenho +L_RibbonAlert = Alerta +L_RibbonShock = Choque +L_RibbonDowncast = Desanimado +L_RibbonCareless = Descuidado +L_RibbonRelax = Descontraído +L_RibbonSnooze = Dorminhoco +L_RibbonSmile = Sorridente +L_RibbonGorgeous = Deslumbrante +L_RibbonRoyal = Nobre +L_RibbonGorgeousRoyal = Nobre Deslumbrante +L_RibbonArtist = Artista +L_RibbonFootprint = Pegada +L_RibbonRecord = Recorde +L_RibbonLegend = Lenda +L_RibbonCountry = País +L_RibbonNational = Nacional +L_RibbonEarth = Terra +L_RibbonWorld = Mundo +L_RibbonClassic = Clássico +L_RibbonPremier = Premier +L_RibbonEvent = Evento +L_RibbonBirthday = Aniversário +L_RibbonSpecial = Especial +L_RibbonSouvenir = Lembrança +L_RibbonWishing = Desejando +L_RibbonChampionBattle = Campião de Batalha +L_RibbonChampionRegional = Campião Regional +L_RibbonChampionNational = Campião Nacional +L_RibbonChampionWorld = Campião Mundial +L_RibbonCountMemoryContest = Fitas de Concursos Passados +L_RibbonCountMemoryBattle = Fitas de Batalhas Passadas +L_RibbonChampionG6Hoenn = Campeão de Hoenn (ORAS) +L_RibbonContestStar = Estrela de Concurso +L_RibbonMasterCoolness = Mestre da Fixeza +L_RibbonMasterBeauty = Mestre da Beleza +L_RibbonMasterCuteness = Mestre da Fofura +L_RibbonMasterCleverness = Mestre da Esperteza +L_RibbonMasterToughness = Mestre da Tenacidade +----------------Contest/Battle (PAST)------------------- +L_RibbonG3Cool = Fixeza (G3) +L_RibbonG3CoolSuper = Fixeza Super +L_RibbonG3CoolHyper = Fixeza Hyper +L_RibbonG3CoolMaster = Fixeza Master +L_RibbonG3Beauty = Beleza (G3) +L_RibbonG3BeautySuper = Beleza Super +L_RibbonG3BeautyHyper = Beleza Hyper +L_RibbonG3BeautyMaster = Beleza Master +L_RibbonG3Cute = Fofura (G3) +L_RibbonG3CuteSuper = Fofura Super +L_RibbonG3CuteHyper = Fofura Hyper +L_RibbonG3CuteMaster = Fofura Master +L_RibbonG3Smart = Esperteza (G3) +L_RibbonG3SmartSuper = Esperteza Super +L_RibbonG3SmartHyper = Esperteza Hyper +L_RibbonG3SmartMaster = Esperteza Master +L_RibbonG3Tough = Tenacidade (G3) +L_RibbonG3ToughSuper = Tenacidade Super +L_RibbonG3ToughHyper = Tenacidade Hyper +L_RibbonG3ToughMaster = Tenacidade Master +L_RibbonG4Cool = Fixeza (G4) +L_RibbonG4CoolGreat = Fixeza Great +L_RibbonG4CoolUltra = Fixeza Ultra +L_RibbonG4CoolMaster = Fixeza Master +L_RibbonG4Beauty = Beleza (G4) +L_RibbonG4BeautyGreat = Beleza Great +L_RibbonG4BeautyUltra = Beleza Ultra +L_RibbonG4BeautyMaster = Beleza Master +L_RibbonG4Cute = Fofura (G4) +L_RibbonG4CuteGreat = Fofura Great +L_RibbonG4CuteUltra = Fofura Ultra +L_RibbonG4CuteMaster = Fofura Master +L_RibbonG4Smart = Esperteza (G4) +L_RibbonG4SmartGreat = Esperteza Great +L_RibbonG4SmartUltra = Esperteza Ultra +L_RibbonG4SmartMaster = Esperteza Master +L_RibbonG4Tough = Tenacidade (G4) +L_RibbonG4ToughGreat = Tenacidade Great +L_RibbonG4ToughUltra = Tenacidade Ultra +L_RibbonG4ToughMaster = Tenacidade Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = Fixeza +L_RibbonCountG3Beauty = Beleza +L_RibbonCountG3Cute = Fofura +L_RibbonCountG3Smart = Esperteza +L_RibbonCountG3Tough = Tenacidade +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Medal Editor +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +------------------Super Training----------------------- +L_SuperTrain1_HP = Rank 1: HP +L_SuperTrain1_ATK = Rank 1: Atk +L_SuperTrain1_DEF = Rank 1: Def +L_SuperTrain1_SPA = Rank 1: SpA +L_SuperTrain1_SPD = Rank 1: SpD +L_SuperTrain1_SPE = Rank 1: Spe +L_SuperTrain2_HP = Rank 2: HP +L_SuperTrain2_ATK = Rank 2: Atk +L_SuperTrain2_DEF = Rank 2: Def +L_SuperTrain2_SPA = Rank 2: SpA +L_SuperTrain2_SPD = Rank 2: SpD +L_SuperTrain2_SPE = Rank 2: Spe +L_SuperTrain3_HP = Rank 3: HP +L_SuperTrain3_ATK = Rank 3: Atk +L_SuperTrain3_DEF = Rank 3: Def +L_SuperTrain3_SPA = Rank 3: SpA +L_SuperTrain3_SPD = Rank 3: SpD +L_SuperTrain3_SPE = Rank 3: Spe CHK_Secret = Super Treino Activado -L_Rank3 = Rank 4 -TMedal3_4 = Problemas -L_Rank3 = Rank 5 -TMedal3_5 = Erva -TMedal3_6 = Fogo -TMedal3_7 = Água -TMedal4_0 = Fugir -L_Rank3 = Rank 6 -TMedal4_1 = Segundo -TMedal4_2 = Rápido -TMedal4_3 = Longo -L_Rank3 = Rank 7 -TMedal4_4 = Dispersar -TMedal4_5 = Barragem -TMedal4_6 = Hydreigon -L_Rank3 = Rank 8 -TMedal4_7 = Melhor +L_SuperTrain4_1 = Rank 4: Problemas +L_SuperTrain5_1 = Rank 5: Erva +L_SuperTrain5_2 = Rank 5: Fogo +L_SuperTrain5_3 = Rank 5: Água +L_SuperTrain5_4 = Rank 5: Fugir +L_SuperTrain6_1 = Rank 6: Segundo +L_SuperTrain6_2 = Rank 6: Rápido +L_SuperTrain6_3 = Rank 6: Longo +L_SuperTrain7_1 = Rank 7: Dispersar +L_SuperTrain7_2 = Rank 7: Barragem +L_SuperTrain7_3 = Rank 7: Hydreigon +L_SuperTrain8_1 = Rank 8: Melhor --- L_Bag = Última Mochila Utilizada: L_Hits = Pancadas de Sobra: @@ -749,8 +793,8 @@ L_Saying5 = 5: ------------------------------------------------------- L_Details = Detalhes: L_Received = Lista de Recebidos: -B_Import = Importar .wc6 -B_Output = Exportar .wc6 +B_Import = Importar +B_Output = Exportar B_Cancel = Cancelar B_Save = Gravar ! End \ No newline at end of file diff --git a/Resources/text/zh/lang_zh.txt b/Resources/text/zh/lang_zh.txt index db6262c27..3e1085fad 100644 --- a/Resources/text/zh/lang_zh.txt +++ b/Resources/text/zh/lang_zh.txt @@ -18,7 +18,7 @@ ---------------------Menu Strip------------------------ Menu_File = 文件 Menu_Open = 读取... -Menu_Save = 保存 PK6... +Menu_Save = 保存 PKM... Menu_ExportSAV = 保存 SAV... Menu_ExportMAIN = 保存 main Menu_ExportBAK = 保存 BAK @@ -26,8 +26,8 @@ Menu_Exit = 退出 -- Menu_Tools = 工具 Menu_Showdown = Showdown -Menu_ShowdownImportPK6 = 导入设置从剪贴板 -Menu_ShowdownExportPK6 = 导出设置到剪贴板 +Menu_ShowdownImportPKM = 导入设置从剪贴板 +Menu_ShowdownExportPKM = 导出设置到剪贴板 Menu_ShowdownExportParty = 导出手持队伍到剪贴板 Menu_ShowdownExportBattleBox = 导出战斗箱到剪贴板 Menu_CyberGadget = CyberGadget @@ -37,7 +37,7 @@ Menu_Data = 数据 Menu_LoadBoxes = 加载箱子信息 Menu_DumpBoxes = 导出箱子信息 Menu_Report = 箱子数据报告 -Menu_Database = PK6数据库 +Menu_Database = PKM数据库 Menu_Other = 其他 Menu_OpenSDF = 打开文件夹SaveDataFiler Menu_OpenSDB = 打开文件夹SaveDataBackup @@ -46,7 +46,7 @@ Menu_Options = 设置 Menu_Language = 语言 Menu_Modify = 设置为SAV Menu_ModifyDex = 修改图鉴 -Menu_ModifyPK6 = 修改PK6信息 +Menu_ModifyPKM = 修改PKM信息 Menu_Unicode = Unicode Menu_About = 关于PKHeX --------------------Context Menus---------------------- @@ -129,7 +129,8 @@ GB_nOT = 最新的持有人(非主人) Label_PrevOT = 主人名称 GB_ExtraBytes = 额外字节 GB_Markings = 标记 -BTN_Ribbons = 绸带/超级训练 +BTN_Ribbons = 绸带 +BTN_Medals = 超级训练 BTN_History = 记忆 Label_EncryptionConstant = 暗号化定数 BTN_RerollEC = 随机 @@ -171,113 +172,156 @@ L_Secure1 = Secure Value 1: L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- -- DO NOT CHANGE THIS SECTION. Ribbons / Medals UI Below -! RibbonMedal +- DO NOT CHANGE THIS SECTION. +! RibbonEditor = Ribbon Editor - Change stuff below this line, not above. ----------------------Buttons-------------------------- BTN_All = 准许全部 BTN_None = 全部清除 BTN_Cancel = 消除 BTN_Save = 保存 --------------------Ribbons/Medals---------------------- -Tab_Kalos = 通用绸带 -Tab_Extra = 附加绸带 -Tab_Medals = 训练勋章 -GB_Kalos12 = 设置1 -Kalos1a_0 = 卡洛斯 冠军 -Kalos1a_1 = 丰缘 冠军 -Kalos1a_2 = 神奥 冠军 -Kalos1a_3 = 好友 -Kalos1a_4 = 游学练武 -Kalos1a_5 = 大乱斗 -Kalos1a_6 = 战斗大师 -Kalos1a_7 = 努力 ---- -Kalos1b_0 = 警告 -Kalos1b_1 = 震惊 -Kalos1b_2 = 低落 -Kalos1b_3 = 疏忽 -Kalos1b_4 = 放松 -Kalos1b_5 = 小憩 -Kalos1b_6 = 微笑 -Kalos1b_7 = 光辉 ---- -GB_Kalos34 = 设置2 -Kalos2a_0 = 皇家 -Kalos2a_1 = 光辉皇家 -Kalos2a_2 = 肖像 -Kalos2a_3 = 足迹 -Kalos2a_4 = 记录 -Kalos2a_5 = 传说 -Kalos2a_6 = 国家 -Kalos2a_7 = 国际 ---- -Kalos2b_0 = 大地 -Kalos2b_1 = 世界 -Kalos2b_2 = 经典 -Kalos2b_3 = 首席 -Kalos2b_4 = 事件 -Kalos2b_5 = 生日 -Kalos2b_6 = 特别 -Kalos2b_7 = 纪念 ---- -GB_Extra1 = 设置3 -Extra1_0 = 希望 -Extra1_1 = 对战冠军 -Extra1_2 = 地区冠军 -Extra1_3 = 国家冠军 -Extra1_4 = 世界冠军 -L_PastContest = 以前的华丽大赛缎带 -L_PastBattle = 以前的战斗塔缎带 ---- -Extra1_7 = Hoenn Champion -ORAS_0 = Contest Star -ORAS_1 = Coolness Master -ORAS_2 = Beauty Master -ORAS_3 = Cuteness Master -ORAS_4 = Cleverness Master -ORAS_5 = Toughness Master -------------------Super Training--------------------- -L_SuperTraining = 超级训练 -L_Rank1 = 等级1 -TMedal1_3 = HP -TMedal1_4 = 攻击 -TMedal1_7 = 防御 -TMedal1_2 = 特攻 -TMedal1_5 = 特防 -TMedal1_6 = 速度 -L_Rank2 = 等级2 -TMedal2_1 = HP -TMedal2_2 = 攻击 -TMedal2_5 = 防御 -TMedal2_0 = 特攻 -TMedal2_3 = 特防 -TMedal2_4 = 速度 -L_Rank3 = 等级3 -TMedal2_7 = HP -TMedal3_0 = 攻击 -TMedal3_3 = 防御 -TMedal2_6 = 特攻 -TMedal3_1 = 特防 -TMedal3_2 = 速度 +----------------------Ribbons-------------------------- +L_RibbonChampionKalos = 卡洛斯 冠军 +L_RibbonChampionG3Hoenn = 丰缘 冠军 (RSE) +L_RibbonChampionSinnoh = 神奥 冠军 +L_RibbonBestFriends = 好友 +L_RibbonTraining = 游学练武 +L_RibbonBattlerSkillful = 大乱斗 +L_RibbonBattlerExpert = 战斗大师 +L_RibbonEffort = 努力 +L_RibbonAlert = 警告 +L_RibbonShock = 震惊 +L_RibbonDowncast = 低落 +L_RibbonCareless = 疏忽 +L_RibbonRelax = 放松 +L_RibbonSnooze = 小憩 +L_RibbonSmile = 微笑 +L_RibbonGorgeous = 光辉 +L_RibbonRoyal = 皇家 +L_RibbonGorgeousRoyal = 光辉皇家 +L_RibbonArtist = 肖像 +L_RibbonFootprint = 足迹 +L_RibbonRecord = 记录 +L_RibbonLegend = 传说 +L_RibbonCountry = 国家 +L_RibbonNational = 国际 +L_RibbonEarth = 大地 +L_RibbonWorld = 世界 +L_RibbonClassic = 经典 +L_RibbonPremier = 首席 +L_RibbonEvent = 事件 +L_RibbonBirthday = 生日 +L_RibbonSpecial = 特别 +L_RibbonSouvenir = 纪念 +L_RibbonWishing = 希望 +L_RibbonChampionBattle = 对战冠军 +L_RibbonChampionRegional = 地区冠军 +L_RibbonChampionNational = 国家冠军 +L_RibbonChampionWorld = 世界冠军 +L_RibbonCountMemoryContest = 以前的华丽大赛缎带 +L_RibbonCountMemoryBattle = 以前的战斗塔缎带 +L_RibbonChampionG6Hoenn = Hoenn Champion (ORAS) +L_RibbonContestStar = Contest Star +L_RibbonMasterCoolness = Coolness Master +L_RibbonMasterBeauty = Beauty Master +L_RibbonMasterCuteness = Cuteness Master +L_RibbonMasterCleverness = Cleverness Master +L_RibbonMasterToughness = Toughness Master +----------------Contest/Battle (PAST)------------------ +L_RibbonG3Cool = Cool (G3) +L_RibbonG3CoolSuper = Cool Super +L_RibbonG3CoolHyper = Cool Hyper +L_RibbonG3CoolMaster = Cool Master +L_RibbonG3Beauty = Beauty (G3) +L_RibbonG3BeautySuper = Beauty Super +L_RibbonG3BeautyHyper = Beauty Hyper +L_RibbonG3BeautyMaster = Beauty Master +L_RibbonG3Cute = Cute (G3) +L_RibbonG3CuteSuper = Cute Super +L_RibbonG3CuteHyper = Cute Hyper +L_RibbonG3CuteMaster = Cute Master +L_RibbonG3Smart = Smart (G3) +L_RibbonG3SmartSuper = Smart Super +L_RibbonG3SmartHyper = Smart Hyper +L_RibbonG3SmartMaster = Smart Master +L_RibbonG3Tough = Tough (G3) +L_RibbonG3ToughSuper = Tough Super +L_RibbonG3ToughHyper = Tough Hyper +L_RibbonG3ToughMaster = Tough Master +L_RibbonG4Cool = Cool (G4) +L_RibbonG4CoolGreat = Cool Great +L_RibbonG4CoolUltra = Cool Ultra +L_RibbonG4CoolMaster = Cool Master +L_RibbonG4Beauty = Beauty (G4) +L_RibbonG4BeautyGreat = Beauty Great +L_RibbonG4BeautyUltra = Beauty Ultra +L_RibbonG4BeautyMaster = Beauty Master +L_RibbonG4Cute = Cute (G4) +L_RibbonG4CuteGreat = Cute Great +L_RibbonG4CuteUltra = Cute Ultra +L_RibbonG4CuteMaster = Cute Master +L_RibbonG4Smart = Smart (G4) +L_RibbonG4SmartGreat = Smart Great +L_RibbonG4SmartUltra = Smart Ultra +L_RibbonG4SmartMaster = Smart Master +L_RibbonG4Tough = Tough (G4) +L_RibbonG4ToughGreat = Tough Great +L_RibbonG4ToughUltra = Tough Ultra +L_RibbonG4ToughMaster = Tough Master +L_RibbonWinning = Winning +L_RibbonVictory = Victory +L_RibbonAbility = Ability +L_RibbonAbilityGreat = Great Ability +L_RibbonAbilityDouble = Double Ability +L_RibbonAbilityMulti = Multi Ability +L_RibbonAbilityPair = Pair Ability +L_RibbonAbilityWorld = World Ability +L_RibbonCountG3Cool = Cool +L_RibbonCountG3Beauty = Beauty +L_RibbonCountG3Cute = Cute +L_RibbonCountG3Smart = Smart +L_RibbonCountG3Tough = Tough +! ----------------------------------------------------- +- DO NOT CHANGE THIS SECTION. +! SuperTrainingEditor = Medal Editor +- Change stuff below this line, not above. +----------------------Buttons-------------------------- +B_All = Give All +B_None = Remove All +B_Cancel = Cancel +B_Save = Save +------------------Super Training----------------------- +L_SuperTrain1_HP = 等级1: HP +L_SuperTrain1_ATK = 等级1: 攻击 +L_SuperTrain1_DEF = 等级1: 防御 +L_SuperTrain1_SPA = 等级1: 特攻 +L_SuperTrain1_SPD = 等级1: 特防 +L_SuperTrain1_SPE = 等级1: 速度 +L_SuperTrain2_HP = 等级2: HP +L_SuperTrain2_ATK = 等级2: 攻击 +L_SuperTrain2_DEF = 等级2: 防御 +L_SuperTrain2_SPA = 等级2: 特攻 +L_SuperTrain2_SPD = 等级2: 特防 +L_SuperTrain2_SPE = 等级2: 速度 +L_SuperTrain3_HP = 等级3: HP +L_SuperTrain3_ATK = 等级3: 攻击 +L_SuperTrain3_DEF = 等级3: 防御 +L_SuperTrain3_SPA = 等级3: 特攻 +L_SuperTrain3_SPD = 等级3: 特防 +L_SuperTrain3_SPE = 等级3: 速度 CHK_Secret = 秘密训练开启 -L_Rank3 = 等级4 -TMedal3_4 = Troubles -L_Rank3 = 等级5 -TMedal3_5 = 草 -TMedal3_6 = 火 -TMedal3_7 = 水 -TMedal4_0 = 逃跑 -L_Rank3 = 等级6 -TMedal4_1 = Second -TMedal4_2 = Quick -TMedal4_3 = Long -L_Rank3 = 等级7 -TMedal4_4 = Scatter -TMedal4_5 = Barrage -TMedal4_6 = Hydreigon -L_Rank3 = 等级8 -TMedal4_7 = X/Y +L_SuperTrain4_1 = 等级4: Troubles +L_SuperTrain5_1 = 等级5: 草 +L_SuperTrain5_2 = 等级5: 火 +L_SuperTrain5_3 = 等级5: 水 +L_SuperTrain5_4 = 等级5: 逃跑 +L_SuperTrain6_1 = 等级6: Second +L_SuperTrain6_2 = 等级6: Quick +L_SuperTrain6_3 = 等级6: Long +L_SuperTrain7_1 = 等级7: Scatter +L_SuperTrain7_2 = 等级7: Barrage +L_SuperTrain7_3 = 等级7: Hydreigon +L_SuperTrain8_1 = 等级8: X/Y --- L_Bag = 上一次使用物品: L_Hits = 剩余点数: diff --git a/Resources/text/zh/text_Forms_zh.txt b/Resources/text/zh/text_Forms_zh.txt index 8c7767d34..5f28d4684 100644 --- a/Resources/text/zh/text_Forms_zh.txt +++ b/Resources/text/zh/text_Forms_zh.txt @@ -1,4 +1,4 @@ - +Spiky diff --git a/Saves/BoxWallpaper.cs b/Saves/BoxWallpaper.cs new file mode 100644 index 000000000..346c62bc7 --- /dev/null +++ b/Saves/BoxWallpaper.cs @@ -0,0 +1,37 @@ +using System.Drawing; + +namespace PKHeX +{ + public static class BoxWallpaper + { + public static Bitmap getWallpaper(SaveFile SAV, int index) + { + index++; + string s = "box_wp" + index.ToString("00"); + switch (SAV.Generation) + { + case 6: s += SAV.ORAS && index > 16 ? "ao" : "xy"; + break; + case 5: s += SAV.B2W2 && index > 16 ? "b2w2" : "bw"; + break; + case 4: + if (SAV.Pt && index > 16) + s += "pt"; + else if (SAV.HGSS && index > 16) + s += "hgss"; + else + s += "dp"; + break; + case 3: + if (SAV.E) + s += "e"; + else if (SAV.FRLG && index > 12) + s += "frlg"; + else + s += "rs"; + break; + } + return (Bitmap)(Properties.Resources.ResourceManager.GetObject(s) ?? Properties.Resources.box_wp16xy); + } + } +} diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index 41e736812..b70138539 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -46,23 +46,39 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) else Version = SaveUtil.getIsG3SAV(Data); if (Version == GameVersion.Invalid) return; - - BlockOrder = new int[14]; - ActiveSAV = SaveUtil.SIZE_G3RAWHALF == data.Length || BitConverter.ToUInt32(Data, 0xFFC) > BitConverter.ToUInt32(Data, 0xEFFC) ? 0 : 1; + + + int[] BlockOrder1 = new int[14]; for (int i = 0; i < 14; i++) - BlockOrder[i] = BitConverter.ToInt16(Data, ABO + i*0x1000 + 0xFF4); + BlockOrder1[i] = BitConverter.ToInt16(Data, i*0x1000 + 0xFF4); + int zeroBlock1 = Array.IndexOf(BlockOrder1, 0); - // Detect RS/E/FRLG - // Section 0 stores Game Code @ 0x00AC; 0 for RS, 1 for FRLG, else for Emerald - Trainer1 = Array.IndexOf(BlockOrder, 0)*0x1000 + ABO; - Party = Array.IndexOf(BlockOrder, 1)*0x1000 + ABO; - Block2 = Array.IndexOf(BlockOrder, 2)*0x1000 + ABO; - Block3 = Array.IndexOf(BlockOrder, 3)*0x1000 + ABO; + if (data.Length > SaveUtil.SIZE_G3RAWHALF) + { + int[] BlockOrder2 = new int[14]; + for (int i = 0; i < 14; i++) + BlockOrder2[i] = BitConverter.ToInt16(Data, 0xE000 + i*0x1000 + 0xFF4); + int zeroBlock2 = Array.IndexOf(BlockOrder2, 0); + ActiveSAV = BitConverter.ToUInt32(Data, zeroBlock1*0x1000 + 0xFFC) > + BitConverter.ToUInt32(Data, zeroBlock2*0x1000 + 0xEFFC) + ? 0 + : 1; + BlockOrder = ActiveSAV == 0 ? BlockOrder1 : BlockOrder2; + } + else + { + ActiveSAV = 0; + BlockOrder = BlockOrder1; + } + + BlockOfs = new int[14]; + for (int i = 0; i < 14; i++) + BlockOfs[i] = Array.IndexOf(BlockOrder, i)*0x1000 + ABO; // Set up PC data buffer beyond end of save file. Box = Data.Length; - Array.Resize(ref Data, Data.Length + 0x10000); // More than enough empty space. + Array.Resize(ref Data, Data.Length + SIZE_RESERVED); // More than enough empty space. // Copy chunk to the allocated location for (int i = 5; i < 14; i++) @@ -77,27 +93,30 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) { case GameVersion.RS: LegalKeyItems = Legal.Pouch_Key_RS; - OFS_PouchHeldItem = Party + 0x0560; - OFS_PouchKeyItem = Party + 0x05B0; - OFS_PouchBalls = Party + 0x0600; - OFS_PouchTMHM = Party + 0x0640; - OFS_PouchBerry = Party + 0x0740; + OFS_PouchHeldItem = BlockOfs[1] + 0x0560; + OFS_PouchKeyItem = BlockOfs[1] + 0x05B0; + OFS_PouchBalls = BlockOfs[1] + 0x0600; + OFS_PouchTMHM = BlockOfs[1] + 0x0640; + OFS_PouchBerry = BlockOfs[1] + 0x0740; + Personal = PersonalTable.RS; break; case GameVersion.FRLG: LegalKeyItems = Legal.Pouch_Key_FRLG; - OFS_PouchHeldItem = Party + 0x0310; - OFS_PouchKeyItem = Party + 0x03B8; - OFS_PouchBalls = Party + 0x0430; - OFS_PouchTMHM = Party + 0x0464; - OFS_PouchBerry = Party + 0x054C; + OFS_PouchHeldItem = BlockOfs[1] + 0x0310; + OFS_PouchKeyItem = BlockOfs[1] + 0x03B8; + OFS_PouchBalls = BlockOfs[1] + 0x0430; + OFS_PouchTMHM = BlockOfs[1] + 0x0464; + OFS_PouchBerry = BlockOfs[1] + 0x054C; + Personal = PersonalTable.FR; break; case GameVersion.E: LegalKeyItems = Legal.Pouch_Key_E; - OFS_PouchHeldItem = Party + 0x0560; - OFS_PouchKeyItem = Party + 0x05D8; - OFS_PouchBalls = Party + 0x0650; - OFS_PouchTMHM = Party + 0x0690; - OFS_PouchBerry = Party + 0x0790; + OFS_PouchHeldItem = BlockOfs[1] + 0x0560; + OFS_PouchKeyItem = BlockOfs[1] + 0x05D8; + OFS_PouchBalls = BlockOfs[1] + 0x0650; + OFS_PouchTMHM = BlockOfs[1] + 0x0690; + OFS_PouchBerry = BlockOfs[1] + 0x0790; + Personal = PersonalTable.E; break; } LegalItems = Legal.Pouch_Items_RS; @@ -106,15 +125,31 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalBerries = Legal.Pouch_Berries_RS; HeldItems = Legal.HeldItems_RS; - Personal = Legal.PersonalAO; // todo if (!Exportable) resetBoxes(); } - + + private const int SIZE_RESERVED = 0x10000; // unpacked box data + public override byte[] Write(bool DSV) + { + // Copy Box data back + for (int i = 5; i < 14; i++) + { + int blockIndex = Array.IndexOf(BlockOrder, i); + if (blockIndex == -1) // block empty + continue; + Array.Copy(Data, Box + (i - 5) * 0xF80, Data, blockIndex * 0x1000 + ABO, chunkLength[i]); + } + + setChecksums(); + return Data.Take(Data.Length - SIZE_RESERVED).ToArray(); + } + private readonly int ActiveSAV; private int ABO => ActiveSAV*0xE000; private readonly int[] BlockOrder; + private readonly int[] BlockOfs; // Configuration public override SaveFile Clone() { return new SAV3(Data.Take(Box).ToArray(), Version); } @@ -138,7 +173,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) public override int OTLength => 8; public override int NickLength => 10; - private int Block2, Block3; + public override bool HasParty => true; // Checksums protected override void setChecksums() @@ -147,7 +182,7 @@ protected override void setChecksums() { byte[] chunk = Data.Skip(ABO + i*0x1000).Take(chunkLength[BlockOrder[i]]).ToArray(); ushort chk = SaveUtil.check32(chunk); - BitConverter.GetBytes(chk).CopyTo(Data, ABO + i + 0xFF4); + BitConverter.GetBytes(chk).CopyTo(Data, ABO + i*0x1000 + 0xFF6); } } public override bool ChecksumsValid @@ -158,7 +193,7 @@ public override bool ChecksumsValid { byte[] chunk = Data.Skip(ABO + i * 0x1000).Take(chunkLength[BlockOrder[i]]).ToArray(); ushort chk = SaveUtil.check32(chunk); - if (chk != BitConverter.ToUInt16(Data, ABO + i*0xFF4)) + if (chk != BitConverter.ToUInt16(Data, ABO + i*0x1000 + 0xFF6)) return false; } return true; @@ -173,8 +208,9 @@ public override string ChecksumInfo { byte[] chunk = Data.Skip(ABO + i * 0x1000).Take(chunkLength[BlockOrder[i]]).ToArray(); ushort chk = SaveUtil.check32(chunk); - if (chk != BitConverter.ToUInt16(Data, ABO + i * 0xFF4)) - r += $"Block {BlockOrder[i]} @ {i*0x1000} (len {chunkLength[BlockOrder[i]]}) invalid." + Environment.NewLine; + ushort old = BitConverter.ToUInt16(Data, ABO + i*0x1000 + 0xFF6); + if (chk != old) + r += $"Block {BlockOrder[i].ToString("00")} @ {(i*0x1000).ToString("X5")} invalid." + Environment.NewLine; } return r.Length == 0 ? "Checksums valid." : r.TrimEnd(); } @@ -183,15 +219,14 @@ public override string ChecksumInfo // Trainer Info public override GameVersion Version { get; protected set; } - private bool Japanese; private uint SecurityKey { get { switch (Version) { - case GameVersion.E: return BitConverter.ToUInt32(Data, Trainer1 + 0xAC); - case GameVersion.FRLG: return BitConverter.ToUInt32(Data, Trainer1 + 0xAF8); + case GameVersion.E: return BitConverter.ToUInt32(Data, BlockOfs[0] + 0xAC); + case GameVersion.FRLG: return BitConverter.ToUInt32(Data, BlockOfs[0] + 0xAF8); default: return 0; } } @@ -200,7 +235,7 @@ public override string OT { get { - return PKX.getG3Str(Data.Skip(Trainer1).Take(0x10).ToArray(), Japanese) + return PKX.getG3Str(Data.Skip(BlockOfs[0]).Take(0x10).ToArray(), Japanese) .Replace("\uE08F", "\u2640") // Nidoran ♂ .Replace("\uE08E", "\u2642") // Nidoran ♀ .Replace("\u2019", "\u0027"); // Farfetch'd @@ -213,43 +248,43 @@ public override string OT .Replace("\u2640", "\uE08F") // Nidoran ♂ .Replace("\u2642", "\uE08E") // Nidoran ♀ .Replace("\u0027", "\u2019"); // Farfetch'd - PKX.setG3Str(TempNick, Japanese).CopyTo(Data, Trainer1); + PKX.setG3Str(TempNick, Japanese).CopyTo(Data, BlockOfs[0]); } } public override int Gender { - get { return Data[Trainer1 + 8]; } - set { Data[Trainer1 + 8] = (byte)value; } + get { return Data[BlockOfs[0] + 8]; } + set { Data[BlockOfs[0] + 8] = (byte)value; } } public override ushort TID { - get { return BitConverter.ToUInt16(Data, Trainer1 + 0xA + 0); } - set { BitConverter.GetBytes(value).CopyTo(Data, Trainer1 + 0xA + 0); } + get { return BitConverter.ToUInt16(Data, BlockOfs[0] + 0xA + 0); } + set { BitConverter.GetBytes(value).CopyTo(Data, BlockOfs[0] + 0xA + 0); } } public override ushort SID { - get { return BitConverter.ToUInt16(Data, Trainer1 + 0xC); } - set { BitConverter.GetBytes(value).CopyTo(Data, Trainer1 + 0xC); } + get { return BitConverter.ToUInt16(Data, BlockOfs[0] + 0xC); } + set { BitConverter.GetBytes(value).CopyTo(Data, BlockOfs[0] + 0xC); } } public override int PlayedHours { - get { return BitConverter.ToUInt16(Data, Trainer1 + 0xE); } - set { BitConverter.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0xE); } + get { return BitConverter.ToUInt16(Data, BlockOfs[0] + 0xE); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, BlockOfs[0] + 0xE); } } public override int PlayedMinutes { - get { return Data[Trainer1 + 0x10]; } - set { Data[Trainer1 + 0x10] = (byte)value; } + get { return Data[BlockOfs[0] + 0x10]; } + set { Data[BlockOfs[0] + 0x10] = (byte)value; } } public override int PlayedSeconds { - get { return Data[Trainer1 + 0x11]; } - set { Data[Trainer1 + 0x11] = (byte)value; } + get { return Data[BlockOfs[0] + 0x11]; } + set { Data[BlockOfs[0] + 0x11] = (byte)value; } } public int PlayedFrames { - get { return Data[Trainer1 + 0x12]; } - set { Data[Trainer1 + 0x12] = (byte)value; } + get { return Data[BlockOfs[0] + 0x12]; } + set { Data[BlockOfs[0] + 0x12] = (byte)value; } } public override uint Money @@ -259,8 +294,8 @@ public override uint Money switch (Version) { case GameVersion.RS: - case GameVersion.E: return BitConverter.ToUInt32(Data, Party + 0x0490) ^ SecurityKey; - case GameVersion.FRLG: return BitConverter.ToUInt32(Data, Party + 0x0290) ^ SecurityKey; + case GameVersion.E: return BitConverter.ToUInt32(Data, BlockOfs[1] + 0x0490) ^ SecurityKey; + case GameVersion.FRLG: return BitConverter.ToUInt32(Data, BlockOfs[1] + 0x0290) ^ SecurityKey; default: return 0; } } @@ -269,8 +304,8 @@ public override uint Money switch (Version) { case GameVersion.RS: - case GameVersion.E: BitConverter.GetBytes(value ^ SecurityKey).CopyTo(Data, Party + 0x0490); break; - case GameVersion.FRLG: BitConverter.GetBytes(value ^ SecurityKey).CopyTo(Data, Party + 0x0290); break; + case GameVersion.E: BitConverter.GetBytes(value ^ SecurityKey).CopyTo(Data, BlockOfs[1] + 0x0490); break; + case GameVersion.FRLG: BitConverter.GetBytes(value ^ SecurityKey).CopyTo(Data, BlockOfs[1] + 0x0290); break; } } } @@ -281,8 +316,8 @@ public uint Coin switch (Version) { case GameVersion.RS: - case GameVersion.E: return BitConverter.ToUInt32(Data, Party + 0x0494) ^ SecurityKey; - case GameVersion.FRLG: return BitConverter.ToUInt32(Data, Party + 0x0294) ^ SecurityKey; + case GameVersion.E: return BitConverter.ToUInt32(Data, BlockOfs[1] + 0x0494) ^ SecurityKey; + case GameVersion.FRLG: return BitConverter.ToUInt32(Data, BlockOfs[1] + 0x0294) ^ SecurityKey; default: return 0; } } @@ -291,15 +326,15 @@ public uint Coin switch (Version) { case GameVersion.RS: - case GameVersion.E: BitConverter.GetBytes(value ^ SecurityKey).CopyTo(Data, Party + 0x0494); break; - case GameVersion.FRLG: BitConverter.GetBytes(value ^ SecurityKey).CopyTo(Data, Party + 0x0294); break; + case GameVersion.E: BitConverter.GetBytes(value ^ SecurityKey).CopyTo(Data, BlockOfs[1] + 0x0494); break; + case GameVersion.FRLG: BitConverter.GetBytes(value ^ SecurityKey).CopyTo(Data, BlockOfs[1] + 0x0294); break; } } } public int BP { - get { return Data[Trainer1 + 0xEB8]; } - set { Data[Trainer1 + 0xEB8] = (byte)value; } + get { return Data[BlockOfs[0] + 0xEB8]; } + set { Data[BlockOfs[0] + 0xEB8] = (byte)value; } } private readonly ushort[] LegalItems, LegalKeyItems, LegalBalls, LegalTMHMs, LegalBerries; @@ -364,7 +399,7 @@ public override int PartyCount int ofs = 0x34; if (GameVersion.FRLG != Version) ofs += 0x200; - return Data[Party + ofs]; + return Data[BlockOfs[1] + ofs]; } protected set @@ -372,7 +407,7 @@ protected set int ofs = 0x34; if (GameVersion.FRLG != Version) ofs += 0x200; - Data[Party + ofs] = (byte)value; + Data[BlockOfs[1] + ofs] = (byte)value; } } public override int getBoxOffset(int box) @@ -384,7 +419,7 @@ public override int getPartyOffset(int slot) int ofs = 0x38; if (GameVersion.FRLG != Version) ofs += 0x200; - return Party + ofs + SIZE_PARTY * slot; + return BlockOfs[1] + ofs + SIZE_PARTY * slot; } public override int CurrentBox { @@ -395,7 +430,7 @@ public override int getBoxWallpaper(int box) { // Box Wallpaper is directly after the Box Names int offset = getBoxOffset(BoxCount); - offset += BoxCount * 0x9; + offset += BoxCount * 0x9 + box; return Data[offset]; } public override string getBoxName(int box) @@ -418,5 +453,88 @@ public override byte[] decryptPKM(byte[] data) { return PKX.decryptArray3(data); } + + protected override void setDex(PKM pkm) + { + if (pkm.Species == 0) + return; + if (pkm.Species > MaxSpeciesID) + return; + if (Version == GameVersion.Unknown) + return; + if (BlockOfs.Any(z => z < 0)) + return; + + int bit = pkm.Species - 1; + int ofs = bit/8; + byte bitval = (byte)(1 << (bit%8)); + + // Set the Captured Flag + Data[BlockOfs[0] + 0x28 + ofs] |= bitval; + + // Set the Seen Flag + Data[BlockOfs[0] + 0x5C + ofs] |= bitval; + + // Set the two other Seen flags (mirrored) + switch (Version) + { + case GameVersion.RS: + Data[BlockOfs[1] + 0x938 + ofs] |= bitval; + Data[BlockOfs[4] + 0xC0C + ofs] |= bitval; + break; + case GameVersion.E: + Data[BlockOfs[1] + 0x988 + ofs] |= bitval; + Data[BlockOfs[4] + 0xCA4 + ofs] |= bitval; + break; + case GameVersion.FRLG: + Data[BlockOfs[1] + 0x5F8 + ofs] |= bitval; + Data[BlockOfs[4] + 0xB98 + ofs] |= bitval; + break; + } + } + + public bool NationalDex + { + get + { + if (BlockOfs.Any(z => z < 0)) + return false; + switch (Version) // only check natdex status in Block0 + { + case GameVersion.RS: + case GameVersion.E: + return BitConverter.ToUInt16(Data, BlockOfs[0] + 0x19) == 0xDA01; + case GameVersion.FRLG: + return Data[BlockOfs[0] + 0x1B] == 0xB9; + } + return false; + } + set + { + if (BlockOfs.Any(z => z < 0)) + return; + switch (Version) + { + case GameVersion.RS: + BitConverter.GetBytes((ushort)(value ? 0xDA01 : 0)).CopyTo(Data, BlockOfs[0] + 0x19); // A + Data[BlockOfs[2] + 0x3A6] &= 0xBF; + Data[BlockOfs[2] + 0x3A6] |= (byte)(value ? 1 << 6 : 0); // B + BitConverter.GetBytes((ushort)(value ? 0x0302 : 0)).CopyTo(Data, BlockOfs[2] + 0x44C); // C + break; + case GameVersion.E: + BitConverter.GetBytes((ushort)(value ? 0xDA01 : 0)).CopyTo(Data, BlockOfs[0] + 0x19); // A + Data[BlockOfs[2] + 0x402] &= 0xBF; // Bit6 + Data[BlockOfs[2] + 0x402] |= (byte)(value ? 1 << 6 : 0); // B + BitConverter.GetBytes((ushort)(value ? 0x6258 : 0)).CopyTo(Data, BlockOfs[2] + 0x4A8); // C + break; + case GameVersion.FRLG: + Data[BlockOfs[0] + 0x1B] = (byte)(value ? 0xB9 : 0); // A + Data[BlockOfs[2] + 0x68] &= 0xFE; + Data[BlockOfs[2] + 0x68] |= (byte)(value ? 1 : 0); // B + BitConverter.GetBytes((ushort)(value ? 0x6258 : 0)).CopyTo(Data, BlockOfs[2] + 0x11C); // C + break; + } + } + } } } diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index 5356c733f..dabfeb61c 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -26,7 +26,12 @@ public SAV4(byte[] data = null, GameVersion versionOverride = GameVersion.Any) getActiveBlock(); getSAVOffsets(); - Personal = Legal.PersonalAO; // todo + switch (Version) + { + case GameVersion.DP: Personal = PersonalTable.DP; break; + case GameVersion.Pt: Personal = PersonalTable.Pt; break; + case GameVersion.HGSS: Personal = PersonalTable.HGSS; break; + } if (!Exportable) resetBoxes(); @@ -186,6 +191,7 @@ private void getSAVOffsets() AdventureInfo = 0 + GBO; Trainer1 = 0x64 + GBO; Party = 0x98 + GBO; + PokeDex = 0x12DC + GBO; WondercardFlags = 0xA6D0 + GBO; WondercardData = 0xA7fC + GBO; @@ -215,6 +221,7 @@ private void getSAVOffsets() AdventureInfo = 0 + GBO; Trainer1 = 0x68 + GBO; Party = 0xA0 + GBO; + PokeDex = 0x1328 + GBO; WondercardFlags = 0xB4C0 + GBO; WondercardData = 0xB5C0 + GBO; @@ -244,6 +251,7 @@ private void getSAVOffsets() AdventureInfo = 0 + GBO; Trainer1 = 0x64 + GBO; Party = 0x98 + GBO; + PokeDex = 0x12B8 + GBO; WondercardFlags = 0x9D3C + GBO; WondercardData = 0x9E3C + GBO; @@ -274,6 +282,7 @@ private void getSAVOffsets() private int WondercardFlags = int.MinValue; private int AdventureInfo = int.MinValue; + public override bool HasPokeDex => false; // Inventory private ushort[] LegalItems, LegalKeyItems, LegalTMHMs, LegalMedicine, LegalBerries, LegalBalls, LegalBattleItems, LegalMailItems; @@ -417,7 +426,7 @@ public int M case GameVersion.HGSS: ofs = 0x1234; break; case GameVersion.Pt: ofs = 0x1280; break; } - return BitConverter.ToInt32(Data, ofs); + return BitConverter.ToUInt16(Data, ofs); } set { @@ -428,7 +437,7 @@ public int M case GameVersion.HGSS: ofs = 0x1234; break; case GameVersion.Pt: ofs = 0x1280; break; } - BitConverter.GetBytes(value).CopyTo(Data, ofs); + BitConverter.GetBytes((ushort)value).CopyTo(Data, ofs); } } public int X @@ -442,7 +451,7 @@ public int X case GameVersion.Pt: ofs = 0x287E; break; case GameVersion.HGSS: ofs = 0x236E; break; } - return BitConverter.ToInt32(Data, ofs); + return BitConverter.ToUInt16(Data, ofs); } set { @@ -453,12 +462,12 @@ public int X case GameVersion.Pt: ofs = 0x287E; break; case GameVersion.HGSS: ofs = 0x236E; break; } - BitConverter.GetBytes(value).CopyTo(Data, ofs); + BitConverter.GetBytes((ushort)value).CopyTo(Data, ofs); switch (Version) { case GameVersion.DP: case GameVersion.HGSS: - BitConverter.GetBytes(value).CopyTo(Data, 0x123C); + BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x123C); break; } } @@ -474,7 +483,7 @@ public int Z case GameVersion.Pt: ofs = 0x2886; break; case GameVersion.HGSS: ofs = 0x2376; break; } - return BitConverter.ToInt32(Data, ofs); + return BitConverter.ToUInt16(Data, ofs); } set { @@ -485,7 +494,7 @@ public int Z case GameVersion.Pt: ofs = 0x2886; break; case GameVersion.HGSS: ofs = 0x2376; break; } - BitConverter.GetBytes(value).CopyTo(Data, ofs); + BitConverter.GetBytes((ushort)value).CopyTo(Data, ofs); } } public int Y @@ -499,7 +508,7 @@ public int Y case GameVersion.Pt: ofs = 0x2882; break; case GameVersion.HGSS: ofs = 0x2372; break; } - return BitConverter.ToInt32(Data, ofs); + return BitConverter.ToUInt16(Data, ofs); } set { @@ -510,12 +519,12 @@ public int Y case GameVersion.Pt: ofs = 0x2882; break; case GameVersion.HGSS: ofs = 0x2372; break; } - BitConverter.GetBytes(value).CopyTo(Data, ofs); + BitConverter.GetBytes((ushort)value).CopyTo(Data, ofs); switch (Version) { case GameVersion.DP: case GameVersion.HGSS: - BitConverter.GetBytes(value).CopyTo(Data, 0x1240); + BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x1240); break; } } @@ -526,15 +535,15 @@ public int Y // Storage public override int CurrentBox { - get { return Data[Box - 4]; } - set { Data[Box - 4] = (byte)value; } + get { return Data[Version == GameVersion.HGSS ? getBoxOffset(BoxCount) : Box - 4]; } + set { Data[Version == GameVersion.HGSS ? getBoxOffset(BoxCount) : Box - 4] = (byte)value; } } public override int getBoxWallpaper(int box) { // Box Wallpaper is directly after the Box Names int offset = getBoxOffset(BoxCount); if (Version == GameVersion.HGSS) offset += 0x18; - offset += BoxCount*0x28; + offset += BoxCount*0x28 + box; return Data[offset]; } public override string getBoxName(int box) @@ -662,5 +671,28 @@ protected override MysteryGift[] MysteryGiftCards } } } + + protected override void setDex(PKM pkm) + { + if (pkm.Species == 0) + return; + if (pkm.Species > MaxSpeciesID) + return; + if (Version == GameVersion.Unknown) + return; + if (PokeDex < 0) + return; + + const int brSize = 0x40; + int bit = pkm.Species - 1; + + // Set the Species Owned Flag + Data[PokeDex + brSize * 0 + bit / 8 + 0x4] |= (byte)(1 << (bit % 8)); + + // Set the Species Seen Flag + Data[PokeDex + brSize * 1 + bit / 8 + 0x4] |= (byte)(1 << (bit % 8)); + + // Formes : todo + } } } diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index 8b17dc7d9..9d2b68d0d 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -7,7 +7,7 @@ namespace PKHeX public sealed class SAV5 : SaveFile { // Save Data Attributes - public override string BAKName => $"{FileName} [{OT} ({Version})" +/* - {LastSavedTime}*/ "].bak"; + public override string BAKName => $"{FileName} [{OT} ({(GameVersion)Game})" +/* - {LastSavedTime}*/ "].bak"; public override string Filter => (Footer.Length > 0 ? "DeSmuME DSV|*.dsv|" : "") + "SAV File|*.sav"; public override string Extension => ".sav"; public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) @@ -40,6 +40,10 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) BattleBox = 0x20A00; Trainer2 = 0x21200; Daycare = 0x20E00; + PokeDex = 0x21600; + PokeDexLanguageFlags = PokeDex + 0x320; + CGearInfoOffset = 0x1C000; + CGearDataOffset = 0x52000; // Inventory offsets are the same for each game. OFS_PouchHeldItem = 0x18400; // 0x188D7 @@ -52,6 +56,8 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalTMHMs = Legal.Pouch_TMHM_BW; LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; + + Personal = PersonalTable.BW; break; case GameVersion.B2W2: // B2W2 BattleBox = 0x20900; @@ -59,6 +65,10 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) EventConst = 0x1FF00; EventFlag = EventConst + 0x35E; Daycare = 0x20D00; + PokeDex = 0x21400; + PokeDexLanguageFlags = PokeDex + 0x328; // forme flags size is + 8 from bw with new formes (therians) + CGearInfoOffset = 0x1C000; + CGearDataOffset = 0x52800; // Inventory offsets are the same for each game. OFS_PouchHeldItem = 0x18400; // 0x188D7 @@ -71,10 +81,11 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalTMHMs = Legal.Pouch_TMHM_BW; LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; + + Personal = PersonalTable.B2W2; break; } HeldItems = Legal.HeldItems_BW; - Personal = Legal.PersonalAO; // todo getBlockInfo(); if (!Exportable) @@ -145,7 +156,7 @@ private void getBlockInfo() new BlockInfo(0x19600, 0x1338, 0x1A93A, 0x23F3A), // ??? new BlockInfo(0x1AA00, 0x07C4, 0x1B1C6, 0x23F3C), // ??? new BlockInfo(0x1B200, 0x0D54, 0x1BF56, 0x23F3E), // ??? - new BlockInfo(0x1C000, 0x002C, 0x1C02E, 0x23F40), // ??? + new BlockInfo(0x1C000, 0x002C, 0x1C02E, 0x23F40), // Skin Info new BlockInfo(0x1C100, 0x0658, 0x1C75A, 0x23F42), // ??? Gym badge data new BlockInfo(0x1C800, 0x0A94, 0x1D296, 0x23F44), // ??? new BlockInfo(0x1D300, 0x01AC, 0x1D4AE, 0x23F46), // ??? @@ -222,7 +233,7 @@ private void getBlockInfo() new BlockInfo(0x19600, 0x1338, 0x1A93A, 0x25F3A), // Unity Tower and survey stuff new BlockInfo(0x1AA00, 0x07c4, 0x1B1C6, 0x25F3C), // Pal Pad Player Data (30d) new BlockInfo(0x1B200, 0x0d54, 0x1BF56, 0x25F3E), // Pal Pad Friend Data - new BlockInfo(0x1C000, 0x0094, 0x1C096, 0x25F40), // C-Gear + new BlockInfo(0x1C000, 0x0094, 0x1C096, 0x25F40), // Skin Info new BlockInfo(0x1C100, 0x0658, 0x1C75A, 0x25F42), // Card Signature Block & ???? new BlockInfo(0x1C800, 0x0a94, 0x1D296, 0x25F44), // Mystery Gift new BlockInfo(0x1D300, 0x01ac, 0x1D4AE, 0x25F46), // Dream World Stuff (Catalog) @@ -346,9 +357,11 @@ public override string ChecksumInfo private const int wcSeed = 0x1D290; - private readonly int Trainer2, AdventureInfo; + public readonly int CGearInfoOffset, CGearDataOffset; + private readonly int Trainer2, AdventureInfo, PokeDexLanguageFlags; public override bool HasBoxWallpapers => false; - + public override bool HasPokeDex => false; + // Daycare public override int DaycareSeedSize => 16; public override int getDaycareSlotOffset(int loc, int slot) @@ -558,18 +571,18 @@ public int M } public int X { - get { return BitConverter.ToInt32(Data, Trainer1 + 0x186); } - set { BitConverter.GetBytes(value * 18).CopyTo(Data, Trainer1 + 0x186); } + get { return BitConverter.ToUInt16(Data, Trainer1 + 0x186); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x186); } } public int Z { - get { return BitConverter.ToInt32(Data, Trainer1 + 0x18A); } - set { BitConverter.GetBytes(value).CopyTo(Data, Trainer1 + 0x18A); } + get { return BitConverter.ToUInt16(Data, Trainer1 + 0x18A); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x18A); } } public int Y { - get { return BitConverter.ToInt32(Data, Trainer1 + 0x18E); } - set { BitConverter.GetBytes(value * 18).CopyTo(Data, Trainer1 + 0x18E); } + get { return BitConverter.ToUInt16(Data, Trainer1 + 0x18E); } + set { BitConverter.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x18E); } } public override int PlayedHours @@ -589,5 +602,45 @@ public override int PlayedSeconds } public override int SecondsToStart { get { return BitConverter.ToInt32(Data, AdventureInfo + 0x34); } set { BitConverter.GetBytes(value).CopyTo(Data, AdventureInfo + 0x34); } } public override int SecondsToFame { get { return BitConverter.ToInt32(Data, AdventureInfo + 0x3C); } set { BitConverter.GetBytes(value).CopyTo(Data, AdventureInfo + 0x3C); } } + + protected override void setDex(PKM pkm) + { + if (pkm.Species == 0) + return; + if (pkm.Species > MaxSpeciesID) + return; + if (Version == GameVersion.Unknown) + return; + if (PokeDex < 0) + return; + + const int brSize = 0x54; + int bit = pkm.Species - 1; + int lang = pkm.Language - 1; if (lang > 5) lang--; // 0-6 language vals + int gender = pkm.Gender % 2; // genderless -> male + int shiny = pkm.IsShiny ? 1 : 0; + int shiftoff = shiny * 0x54 * 2 + gender * 0x60 + 0x60; + + // Set the Species Owned Flag + Data[PokeDex + bit / 8 + 0x8] |= (byte)(1 << (bit % 8)); + + // Set the [Species/Gender/Shiny] Seen Flag + Data[PokeDex + shiftoff + bit / 8 + 0x8] |= (byte)(1 << (bit % 8)); + + // Set the Display flag if none are set + bool Displayed = false; + Displayed |= (Data[PokeDex + brSize * 5 + bit / 8 + 0x8] & (byte)(1 << (bit % 8))) != 0; + Displayed |= (Data[PokeDex + brSize * 6 + bit / 8 + 0x8] & (byte)(1 << (bit % 8))) != 0; + Displayed |= (Data[PokeDex + brSize * 7 + bit / 8 + 0x8] & (byte)(1 << (bit % 8))) != 0; + Displayed |= (Data[PokeDex + brSize * 8 + bit / 8 + 0x8] & (byte)(1 << (bit % 8))) != 0; + if (!Displayed) // offset is already biased by 0x60, reuse shiftoff but for the display flags. + Data[PokeDex + shiftoff + brSize * 4 + bit / 8 + 0x8] |= (byte)(1 << (bit % 8)); + + // Set the Language + if (lang < 0) lang = 1; + Data[PokeDexLanguageFlags + (bit * 7 + lang) / 8] |= (byte)(1 << ((bit * 7 + lang) % 8)); + + // Formes : todo + } } } diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index 18aa812ae..df076efb0 100644 --- a/Saves/SAV6.cs +++ b/Saves/SAV6.cs @@ -21,7 +21,7 @@ public SAV6(byte[] data = null) getSAVOffsets(); HeldItems = ORAS ? Legal.HeldItem_AO : Legal.HeldItem_XY; - Personal = ORAS ? Legal.PersonalAO : Legal.PersonalXY; + Personal = ORAS ? PersonalTable.AO : PersonalTable.XY; if (!Exportable) resetBoxes(); } @@ -102,8 +102,39 @@ protected override void setChecksums() BitConverter.GetBytes(SaveUtil.ccitt16(array)).CopyTo(Data, BlockInfoOffset + 6 + i * 8); } } - public override bool ChecksumsValid => SaveUtil.verifyG6SAV(Data); - public override string ChecksumInfo => SaveUtil.verifyG6CHK(Data); + public override bool ChecksumsValid + { + get + { + for (int i = 0; i < Blocks.Length; i++) + { + byte[] array = Data.Skip(Blocks[i].Offset).Take(Blocks[i].Length).ToArray(); + if (SaveUtil.ccitt16(array) != BitConverter.ToUInt16(Data, BlockInfoOffset + 6 + i * 8)) + return false; + } + return true; + } + } + public override string ChecksumInfo + { + get + { + int invalid = 0; + string rv = ""; + for (int i = 0; i < Blocks.Length; i++) + { + byte[] array = Data.Skip(Blocks[i].Offset).Take(Blocks[i].Length).ToArray(); + if (SaveUtil.ccitt16(array) == BitConverter.ToUInt16(Data, BlockInfoOffset + 6 + i * 8)) + continue; + + invalid++; + rv += $"Invalid: {i.ToString("X2")} @ Region {Blocks[i].Offset.ToString("X5") + Environment.NewLine}"; + } + // Return Outputs + rv += $"SAV: {Blocks.Length - invalid}/{Blocks.Length + Environment.NewLine}"; + return rv; + } + } public ulong Secure1 { get { return BitConverter.ToUInt64(Data, BlockInfoOffset - 0x14); } @@ -170,6 +201,7 @@ private void getSAVOffsets() WondercardFlags = 0x1BC00; SUBE = 0x1D890; SuperTrain = 0x1F200; + LinkInfo = 0x1FE00; Box = 0x22600; JPEG = 0x57200; @@ -215,6 +247,7 @@ private void getSAVOffsets() SUBE = 0x1D890; PSSStats = 0x1F400; SuperTrain = 0x20200; + LinkInfo = 0x20E00; Contest = 0x23600; SecretBase = 0x23A00; EonTicket = 0x319B8; @@ -254,6 +287,7 @@ private void getSAVOffsets() private int JPEG { get; set; } = int.MinValue; private int ItemInfo { get; set; } = int.MinValue; private int Daycare2 { get; set; } = int.MinValue; + private int LinkInfo { get; set; } = int.MinValue; // Accessible as SAV6 public int TrainerCard { get; private set; } = 0x14000; @@ -615,7 +649,8 @@ public override int getBoxOffset(int box) } public override int getBoxWallpaper(int box) { - return 1 + Data[PCBackgrounds + box]; + int ofs = PCBackgrounds > 0 && PCBackgrounds < Data.Length ? PCBackgrounds : 0; + return Data[ofs + box]; } public override string getBoxName(int box) { @@ -692,7 +727,7 @@ protected override void setDex(PKM pkm) Data[PokeDexLanguageFlags + (bit * 7 + lang) / 8] |= (byte)(1 << ((bit * 7 + lang) % 8)); // Set Form flags - int fc = PKX.Personal[pkm.Species].FormeCount; + int fc = Personal[pkm.Species].FormeCount; int f = ORAS ? SaveUtil.getDexFormIndexORAS(pkm.Species, fc) : SaveUtil.getDexFormIndexXY(pkm.Species, fc); if (f >= 0) { @@ -790,6 +825,25 @@ protected override MysteryGift[] MysteryGiftCards setWC6(new WC6(), i); } } + + public byte[] LinkBlock + { + get + { + if (LinkInfo < 0) + return null; + return Data.Skip(LinkInfo).Take(0xC48).ToArray(); + } + set + { + if (LinkInfo < 0) + return; + if (value.Length != 0xC48) + return; + value.CopyTo(Data, LinkInfo); + } + } + private WC6 getWC6(int index) { if (WondercardData < 0) diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index 23985ca44..6775c7716 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -19,6 +19,7 @@ public abstract class SaveFile public abstract SaveFile Clone(); public abstract string Filter { get; } public byte[] Footer { protected get; set; } = new byte[0]; // .dsv + public bool Japanese { protected get; set; } // General PKM Properties protected abstract Type PKMType { get; } @@ -31,7 +32,7 @@ public abstract class SaveFile public ushort[] HeldItems { get; protected set; } // General SAV Properties - public byte[] Write(bool DSV) + public virtual byte[] Write(bool DSV) { setChecksums(); if (Footer.Length > 0 && DSV) @@ -44,11 +45,19 @@ public byte[] Write(bool DSV) public abstract bool ChecksumsValid { get; } public abstract string ChecksumInfo { get; } public abstract int Generation { get; } - public PersonalInfo[] Personal { get; protected set; } + public PersonalTable Personal { get; set; } public bool ORASDEMO => Data.Length == SaveUtil.SIZE_G6ORASDEMO; public bool ORAS => Version == GameVersion.OR || Version == GameVersion.AS; public bool XY => Version == GameVersion.X || Version == GameVersion.Y; + public bool B2W2 => Version == GameVersion.B2W2; + public bool BW => Version == GameVersion.BW; + public bool HGSS => Version == GameVersion.HGSS; + public bool Pt => Version == GameVersion.Pt; + public bool DP => Version == GameVersion.DP; + public bool E => Version == GameVersion.E; + public bool FRLG => Version == GameVersion.FRLG; + public bool RS => Version == GameVersion.RS; public virtual int MaxMoveID => int.MaxValue; public virtual int MaxSpeciesID => int.MaxValue; @@ -68,17 +77,18 @@ public byte[] Write(bool DSV) public bool HasOPower => OPower > -1; public bool HasJPEG => JPEGData != null; public bool HasBox => Box > -1; - public bool HasParty => Party > -1; + public virtual bool HasParty => Party > -1; public bool HasBattleBox => BattleBox > -1; public bool HasFused => Fused > -1; public bool HasGTS => GTS > -1; public bool HasDaycare => Daycare > -1; - public bool HasPokeDex => PokeDex > -1; + public virtual bool HasPokeDex => PokeDex > -1; public virtual bool HasBoxWallpapers => PCLayout > -1; public virtual bool HasSUBE => SUBE > -1 && !ORAS; public virtual bool HasGeolocation => false; public bool HasPokeBlock => ORAS && !ORASDEMO; public bool HasEvents => EventFlags != null; + public bool HasLink => ORAS && !ORASDEMO || XY; // Counts protected virtual int GiftCountMax { get; } = int.MinValue; @@ -122,6 +132,8 @@ public PKM[] BoxData { data[i] = getStoredSlot(getBoxOffset(i/30) + SIZE_STORED*(i%30)); data[i].Identifier = $"{getBoxName(i/30)}:{(i%30 + 1).ToString("00")}"; + data[i].Box = i/30 + 1; + data[i].Slot = i%30 + 1; } return data; } @@ -144,7 +156,7 @@ public PKM[] PartyData { PKM[] data = new PKM[PartyCount]; for (int i = 0; i < data.Length; i++) - data[i] = getPartySlot(Party + SIZE_PARTY * i); + data[i] = getPartySlot(getPartyOffset(i)); return data; } set @@ -223,7 +235,7 @@ public ushort[] EventConsts ushort[] Constants = new ushort[EventConstMax]; for (int i = 0; i < Constants.Length; i++) - Constants[i] = BitConverter.ToUInt16(Data, EventConst + i); + Constants[i] = BitConverter.ToUInt16(Data, EventConst + i * 2); return Constants; } set @@ -291,7 +303,7 @@ public virtual MysteryGiftAlbum GiftAlbum public abstract uint Money { get; set; } public abstract int BoxCount { get; } public abstract int PartyCount { get; protected set; } - public virtual int CurrentBox { get { return 0; } set { } } + public abstract int CurrentBox { get; set; } public abstract string Extension { get; } // Varied Methods @@ -334,6 +346,11 @@ public void setPartySlot(PKM pkm, int offset, bool? trade = null, bool? dex = nu if (dex ?? SetUpdateDex) setDex(pkm); + for (int i = 0; i < 6; i++) + if (getPartyOffset(i) == offset) + if (PartyCount <= i) + PartyCount = i + 1; + setData(pkm.EncryptedPartyData, offset); Console.WriteLine(""); Edited = true; @@ -360,6 +377,11 @@ public void setPartySlot(byte[] data, int offset, bool? trade = null, bool? dex if (dex ?? SetUpdateDex) setDex(pkm); + for (int i = 0; i < 6; i++) + if (getPartyOffset(i) == offset) + if (PartyCount <= i) + PartyCount = i + 1; + setData(pkm.EncryptedPartyData, offset); Edited = true; } @@ -375,6 +397,20 @@ public void setStoredSlot(byte[] data, int offset, bool? trade = null, bool? dex setData(pkm.EncryptedBoxData, offset); Edited = true; } + public void deletePartySlot(int slot) + { + if (PartyCount <= slot) // beyond party range (or empty data already present) + return; + // Move all party slots down one + for (int i = slot + 1; i < 6; i++) // Slide slots down + { + int slotTo = getPartyOffset(i - 1); + int slotFrom = getPartyOffset(i); + setData(getData(slotFrom, SIZE_PARTY), slotTo); + } + setStoredSlot(BlankPKM, getPartyOffset(5), false, false); + PartyCount -= 1; + } public void sortBoxes(int BoxStart = 0, int BoxEnd = -1) { diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index 4d8019ba6..0a2b8aad4 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; @@ -18,8 +20,8 @@ public enum GameVersion // Game Groupings (SaveFile type) RS = 100, FRLG = 101, - DP = 103, - HGSS = 104, + DP = 102, + HGSS = 103, BW = 104, B2W2 = 105, XY = 106, @@ -77,7 +79,11 @@ public static GameVersion getIsG3SAV(byte[] data) // Detect RS/E/FRLG // Section 0 stores Game Code @ 0x00AC; 0 for RS, 1 for FRLG, else for Emerald - uint GameCode = BitConverter.ToUInt32(data, Array.IndexOf(BlockOrder, 0) * 0x1000 + 0xAC); + int Block0 = Array.IndexOf(BlockOrder, 0); + uint GameCode = BitConverter.ToUInt32(data, Block0 * 0x1000 + 0xAC); + if (GameCode == uint.MaxValue) + return GameVersion.Unknown; // what a hack + switch (GameCode) { case 0: return GameVersion.RS; @@ -134,7 +140,7 @@ public static GameVersion getIsG5SAV(byte[] data) /// Version Identifier or Invalid if type cannot be determined. public static GameVersion getIsG6SAV(byte[] data) { - if (!SizeValidSAV6(data.Length)) + if (!new []{SIZE_G6XY, SIZE_G6ORAS, SIZE_G6ORASDEMO}.Contains(data.Length)) return GameVersion.Invalid; if (BitConverter.ToUInt32(data, data.Length - 0x1F0) != BEEF) @@ -172,21 +178,74 @@ public static SaveFile getVariantSAV(byte[] data) } } + /// + /// Detects a save file. + /// + /// Full path of a save file. Returns null if unable to find any. + public static string detectSaveFile() + { + string path; + string path3DS = Path.GetPathRoot(Util.get3DSLocation()); + List possiblePaths = new List(); + + // save_manager + if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "saveDataBackup"))) + possiblePaths.AddRange(getSavesFromFolder(path, false)); + + // SaveDataFiler + if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "filer", "UserSaveData"))) + possiblePaths.AddRange(getSavesFromFolder(path, true)); + + // JKSV + if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "JKSV", "Saves"))) + possiblePaths.AddRange(getSavesFromFolder(path, true)); + + // TWL Save Tool + if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "TWLSaveTool"))) + possiblePaths.AddRange(getSavesFromFolder(path, false)); + + // CyberGadget (Cache) + string pathCache = Util.GetCacheFolder(); + if (Directory.Exists(pathCache)) + possiblePaths.AddRange(getSavesFromFolder(Path.Combine(pathCache), false)); + + // return newest save file path that is valid (oh man) + return possiblePaths.OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault(p => getVariantSAV(File.ReadAllBytes(p)).ChecksumsValid); + } + /// + /// Retrieves the full path of the most recent file based on LastWriteTime. + /// + /// Folder to look within + /// Search all subfolders + /// Full path of all save files that match criteria. + public static IEnumerable getSavesFromFolder(string folderPath, bool deep) + { + if (!Directory.Exists(folderPath)) + return null; + return Directory.GetFiles(folderPath, "*", deep ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) + .Where(f => SizeValidSAV((int)new FileInfo(f).Length)); + } + /// /// Determines whether the save data size is valid for 6th generation saves. /// /// Size in bytes of the save data /// A boolean indicating whether or not the save data size is valid. - public static bool SizeValidSAV6(int size) + public static bool SizeValidSAV(int size) { switch (size) { case SIZE_G6XY: case SIZE_G6ORASDEMO: case SIZE_G6ORAS: + case SIZE_G5B2W2: + case SIZE_G4RAW: + case SIZE_G3RAW: + case SIZE_G3RAWHALF: return true; + default: + return false; } - return false; } // SAV Manipulation @@ -212,134 +271,6 @@ public static ushort ccitt16(byte[] data) } return crc; } - /// Simple check to see if the save is valid. - /// Input binary file - /// True/False - public static bool verifyG6SAV(byte[] savefile) - { - // Dynamic handling of checksums regardless of save size. - - int verificationOffset = savefile.Length - 0x200 + 0x10; - if (BitConverter.ToUInt32(savefile, verificationOffset) != BEEF) - verificationOffset -= 0x200; // No savegames have more than 0x3D blocks, maybe in the future? - - int count = (savefile.Length - verificationOffset - 0x8) / 8; - verificationOffset += 4; - int[] Lengths = new int[count]; - ushort[] BlockIDs = new ushort[count]; - ushort[] Checksums = new ushort[count]; - int[] Start = new int[count]; - int CurrentPosition = 0; - for (int i = 0; i < count; i++) - { - Start[i] = CurrentPosition; - Lengths[i] = BitConverter.ToInt32(savefile, verificationOffset + 0 + 8 * i); - BlockIDs[i] = BitConverter.ToUInt16(savefile, verificationOffset + 4 + 8 * i); - Checksums[i] = BitConverter.ToUInt16(savefile, verificationOffset + 6 + 8 * i); - - CurrentPosition += Lengths[i] % 0x200 == 0 ? Lengths[i] : 0x200 - Lengths[i] % 0x200 + Lengths[i]; - - if ((BlockIDs[i] != 0) || i == 0) continue; - count = i; - break; - } - // Verify checksums - for (int i = 0; i < count; i++) - { - ushort chk = ccitt16(savefile.Skip(Start[i]).Take(Lengths[i]).ToArray()); - ushort old = BitConverter.ToUInt16(savefile, verificationOffset + 6 + i * 8); - - if (chk != old) - return false; - } - return true; - } - /// Verbose check to see if the save is valid. - /// Input binary file - /// String containing invalid blocks. - public static string verifyG6CHK(byte[] savefile) - { - string rv = ""; - int invalid = 0; - // Dynamic handling of checksums regardless of save size. - - int verificationOffset = savefile.Length - 0x200 + 0x10; - if (BitConverter.ToUInt32(savefile, verificationOffset) != BEEF) - verificationOffset -= 0x200; // No savegames have more than 0x3D blocks, maybe in the future? - - int count = (savefile.Length - verificationOffset - 0x8) / 8; - verificationOffset += 4; - int[] Lengths = new int[count]; - ushort[] BlockIDs = new ushort[count]; - ushort[] Checksums = new ushort[count]; - int[] Start = new int[count]; - int CurrentPosition = 0; - for (int i = 0; i < count; i++) - { - Start[i] = CurrentPosition; - Lengths[i] = BitConverter.ToInt32(savefile, verificationOffset + 0 + 8 * i); - BlockIDs[i] = BitConverter.ToUInt16(savefile, verificationOffset + 4 + 8 * i); - Checksums[i] = BitConverter.ToUInt16(savefile, verificationOffset + 6 + 8 * i); - - CurrentPosition += Lengths[i] % 0x200 == 0 ? Lengths[i] : 0x200 - Lengths[i] % 0x200 + Lengths[i]; - - if (BlockIDs[i] != 0 || i == 0) continue; - count = i; - break; - } - // Apply checksums - for (int i = 0; i < count; i++) - { - ushort chk = ccitt16(savefile.Skip(Start[i]).Take(Lengths[i]).ToArray()); - ushort old = BitConverter.ToUInt16(savefile, verificationOffset + 6 + i * 8); - - if (chk == old) continue; - - invalid++; - rv += $"Invalid: {i.ToString("X2")} @ Region {Start[i].ToString("X5") + Environment.NewLine}"; - } - // Return Outputs - rv += $"SAV: {count - invalid}/{count + Environment.NewLine}"; - return rv; - } - /// Fix checksums in the input save file. - /// Input binary file - /// Fixed save file. - public static void writeG6CHK(byte[] savefile) - { - // Dynamic handling of checksums regardless of save size. - - int verificationOffset = savefile.Length - 0x200 + 0x10; - if (BitConverter.ToUInt32(savefile, verificationOffset) != BEEF) - verificationOffset -= 0x200; // No savegames have more than 0x3D blocks, maybe in the future? - - int count = (savefile.Length - verificationOffset - 0x8) / 8; - verificationOffset += 4; - int[] Lengths = new int[count]; - ushort[] BlockIDs = new ushort[count]; - ushort[] Checksums = new ushort[count]; - int[] Start = new int[count]; - int CurrentPosition = 0; - for (int i = 0; i < count; i++) - { - Start[i] = CurrentPosition; - Lengths[i] = BitConverter.ToInt32(savefile, verificationOffset + 0 + 8 * i); - BlockIDs[i] = BitConverter.ToUInt16(savefile, verificationOffset + 4 + 8 * i); - Checksums[i] = BitConverter.ToUInt16(savefile, verificationOffset + 6 + 8 * i); - - CurrentPosition += Lengths[i] % 0x200 == 0 ? Lengths[i] : 0x200 - Lengths[i] % 0x200 + Lengths[i]; - - if (BlockIDs[i] != 0 || i == 0) continue; - count = i; - break; - } - // Apply checksums - for (int i = 0; i < count; i++) - { - byte[] array = savefile.Skip(Start[i]).Take(Lengths[i]).ToArray(); - BitConverter.GetBytes(ccitt16(array)).CopyTo(savefile, verificationOffset + 6 + i * 8); - } - } /// Calculates the 32bit checksum over an input byte array. Used in GBA save files. /// Input byte array /// Checksum @@ -348,7 +279,7 @@ internal static ushort check32(byte[] data) uint val = 0; for (int i = 0; i < data.Length; i += 4) val += BitConverter.ToUInt32(data, i); - return (ushort)(val + val >> 16); + return (ushort)((val & 0xFFFF) + (val >> 16)); } public static int getDexFormIndexXY(int species, int formct) diff --git a/Subforms/PKM Editors/BatchEditor.Designer.cs b/Subforms/PKM Editors/BatchEditor.Designer.cs new file mode 100644 index 000000000..0d51bd986 --- /dev/null +++ b/Subforms/PKM Editors/BatchEditor.Designer.cs @@ -0,0 +1,227 @@ +namespace PKHeX +{ + partial class BatchEditor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BatchEditor)); + this.RB_SAV = new System.Windows.Forms.RadioButton(); + this.RB_Path = new System.Windows.Forms.RadioButton(); + this.FLP_RB = new System.Windows.Forms.FlowLayoutPanel(); + this.TB_Folder = new System.Windows.Forms.TextBox(); + this.RTB_Instructions = new System.Windows.Forms.RichTextBox(); + this.B_Go = new System.Windows.Forms.Button(); + this.PB_Show = new System.Windows.Forms.ProgressBar(); + this.CB_Format = new System.Windows.Forms.ComboBox(); + this.CB_Property = new System.Windows.Forms.ComboBox(); + this.CB_Require = new System.Windows.Forms.ComboBox(); + this.B_Add = new System.Windows.Forms.Button(); + this.FLP_RB.SuspendLayout(); + this.SuspendLayout(); + // + // RB_SAV + // + this.RB_SAV.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.RB_SAV.Appearance = System.Windows.Forms.Appearance.Button; + this.RB_SAV.AutoSize = true; + this.RB_SAV.Checked = true; + this.RB_SAV.Location = new System.Drawing.Point(0, 0); + this.RB_SAV.Margin = new System.Windows.Forms.Padding(0); + this.RB_SAV.Name = "RB_SAV"; + this.RB_SAV.Size = new System.Drawing.Size(61, 23); + this.RB_SAV.TabIndex = 0; + this.RB_SAV.TabStop = true; + this.RB_SAV.Text = "Save File"; + this.RB_SAV.UseVisualStyleBackColor = true; + this.RB_SAV.Click += new System.EventHandler(this.B_SAV_Click); + // + // RB_Path + // + this.RB_Path.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.RB_Path.Appearance = System.Windows.Forms.Appearance.Button; + this.RB_Path.AutoSize = true; + this.RB_Path.Location = new System.Drawing.Point(61, 0); + this.RB_Path.Margin = new System.Windows.Forms.Padding(0); + this.RB_Path.Name = "RB_Path"; + this.RB_Path.Size = new System.Drawing.Size(55, 23); + this.RB_Path.TabIndex = 1; + this.RB_Path.Text = "Folder..."; + this.RB_Path.UseVisualStyleBackColor = true; + this.RB_Path.Click += new System.EventHandler(this.B_Open_Click); + // + // FLP_RB + // + this.FLP_RB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.FLP_RB.Controls.Add(this.RB_SAV); + this.FLP_RB.Controls.Add(this.RB_Path); + this.FLP_RB.Controls.Add(this.TB_Folder); + this.FLP_RB.Location = new System.Drawing.Point(12, 10); + this.FLP_RB.Name = "FLP_RB"; + this.FLP_RB.Size = new System.Drawing.Size(370, 24); + this.FLP_RB.TabIndex = 2; + // + // TB_Folder + // + this.TB_Folder.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TB_Folder.Location = new System.Drawing.Point(118, 2); + this.TB_Folder.Margin = new System.Windows.Forms.Padding(2); + this.TB_Folder.Name = "TB_Folder"; + this.TB_Folder.ReadOnly = true; + this.TB_Folder.Size = new System.Drawing.Size(250, 20); + this.TB_Folder.TabIndex = 4; + this.TB_Folder.Visible = false; + // + // RTB_Instructions + // + this.RTB_Instructions.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.RTB_Instructions.Location = new System.Drawing.Point(12, 68); + this.RTB_Instructions.Name = "RTB_Instructions"; + this.RTB_Instructions.Size = new System.Drawing.Size(370, 157); + this.RTB_Instructions.TabIndex = 5; + this.RTB_Instructions.Text = ""; + // + // B_Go + // + this.B_Go.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Go.Location = new System.Drawing.Point(325, 230); + this.B_Go.Name = "B_Go"; + this.B_Go.Size = new System.Drawing.Size(57, 23); + this.B_Go.TabIndex = 6; + this.B_Go.Text = "Run"; + this.B_Go.UseVisualStyleBackColor = true; + this.B_Go.Click += new System.EventHandler(this.B_Go_Click); + // + // PB_Show + // + this.PB_Show.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.PB_Show.Location = new System.Drawing.Point(12, 231); + this.PB_Show.Name = "PB_Show"; + this.PB_Show.Size = new System.Drawing.Size(307, 21); + this.PB_Show.TabIndex = 7; + // + // CB_Format + // + this.CB_Format.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_Format.FormattingEnabled = true; + this.CB_Format.Items.AddRange(new object[] { + "All", + "pk6", + "pk5", + "pk4", + "pk3", + "Any"}); + this.CB_Format.Location = new System.Drawing.Point(11, 40); + this.CB_Format.Name = "CB_Format"; + this.CB_Format.Size = new System.Drawing.Size(44, 21); + this.CB_Format.TabIndex = 8; + this.CB_Format.SelectedIndexChanged += new System.EventHandler(this.CB_Format_SelectedIndexChanged); + // + // CB_Property + // + this.CB_Property.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CB_Property.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.CB_Property.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; + this.CB_Property.DropDownWidth = 200; + this.CB_Property.FormattingEnabled = true; + this.CB_Property.Location = new System.Drawing.Point(61, 40); + this.CB_Property.Name = "CB_Property"; + this.CB_Property.Size = new System.Drawing.Size(140, 21); + this.CB_Property.TabIndex = 9; + // + // CB_Require + // + this.CB_Require.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.CB_Require.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_Require.FormattingEnabled = true; + this.CB_Require.Items.AddRange(new object[] { + "Set Equal To", + "Require Equals", + "Require Not Equals"}); + this.CB_Require.Location = new System.Drawing.Point(207, 40); + this.CB_Require.Name = "CB_Require"; + this.CB_Require.Size = new System.Drawing.Size(111, 21); + this.CB_Require.TabIndex = 10; + // + // B_Add + // + this.B_Add.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.B_Add.Location = new System.Drawing.Point(324, 39); + this.B_Add.Name = "B_Add"; + this.B_Add.Size = new System.Drawing.Size(57, 23); + this.B_Add.TabIndex = 11; + this.B_Add.Text = "Add"; + this.B_Add.UseVisualStyleBackColor = true; + this.B_Add.Click += new System.EventHandler(this.B_Add_Click); + // + // BatchEditor + // + this.AllowDrop = true; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(394, 261); + this.Controls.Add(this.B_Add); + this.Controls.Add(this.CB_Require); + this.Controls.Add(this.CB_Property); + this.Controls.Add(this.CB_Format); + this.Controls.Add(this.PB_Show); + this.Controls.Add(this.B_Go); + this.Controls.Add(this.RTB_Instructions); + this.Controls.Add(this.FLP_RB); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimumSize = new System.Drawing.Size(410, 300); + this.Name = "BatchEditor"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Batch Editor"; + this.FLP_RB.ResumeLayout(false); + this.FLP_RB.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.RadioButton RB_SAV; + private System.Windows.Forms.RadioButton RB_Path; + private System.Windows.Forms.FlowLayoutPanel FLP_RB; + private System.Windows.Forms.TextBox TB_Folder; + private System.Windows.Forms.RichTextBox RTB_Instructions; + private System.Windows.Forms.Button B_Go; + private System.Windows.Forms.ProgressBar PB_Show; + private System.Windows.Forms.ComboBox CB_Format; + private System.Windows.Forms.ComboBox CB_Property; + private System.Windows.Forms.ComboBox CB_Require; + private System.Windows.Forms.Button B_Add; + } +} \ No newline at end of file diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs new file mode 100644 index 000000000..67613c4d5 --- /dev/null +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -0,0 +1,313 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Windows.Forms; + +namespace PKHeX +{ + public partial class BatchEditor : Form + { + public BatchEditor() + { + InitializeComponent(); + DragDrop += tabMain_DragDrop; + DragEnter += tabMain_DragEnter; + CB_Format.SelectedIndex = CB_Require.SelectedIndex = 0; + } + + private const string CONST_RAND = "$rand"; + private const string CONST_SHINY = "$shiny"; + private int currentFormat = -1; + private static readonly string[] pk6 = ReflectUtil.getPropertiesCanWritePublic(typeof(PK6)).OrderBy(i=>i).ToArray(); + private static readonly string[] pk5 = ReflectUtil.getPropertiesCanWritePublic(typeof(PK5)).OrderBy(i=>i).ToArray(); + private static readonly string[] pk4 = ReflectUtil.getPropertiesCanWritePublic(typeof(PK4)).OrderBy(i=>i).ToArray(); + private static readonly string[] pk3 = ReflectUtil.getPropertiesCanWritePublic(typeof(PK3)).OrderBy(i=>i).ToArray(); + private static readonly string[] all = pk6.Intersect(pk5).Intersect(pk4).Intersect(pk3).OrderBy(i => i).ToArray(); + private static readonly string[] any = pk6.Union(pk5).Union(pk4).Union(pk3).Distinct().OrderBy(i => i).ToArray(); + + // GUI Methods + private void B_Open_Click(object sender, EventArgs e) + { + if (!B_Go.Enabled) return; + var fbd = new FolderBrowserDialog(); + if (fbd.ShowDialog() != DialogResult.OK) + return; + + TB_Folder.Text = fbd.SelectedPath; + TB_Folder.Visible = true; + } + private void B_SAV_Click(object sender, EventArgs e) + { + TB_Folder.Text = ""; + TB_Folder.Visible = false; + } + private void B_Go_Click(object sender, EventArgs e) + { + if (b.IsBusy) + { Util.Alert("Currently executing instruction list."); return; } + + if (RTB_Instructions.Lines.Any(line => line.Length == 0)) + { Util.Error("Line length error in instruction list."); return; } + + runBackgroundWorker(); + } + + private BackgroundWorker b = new BackgroundWorker { WorkerReportsProgress = true }; + private void runBackgroundWorker() + { + var Filters = getFilters().ToList(); + if (Filters.Any(z => string.IsNullOrWhiteSpace(z.PropertyValue))) + { Util.Error("Empty Filter Value detected."); return; } + + var Instructions = getInstructions().ToList(); + if (Instructions.Any(z => string.IsNullOrWhiteSpace(z.PropertyValue))) + { Util.Error("Empty Property Value detected."); return; } + + string destPath = ""; + if (RB_Path.Checked) + { + Util.Alert("Please select the folder where the files will be saved to.", "This can be the same folder as the source of PKM files."); + var fbd = new FolderBrowserDialog(); + var dr = fbd.ShowDialog(); + if (dr != DialogResult.OK) + return; + + destPath = fbd.SelectedPath; + } + + FLP_RB.Enabled = RTB_Instructions.Enabled = B_Go.Enabled = false; + + b = new BackgroundWorker {WorkerReportsProgress = true}; + + b.DoWork += (sender, e) => { + if (RB_SAV.Checked) + { + var data = Main.SAV.BoxData; + setupProgressBar(data.Length); + processSAV(data, Filters, Instructions); + } + else + { + var files = Directory.GetFiles(TB_Folder.Text, "*", SearchOption.AllDirectories); + setupProgressBar(files.Length); + processFolder(files, Filters, Instructions, destPath); + } + }; + b.ProgressChanged += (sender, e) => + { + setProgressBar(e.ProgressPercentage); + }; + b.RunWorkerCompleted += (sender, e) => { + string result = $"Modified {ctr}/{len} files."; + if (err > 0) + result += Environment.NewLine + $"{err} files ignored due to an internal error."; + Util.Alert(result); + FLP_RB.Enabled = RTB_Instructions.Enabled = B_Go.Enabled = true; + setupProgressBar(0); + }; + b.RunWorkerAsync(); + } + + // Progress Bar + private void setupProgressBar(int count) + { + MethodInvoker mi = () => { PB_Show.Minimum = 0; PB_Show.Step = 1; PB_Show.Value = 0; PB_Show.Maximum = count; }; + if (PB_Show.InvokeRequired) + PB_Show.Invoke(mi); + else + mi.Invoke(); + } + private void setProgressBar(int i) + { + if (PB_Show.InvokeRequired) + PB_Show.Invoke((MethodInvoker)(() => PB_Show.Value = i)); + else { PB_Show.Value = i; } + } + + // Mass Editing + private int ctr, len, err; + private IEnumerable getFilters() + { + var raw = + RTB_Instructions.Lines + .Where(line => !string.IsNullOrWhiteSpace(line)) + .Where(line => new[] {'!','='}.Contains(line[0])); + + return from line in raw + let eval = line[0] == '=' + let split = line.Substring(1).Split('=') + where split.Length == 2 && !string.IsNullOrWhiteSpace(split[0]) + select new StringInstruction {PropertyName = split[0], PropertyValue = split[1], Evaluator = eval}; + } + private IEnumerable getInstructions() + { + var raw = + RTB_Instructions.Lines + .Where(line => !string.IsNullOrEmpty(line)) + .Where(line => new[] {'.'}.Contains(line[0])) + .Select(line => line.Substring(1)); + + return from line in raw + select line.Split('=') into split + where split.Length == 2 + select new StringInstruction { PropertyName = split[0], PropertyValue = split[1] }; + } + private void processSAV(PKM[] data, List Filters, List Instructions) + { + len = err = ctr = 0; + for (int i = 0; i < data.Length; i++) + { + var pkm = data[i]; + ModifyResult r = ProcessPKM(pkm, Filters, Instructions); + if (r != ModifyResult.Invalid) + len++; + if (r == ModifyResult.Error) + err++; + if (r == ModifyResult.Modified) + ctr++; + + b.ReportProgress(i); + } + + Main.SAV.BoxData = data; + } + private void processFolder(string[] files, List Filters, List Instructions, string destPath) + { + len = err = ctr = 0; + for (int i = 0; i < files.Length; i++) + { + string file = files[i]; + if (!PKX.getIsPKM(new FileInfo(file).Length)) + { + b.ReportProgress(i); + continue; + } + + byte[] data = File.ReadAllBytes(file); + var pkm = PKMConverter.getPKMfromBytes(data); + ModifyResult r = ProcessPKM(pkm, Filters, Instructions); + if (r != ModifyResult.Invalid) + len++; + if (r == ModifyResult.Error) + err++; + if (r == ModifyResult.Modified) + { + if (pkm.Species > 0) + { + ctr++; + File.WriteAllBytes(Path.Combine(destPath, Path.GetFileName(file)), pkm.DecryptedBoxData); + } + } + + b.ReportProgress(i); + } + } + + private void tabMain_DragEnter(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; + } + private void tabMain_DragDrop(object sender, DragEventArgs e) + { + string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); + if (!Directory.Exists(files[0])) return; + + TB_Folder.Text = files[0]; + TB_Folder.Visible = true; + RB_SAV.Checked = false; + RB_Path.Checked = true; + } + + // Utility Methods + public class StringInstruction + { + public string PropertyName; + public string PropertyValue; + public bool Evaluator; + } + private enum ModifyResult + { + Invalid, + Error, + Filtered, + Modified, + } + private static ModifyResult ProcessPKM(PKM PKM, IEnumerable Filters, IEnumerable Instructions) + { + if (!PKM.ChecksumValid || PKM.Species == 0) + return ModifyResult.Invalid; + + Type pkm = PKM.GetType(); + + foreach (var cmd in Filters) + { + try + { + if (!pkm.HasProperty(cmd.PropertyName)) + return ModifyResult.Filtered; + if (ReflectUtil.GetValueEquals(PKM, cmd.PropertyName, cmd.PropertyValue) != cmd.Evaluator) + return ModifyResult.Filtered; + } + catch + { + Console.WriteLine($"Unable to compare {cmd.PropertyName} to {cmd.PropertyValue}."); + return ModifyResult.Filtered; + } + } + + ModifyResult result = ModifyResult.Error; + foreach (var cmd in Instructions) + { + try + { + if (cmd.PropertyValue == CONST_RAND && (cmd.PropertyName == "PID" || cmd.PropertyName == "EncryptionConstant")) + ReflectUtil.SetValue(PKM, cmd.PropertyName, Util.rnd32().ToString()); + else if (cmd.PropertyValue == CONST_SHINY && cmd.PropertyName == "PID") + PKM.setShinyPID(); + else if (cmd.PropertyValue == "0" && cmd.PropertyName == "Species") + PKM.Data = new byte[PKM.Data.Length]; + else + ReflectUtil.SetValue(PKM, cmd.PropertyName, cmd.PropertyValue); + + result = ModifyResult.Modified; + } + catch { Console.WriteLine($"Unable to set {cmd.PropertyName} to {cmd.PropertyValue}."); } + } + return result; + } + + private void B_Add_Click(object sender, EventArgs e) + { + if (CB_Property.SelectedIndex < 0) + { Util.Alert("Invalid property selected."); return; } + + char[] prefix = {'.', '=', '!'}; + string s = prefix[CB_Require.SelectedIndex] + CB_Property.Items[CB_Property.SelectedIndex].ToString() + "="; + if (RTB_Instructions.Lines.Length != 0 && RTB_Instructions.Lines.Last().Length > 0) + s = Environment.NewLine + s; + + RTB_Instructions.AppendText(s); + } + + private void CB_Format_SelectedIndexChanged(object sender, EventArgs e) + { + if (currentFormat == CB_Format.SelectedIndex) + return; + + CB_Property.Items.Clear(); + switch (CB_Format.SelectedIndex) + { + case 0: CB_Property.Items.AddRange(all.ToArray()); break; // All + case 1: CB_Property.Items.AddRange(pk6.ToArray()); break; + case 2: CB_Property.Items.AddRange(pk5.ToArray()); break; + case 3: CB_Property.Items.AddRange(pk4.ToArray()); break; + case 4: CB_Property.Items.AddRange(pk3.ToArray()); break; + case 5: CB_Property.Items.AddRange(any.ToArray()); break; // Any + } + CB_Property.SelectedIndex = 0; + currentFormat = CB_Format.SelectedIndex; + } + } +} diff --git a/PKX/f2-Text.resx b/Subforms/PKM Editors/BatchEditor.resx similarity index 100% rename from PKX/f2-Text.resx rename to Subforms/PKM Editors/BatchEditor.resx diff --git a/PKX/f3-MemoryAmie.Designer.cs b/Subforms/PKM Editors/MemoryAmie.Designer.cs similarity index 100% rename from PKX/f3-MemoryAmie.Designer.cs rename to Subforms/PKM Editors/MemoryAmie.Designer.cs diff --git a/PKX/f3-MemoryAmie.cs b/Subforms/PKM Editors/MemoryAmie.cs similarity index 98% rename from PKX/f3-MemoryAmie.cs rename to Subforms/PKM Editors/MemoryAmie.cs index f77c648a9..49534a774 100644 --- a/PKX/f3-MemoryAmie.cs +++ b/Subforms/PKM Editors/MemoryAmie.cs @@ -303,7 +303,7 @@ private string getMemoryString(ComboBox m, ComboBox arg, ComboBox q, ComboBox f, { string result; string nn = pk6.Nickname; - string a = (Util.cbItem)arg.SelectedItem == null ? arg.Text ?? "ERROR" : ((Util.cbItem)arg.SelectedItem).Text; + string a = (ComboItem)arg.SelectedItem == null ? arg.Text ?? "ERROR" : ((ComboItem)arg.SelectedItem).Text; int mem = Util.getIndex(m); bool enabled = false; @@ -425,9 +425,9 @@ private void changeCountryIndex(object sender, EventArgs e) } private void changeCountryText(object sender, EventArgs e) { - if ((sender as ComboBox).Text == "") + if (((ComboBox) sender).Text == "") { - (sender as ComboBox).SelectedValue = 0; + ((ComboBox) sender).SelectedValue = 0; changeCountryIndex(sender, e); } } @@ -437,7 +437,7 @@ private void update255_MTB(object sender, EventArgs e) MaskedTextBox mtb = sender as MaskedTextBox; try { - int val = Util.ToInt32(mtb.Text); + int val = Util.ToInt32(mtb?.Text); if (val > 255) mtb.Text = "255"; } catch { mtb.Text = "0"; } diff --git a/PKX/f3-MemoryAmie.resx b/Subforms/PKM Editors/MemoryAmie.resx similarity index 100% rename from PKX/f3-MemoryAmie.resx rename to Subforms/PKM Editors/MemoryAmie.resx diff --git a/Subforms/PKM Editors/RibbonEditor.Designer.cs b/Subforms/PKM Editors/RibbonEditor.Designer.cs new file mode 100644 index 000000000..d95fcad81 --- /dev/null +++ b/Subforms/PKM Editors/RibbonEditor.Designer.cs @@ -0,0 +1,188 @@ +namespace PKHeX +{ + partial class RibbonEditor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RibbonEditor)); + this.B_Save = new System.Windows.Forms.Button(); + this.B_Cancel = new System.Windows.Forms.Button(); + this.B_None = new System.Windows.Forms.Button(); + this.B_All = new System.Windows.Forms.Button(); + this.PAN_Container = new System.Windows.Forms.Panel(); + this.SPLIT_Ribbons = new System.Windows.Forms.SplitContainer(); + this.FLP_Ribbons = new System.Windows.Forms.FlowLayoutPanel(); + this.TLP_Ribbons = new System.Windows.Forms.TableLayoutPanel(); + this.PAN_Container.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.SPLIT_Ribbons)).BeginInit(); + this.SPLIT_Ribbons.Panel1.SuspendLayout(); + this.SPLIT_Ribbons.Panel2.SuspendLayout(); + this.SPLIT_Ribbons.SuspendLayout(); + this.SuspendLayout(); + // + // B_Save + // + this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Save.Location = new System.Drawing.Point(418, 249); + this.B_Save.Name = "B_Save"; + this.B_Save.Size = new System.Drawing.Size(90, 23); + this.B_Save.TabIndex = 1; + this.B_Save.Text = "Save"; + this.B_Save.UseVisualStyleBackColor = true; + this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + // + // B_Cancel + // + this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Cancel.Location = new System.Drawing.Point(322, 249); + this.B_Cancel.Name = "B_Cancel"; + this.B_Cancel.Size = new System.Drawing.Size(90, 23); + this.B_Cancel.TabIndex = 2; + this.B_Cancel.Text = "Cancel"; + this.B_Cancel.UseVisualStyleBackColor = true; + this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + // + // B_None + // + this.B_None.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.B_None.Location = new System.Drawing.Point(108, 249); + this.B_None.Name = "B_None"; + this.B_None.Size = new System.Drawing.Size(90, 23); + this.B_None.TabIndex = 5; + this.B_None.Text = "Remove All"; + this.B_None.UseVisualStyleBackColor = true; + this.B_None.Click += new System.EventHandler(this.B_None_Click); + // + // B_All + // + this.B_All.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.B_All.Location = new System.Drawing.Point(12, 249); + this.B_All.Name = "B_All"; + this.B_All.Size = new System.Drawing.Size(90, 23); + this.B_All.TabIndex = 4; + this.B_All.Text = "Give All"; + this.B_All.UseVisualStyleBackColor = true; + this.B_All.Click += new System.EventHandler(this.B_All_Click); + // + // PAN_Container + // + this.PAN_Container.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.PAN_Container.BackColor = System.Drawing.SystemColors.Window; + this.PAN_Container.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.PAN_Container.Controls.Add(this.SPLIT_Ribbons); + this.PAN_Container.Location = new System.Drawing.Point(12, 12); + this.PAN_Container.Name = "PAN_Container"; + this.PAN_Container.Size = new System.Drawing.Size(496, 231); + this.PAN_Container.TabIndex = 6; + // + // SPLIT_Ribbons + // + this.SPLIT_Ribbons.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.SPLIT_Ribbons.Dock = System.Windows.Forms.DockStyle.Fill; + this.SPLIT_Ribbons.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.SPLIT_Ribbons.IsSplitterFixed = true; + this.SPLIT_Ribbons.Location = new System.Drawing.Point(0, 0); + this.SPLIT_Ribbons.Name = "SPLIT_Ribbons"; + // + // SPLIT_Ribbons.Panel1 + // + this.SPLIT_Ribbons.Panel1.Controls.Add(this.FLP_Ribbons); + this.SPLIT_Ribbons.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.SPLIT_Ribbons.Panel1MinSize = 1; + // + // SPLIT_Ribbons.Panel2 + // + this.SPLIT_Ribbons.Panel2.Controls.Add(this.TLP_Ribbons); + this.SPLIT_Ribbons.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.SPLIT_Ribbons.Panel2MinSize = 1; + this.SPLIT_Ribbons.Size = new System.Drawing.Size(494, 229); + this.SPLIT_Ribbons.SplitterDistance = 270; + this.SPLIT_Ribbons.SplitterWidth = 1; + this.SPLIT_Ribbons.TabIndex = 7; + // + // FLP_Ribbons + // + this.FLP_Ribbons.AutoScroll = true; + this.FLP_Ribbons.Dock = System.Windows.Forms.DockStyle.Fill; + this.FLP_Ribbons.Location = new System.Drawing.Point(0, 0); + this.FLP_Ribbons.Name = "FLP_Ribbons"; + this.FLP_Ribbons.Size = new System.Drawing.Size(268, 227); + this.FLP_Ribbons.TabIndex = 5; + // + // TLP_Ribbons + // + this.TLP_Ribbons.AutoScroll = true; + this.TLP_Ribbons.ColumnCount = 2; + this.TLP_Ribbons.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.TLP_Ribbons.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.TLP_Ribbons.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.TLP_Ribbons.Dock = System.Windows.Forms.DockStyle.Fill; + this.TLP_Ribbons.Location = new System.Drawing.Point(0, 0); + this.TLP_Ribbons.Name = "TLP_Ribbons"; + this.TLP_Ribbons.RowCount = 1; + this.TLP_Ribbons.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.TLP_Ribbons.Size = new System.Drawing.Size(221, 227); + this.TLP_Ribbons.TabIndex = 3; + // + // RibbonEditor + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(524, 281); + this.Controls.Add(this.PAN_Container); + this.Controls.Add(this.B_None); + this.Controls.Add(this.B_All); + this.Controls.Add(this.B_Cancel); + this.Controls.Add(this.B_Save); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimumSize = new System.Drawing.Size(540, 320); + this.Name = "RibbonEditor"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Ribbon Editor"; + this.PAN_Container.ResumeLayout(false); + this.SPLIT_Ribbons.Panel1.ResumeLayout(false); + this.SPLIT_Ribbons.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.SPLIT_Ribbons)).EndInit(); + this.SPLIT_Ribbons.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.Button B_None; + private System.Windows.Forms.Button B_All; + private System.Windows.Forms.Panel PAN_Container; + private System.Windows.Forms.TableLayoutPanel TLP_Ribbons; + private System.Windows.Forms.FlowLayoutPanel FLP_Ribbons; + private System.Windows.Forms.SplitContainer SPLIT_Ribbons; + } +} \ No newline at end of file diff --git a/Subforms/PKM Editors/RibbonEditor.cs b/Subforms/PKM Editors/RibbonEditor.cs new file mode 100644 index 000000000..fc73bd0a0 --- /dev/null +++ b/Subforms/PKM Editors/RibbonEditor.cs @@ -0,0 +1,196 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Windows.Forms; + +namespace PKHeX +{ + public partial class RibbonEditor : Form + { + public RibbonEditor() + { + InitializeComponent(); + int vertScrollWidth = SystemInformation.VerticalScrollBarWidth; + TLP_Ribbons.Padding = FLP_Ribbons.Padding = new Padding(0, 0, vertScrollWidth, 0); + + // Updating a Control display with autosized elements on every row addition is cpu intensive. Disable layout updates while populating. + TLP_Ribbons.SuspendLayout(); + FLP_Ribbons.Scroll += Util.PanelScroll; + TLP_Ribbons.Scroll += Util.PanelScroll; + populateRibbons(); + Util.TranslateInterface(this, Main.curlanguage); + TLP_Ribbons.ResumeLayout(); + } + + private readonly List riblist = new List(); + private readonly PKM pkm = Main.pkm.Clone(); + private const string PrefixNUD = "NUD_"; + private const string PrefixLabel = "L_"; + private const string PrefixCHK = "CHK_"; + private const string PrefixPB = "PB_"; + + private void B_Cancel_Click(object sender, EventArgs e) + { + Close(); + } + private void B_Save_Click(object sender, EventArgs e) + { + save(); + Close(); + } + + private void populateRibbons() + { + // Get a list of all Ribbon Attributes in the PKM + var RibbonNames = ReflectUtil.getPropertiesStartWithPrefix(pkm.GetType(), "Ribbon"); + foreach (var RibbonName in RibbonNames) + { + object RibbonValue = ReflectUtil.GetValue(pkm, RibbonName); + if (RibbonValue is int) + riblist.Add(new RibbonInfo(RibbonName, (int)RibbonValue)); + if (RibbonValue is bool) + riblist.Add(new RibbonInfo(RibbonName, (bool)RibbonValue)); + } + TLP_Ribbons.ColumnCount = 2; + TLP_Ribbons.RowCount = 0; + + // Add Ribbons + foreach (var rib in riblist) + { + addRibbonSprite(rib); + addRibbonChoice(rib); + } + + // Force auto-size + foreach (RowStyle style in TLP_Ribbons.RowStyles) + style.SizeType = SizeType.AutoSize; + foreach (ColumnStyle style in TLP_Ribbons.ColumnStyles) + style.SizeType = SizeType.AutoSize; + } + private void addRibbonSprite(RibbonInfo rib) + { + PictureBox pb = new PictureBox { AutoSize = false, Size = new Size(40,40), BackgroundImageLayout = ImageLayout.Center, Visible = false, Name = PrefixPB + rib.Name }; + var img = Properties.Resources.ResourceManager.GetObject(rib.Name.Replace("CountG3", "G3").ToLower()); + if (img != null) + pb.BackgroundImage = (Bitmap)img; + if (img == null) + return; + + FLP_Ribbons.Controls.Add(pb); + } + private void addRibbonChoice(RibbonInfo rib) + { + // Get row we add to + int row = TLP_Ribbons.RowCount; + TLP_Ribbons.RowCount++; + + var label = new Label + { + Anchor = AnchorStyles.Left, + Name = PrefixLabel + rib.Name, + Text = rib.Name, + Padding = Padding.Empty, + Margin = Padding.Empty, + AutoSize = true, + }; + TLP_Ribbons.Controls.Add(label, 1, row); + + if (rib.RibbonCount >= 0) // numeric count ribbon + { + var nud = new NumericUpDown + { + Anchor = AnchorStyles.Right, + Name = PrefixNUD + rib.Name, + Minimum = 0, + Width = 35, + Increment = 1, + Padding = Padding.Empty, + Margin = Padding.Empty, + }; + if (rib.Name.Contains("MemoryContest")) + nud.Maximum = 40; + else if (rib.Name.Contains("MemoryBattle")) + nud.Maximum = 8; + else nud.Maximum = 4; // g3 contest ribbons + + nud.ValueChanged += (sender, e) => + { + rib.RibbonCount = (int)nud.Value; + FLP_Ribbons.Controls[PrefixPB + rib.Name].Visible = rib.RibbonCount > 0; + if (nud.Maximum == 4) + { + string n = rib.Name.Replace("Count", ""); + switch ((int)nud.Value) + { + case 2: n += "Super"; break; + case 3: n += "Hyper"; break; + case 4: n += "Master"; break; + } + FLP_Ribbons.Controls[PrefixPB + rib.Name].BackgroundImage = (Bitmap)Properties.Resources.ResourceManager.GetObject(n.ToLower()); + } + else if (nud.Maximum == nud.Value) + FLP_Ribbons.Controls[PrefixPB + rib.Name].BackgroundImage = (Bitmap)Properties.Resources.ResourceManager.GetObject(rib.Name.ToLower() +"2"); + else + FLP_Ribbons.Controls[PrefixPB + rib.Name].BackgroundImage = (Bitmap)Properties.Resources.ResourceManager.GetObject(rib.Name.ToLower()); + }; + nud.Value = rib.RibbonCount > nud.Maximum ? nud.Maximum : rib.RibbonCount; + TLP_Ribbons.Controls.Add(nud, 0, row); + } + else // boolean ribbon + { + var chk = new CheckBox + { + Anchor = AnchorStyles.Right, + Name = PrefixCHK + rib.Name, + AutoSize = true, + Padding = Padding.Empty, + Margin = Padding.Empty, + }; + chk.CheckedChanged += (sender, e) => { rib.HasRibbon = chk.Checked; FLP_Ribbons.Controls[PrefixPB + rib.Name].Visible = rib.HasRibbon; }; + chk.Checked = rib.HasRibbon; + TLP_Ribbons.Controls.Add(chk, 0, row); + + label.Click += (sender, e) => { chk.Checked ^= true; }; + } + } + private void save() + { + foreach (var rib in riblist) + ReflectUtil.SetValue(pkm, rib.Name, rib.RibbonCount < 0 ? rib.HasRibbon : (object) rib.RibbonCount); + Main.pkm = pkm; + } + + private class RibbonInfo + { + public readonly string Name; + public bool HasRibbon; + public int RibbonCount = -1; + public RibbonInfo(string name, bool hasRibbon) + { + Name = name; + HasRibbon = hasRibbon; + } + public RibbonInfo(string name, int count) + { + Name = name; + RibbonCount = count; + } + } + + private void B_All_Click(object sender, EventArgs e) + { + foreach (var c in TLP_Ribbons.Controls.OfType()) + c.Checked = true; + foreach (var n in TLP_Ribbons.Controls.OfType()) + n.Value = n.Maximum; + } + private void B_None_Click(object sender, EventArgs e) + { + foreach (var c in TLP_Ribbons.Controls.OfType()) + c.Checked = false; + foreach (var n in TLP_Ribbons.Controls.OfType()) + n.Value = 0; + } + } +} diff --git a/SAV/SAV_BerryFieldXY.resx b/Subforms/PKM Editors/RibbonEditor.resx similarity index 100% rename from SAV/SAV_BerryFieldXY.resx rename to Subforms/PKM Editors/RibbonEditor.resx diff --git a/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs b/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs new file mode 100644 index 000000000..52ccdfadc --- /dev/null +++ b/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs @@ -0,0 +1,271 @@ +namespace PKHeX +{ + partial class SuperTrainingEditor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SuperTrainingEditor)); + this.B_Save = new System.Windows.Forms.Button(); + this.B_Cancel = new System.Windows.Forms.Button(); + this.B_None = new System.Windows.Forms.Button(); + this.B_All = new System.Windows.Forms.Button(); + this.PAN_Training = new System.Windows.Forms.Panel(); + this.SPLIT_Training = new System.Windows.Forms.SplitContainer(); + this.TLP_SuperTrain = new System.Windows.Forms.TableLayoutPanel(); + this.CHK_Secret = new System.Windows.Forms.CheckBox(); + this.CB_Bag = new System.Windows.Forms.ComboBox(); + this.L_Bag = new System.Windows.Forms.Label(); + this.NUD_BagHits = new System.Windows.Forms.NumericUpDown(); + this.L_Hits = new System.Windows.Forms.Label(); + this.TLP_DistSuperTrain = new System.Windows.Forms.TableLayoutPanel(); + this.PAN_Training.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.SPLIT_Training)).BeginInit(); + this.SPLIT_Training.Panel1.SuspendLayout(); + this.SPLIT_Training.Panel2.SuspendLayout(); + this.SPLIT_Training.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_BagHits)).BeginInit(); + this.SuspendLayout(); + // + // B_Save + // + this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Save.Location = new System.Drawing.Point(318, 249); + this.B_Save.Name = "B_Save"; + this.B_Save.Size = new System.Drawing.Size(90, 23); + this.B_Save.TabIndex = 1; + this.B_Save.Text = "Save"; + this.B_Save.UseVisualStyleBackColor = true; + this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + // + // B_Cancel + // + this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Cancel.Location = new System.Drawing.Point(222, 249); + this.B_Cancel.Name = "B_Cancel"; + this.B_Cancel.Size = new System.Drawing.Size(90, 23); + this.B_Cancel.TabIndex = 2; + this.B_Cancel.Text = "Cancel"; + this.B_Cancel.UseVisualStyleBackColor = true; + this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + // + // B_None + // + this.B_None.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.B_None.Location = new System.Drawing.Point(108, 249); + this.B_None.Name = "B_None"; + this.B_None.Size = new System.Drawing.Size(90, 23); + this.B_None.TabIndex = 5; + this.B_None.Text = "Remove All"; + this.B_None.UseVisualStyleBackColor = true; + this.B_None.Click += new System.EventHandler(this.B_None_Click); + // + // B_All + // + this.B_All.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.B_All.Location = new System.Drawing.Point(12, 249); + this.B_All.Name = "B_All"; + this.B_All.Size = new System.Drawing.Size(90, 23); + this.B_All.TabIndex = 4; + this.B_All.Text = "Give All"; + this.B_All.UseVisualStyleBackColor = true; + this.B_All.Click += new System.EventHandler(this.B_All_Click); + // + // PAN_Training + // + this.PAN_Training.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.PAN_Training.Controls.Add(this.SPLIT_Training); + this.PAN_Training.Location = new System.Drawing.Point(12, 12); + this.PAN_Training.Name = "PAN_Training"; + this.PAN_Training.Size = new System.Drawing.Size(396, 231); + this.PAN_Training.TabIndex = 6; + // + // SPLIT_Training + // + this.SPLIT_Training.BackColor = System.Drawing.SystemColors.Window; + this.SPLIT_Training.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.SPLIT_Training.Dock = System.Windows.Forms.DockStyle.Fill; + this.SPLIT_Training.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.SPLIT_Training.IsSplitterFixed = true; + this.SPLIT_Training.Location = new System.Drawing.Point(0, 0); + this.SPLIT_Training.Name = "SPLIT_Training"; + // + // SPLIT_Training.Panel1 + // + this.SPLIT_Training.Panel1.Controls.Add(this.TLP_SuperTrain); + this.SPLIT_Training.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.SPLIT_Training.Panel1MinSize = 1; + // + // SPLIT_Training.Panel2 + // + this.SPLIT_Training.Panel2.Controls.Add(this.CHK_Secret); + this.SPLIT_Training.Panel2.Controls.Add(this.CB_Bag); + this.SPLIT_Training.Panel2.Controls.Add(this.L_Bag); + this.SPLIT_Training.Panel2.Controls.Add(this.NUD_BagHits); + this.SPLIT_Training.Panel2.Controls.Add(this.L_Hits); + this.SPLIT_Training.Panel2.Controls.Add(this.TLP_DistSuperTrain); + this.SPLIT_Training.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.SPLIT_Training.Panel2MinSize = 1; + this.SPLIT_Training.Size = new System.Drawing.Size(396, 231); + this.SPLIT_Training.SplitterDistance = 175; + this.SPLIT_Training.TabIndex = 4; + // + // TLP_SuperTrain + // + this.TLP_SuperTrain.AutoScroll = true; + this.TLP_SuperTrain.ColumnCount = 2; + this.TLP_SuperTrain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.TLP_SuperTrain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.TLP_SuperTrain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.TLP_SuperTrain.Dock = System.Windows.Forms.DockStyle.Fill; + this.TLP_SuperTrain.Location = new System.Drawing.Point(0, 0); + this.TLP_SuperTrain.Name = "TLP_SuperTrain"; + this.TLP_SuperTrain.RowCount = 1; + this.TLP_SuperTrain.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.TLP_SuperTrain.Size = new System.Drawing.Size(173, 229); + this.TLP_SuperTrain.TabIndex = 4; + // + // CHK_Secret + // + this.CHK_Secret.AutoSize = true; + this.CHK_Secret.Location = new System.Drawing.Point(2, 2); + this.CHK_Secret.Name = "CHK_Secret"; + this.CHK_Secret.Size = new System.Drawing.Size(171, 17); + this.CHK_Secret.TabIndex = 36; + this.CHK_Secret.Text = "Secret Super Training Enabled"; + this.CHK_Secret.UseVisualStyleBackColor = true; + this.CHK_Secret.CheckedChanged += new System.EventHandler(this.CHK_Secret_CheckedChanged); + // + // CB_Bag + // + this.CB_Bag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.CB_Bag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_Bag.FormattingEnabled = true; + this.CB_Bag.Location = new System.Drawing.Point(46, 50); + this.CB_Bag.Name = "CB_Bag"; + this.CB_Bag.Size = new System.Drawing.Size(138, 21); + this.CB_Bag.TabIndex = 35; + // + // L_Bag + // + this.L_Bag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.L_Bag.Location = new System.Drawing.Point(31, 34); + this.L_Bag.Name = "L_Bag"; + this.L_Bag.Size = new System.Drawing.Size(100, 13); + this.L_Bag.TabIndex = 34; + this.L_Bag.Text = "Last Used Bag:"; + this.L_Bag.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // NUD_BagHits + // + this.NUD_BagHits.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NUD_BagHits.Location = new System.Drawing.Point(134, 75); + this.NUD_BagHits.Maximum = new decimal(new int[] { + 255, + 0, + 0, + 0}); + this.NUD_BagHits.Name = "NUD_BagHits"; + this.NUD_BagHits.Size = new System.Drawing.Size(50, 20); + this.NUD_BagHits.TabIndex = 33; + this.NUD_BagHits.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.NUD_BagHits.Value = new decimal(new int[] { + 255, + 0, + 0, + 0}); + // + // L_Hits + // + this.L_Hits.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.L_Hits.Location = new System.Drawing.Point(31, 77); + this.L_Hits.Name = "L_Hits"; + this.L_Hits.Size = new System.Drawing.Size(100, 13); + this.L_Hits.TabIndex = 32; + this.L_Hits.Text = "Hits Remaining:"; + this.L_Hits.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // TLP_DistSuperTrain + // + this.TLP_DistSuperTrain.AutoScroll = true; + this.TLP_DistSuperTrain.AutoSize = true; + this.TLP_DistSuperTrain.ColumnCount = 1; + this.TLP_DistSuperTrain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.TLP_DistSuperTrain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.TLP_DistSuperTrain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.TLP_DistSuperTrain.Dock = System.Windows.Forms.DockStyle.Bottom; + this.TLP_DistSuperTrain.Location = new System.Drawing.Point(0, 229); + this.TLP_DistSuperTrain.Name = "TLP_DistSuperTrain"; + this.TLP_DistSuperTrain.RowCount = 1; + this.TLP_DistSuperTrain.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.TLP_DistSuperTrain.Size = new System.Drawing.Size(215, 0); + this.TLP_DistSuperTrain.TabIndex = 3; + // + // SuperTrainingEditor + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(424, 281); + this.Controls.Add(this.PAN_Training); + this.Controls.Add(this.B_None); + this.Controls.Add(this.B_All); + this.Controls.Add(this.B_Cancel); + this.Controls.Add(this.B_Save); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimumSize = new System.Drawing.Size(440, 320); + this.Name = "SuperTrainingEditor"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Ribbon Editor"; + this.PAN_Training.ResumeLayout(false); + this.SPLIT_Training.Panel1.ResumeLayout(false); + this.SPLIT_Training.Panel2.ResumeLayout(false); + this.SPLIT_Training.Panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.SPLIT_Training)).EndInit(); + this.SPLIT_Training.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.NUD_BagHits)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.Button B_None; + private System.Windows.Forms.Button B_All; + private System.Windows.Forms.Panel PAN_Training; + private System.Windows.Forms.TableLayoutPanel TLP_DistSuperTrain; + private System.Windows.Forms.Label L_Hits; + private System.Windows.Forms.NumericUpDown NUD_BagHits; + private System.Windows.Forms.Label L_Bag; + private System.Windows.Forms.ComboBox CB_Bag; + private System.Windows.Forms.CheckBox CHK_Secret; + private System.Windows.Forms.TableLayoutPanel TLP_SuperTrain; + private System.Windows.Forms.SplitContainer SPLIT_Training; + } +} \ No newline at end of file diff --git a/Subforms/PKM Editors/SuperTrainingEditor.cs b/Subforms/PKM Editors/SuperTrainingEditor.cs new file mode 100644 index 000000000..5f148bb31 --- /dev/null +++ b/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace PKHeX +{ + public partial class SuperTrainingEditor : Form + { + public SuperTrainingEditor() + { + InitializeComponent(); + int vertScrollWidth = SystemInformation.VerticalScrollBarWidth; + TLP_SuperTrain.Padding = TLP_DistSuperTrain.Padding = new Padding(0, 0, vertScrollWidth, 0); + + // Updating a Control display with autosized elements on every row addition is cpu intensive. Disable layout updates while populating. + TLP_SuperTrain.SuspendLayout(); + TLP_DistSuperTrain.SuspendLayout(); + TLP_SuperTrain.Scroll += Util.PanelScroll; + TLP_DistSuperTrain.Scroll += Util.PanelScroll; + populateRegimens("SuperTrain", TLP_SuperTrain, reglist); + populateRegimens("DistSuperTrain", TLP_DistSuperTrain, distlist); + Util.TranslateInterface(this, Main.curlanguage); + TLP_SuperTrain.ResumeLayout(); + TLP_DistSuperTrain.ResumeLayout(); + + CB_Bag.Items.Clear(); + CB_Bag.Items.Add("---"); + for (int i = 1; i < Main.trainingbags.Length - 1; i++) + CB_Bag.Items.Add(Main.trainingbags[i]); + + if (pkm is PK6) + { + PK6 pk6 = (PK6) pkm; + CHK_Secret.Checked = pk6.SecretSuperTraining; + if (!CHK_Secret.Checked) // force update to disable checkboxes + CHK_Secret_CheckedChanged(null, null); + CB_Bag.SelectedIndex = pk6.TrainingBag; + NUD_BagHits.Value = pk6.TrainingBagHits; + } + else + { + CB_Bag.Visible = NUD_BagHits.Visible = false; + } + } + + private readonly List reglist = new List(); + private readonly List distlist = new List(); + private readonly PKM pkm = Main.pkm.Clone(); + private const string PrefixLabel = "L_"; + private const string PrefixCHK = "CHK_"; + + private void B_Cancel_Click(object sender, EventArgs e) + { + Close(); + } + private void B_Save_Click(object sender, EventArgs e) + { + save(); + Close(); + } + + private void populateRegimens(string Type, TableLayoutPanel TLP, List list) + { + // Get a list of all Regimen Attregutes in the PKM + var RegimenNames = ReflectUtil.getPropertiesStartWithPrefix(pkm.GetType(), Type); + list.AddRange(from RegimenName in RegimenNames + let RegimenValue = ReflectUtil.GetValue(pkm, RegimenName) + where RegimenValue is bool + select new RegimenInfo(RegimenName, (bool) RegimenValue)); + TLP.ColumnCount = 1; + TLP.RowCount = 0; + + // Add Regimens + foreach (var reg in list) + addRegimenChoice(reg, TLP); + + // Force auto-size + foreach (RowStyle style in TLP.RowStyles) + style.SizeType = SizeType.AutoSize; + foreach (ColumnStyle style in TLP.ColumnStyles) + style.SizeType = SizeType.AutoSize; + } + private void addRegimenChoice(RegimenInfo reg, TableLayoutPanel TLP) + { + // Get row we add to + int row = TLP.RowCount; + TLP.RowCount++; + + var chk = new CheckBox + { + Anchor = AnchorStyles.Left, + Name = PrefixCHK + reg.Name, + Margin = new Padding(2), + Text = reg.Name, + AutoSize = true, + Padding = Padding.Empty, + }; + chk.CheckedChanged += (sender, e) => { reg.CompletedRegimen = chk.Checked; }; + chk.Checked = reg.CompletedRegimen; + TLP.Controls.Add(chk, 0, row); + } + + private void save() + { + foreach (var reg in reglist) + ReflectUtil.SetValue(pkm, reg.Name, reg.CompletedRegimen); + foreach (var reg in distlist) + ReflectUtil.SetValue(pkm, reg.Name, reg.CompletedRegimen); + + if (pkm is PK6) + { + PK6 pk6 = (PK6) pkm; + pk6.SecretSuperTraining = CHK_Secret.Checked; + pk6.TrainingBag = CB_Bag.SelectedIndex; + pk6.TrainingBagHits = (int)NUD_BagHits.Value; + } + + Main.pkm = pkm; + } + + private class RegimenInfo + { + public readonly string Name; + public bool CompletedRegimen; + public RegimenInfo(string name, bool completedRegimen) + { + Name = name; + CompletedRegimen = completedRegimen; + } + } + + private void B_All_Click(object sender, EventArgs e) + { + CHK_Secret.Checked = true; + foreach (var c in TLP_SuperTrain.Controls.OfType()) + c.Checked = true; + foreach (var c in TLP_DistSuperTrain.Controls.OfType()) + c.Checked = true; + } + private void B_None_Click(object sender, EventArgs e) + { + CHK_Secret.Checked = false; + foreach (var c in TLP_SuperTrain.Controls.OfType()) + c.Checked = false; + foreach (var c in TLP_DistSuperTrain.Controls.OfType()) + c.Checked = false; + } + private void CHK_Secret_CheckedChanged(object sender, EventArgs e) + { + foreach (var c in TLP_SuperTrain.Controls.OfType().Where(chk => Convert.ToInt16(chk.Name[14]+"") >= 4)) + { + c.Enabled = CHK_Secret.Checked; + if (!CHK_Secret.Checked) + c.Checked = false; + } + } + } +} diff --git a/SAV/SAV_EventFlags.resx b/Subforms/PKM Editors/SuperTrainingEditor.resx similarity index 100% rename from SAV/SAV_EventFlags.resx rename to Subforms/PKM Editors/SuperTrainingEditor.resx diff --git a/PKX/f2-Text.Designer.cs b/Subforms/PKM Editors/Text.Designer.cs similarity index 100% rename from PKX/f2-Text.Designer.cs rename to Subforms/PKM Editors/Text.Designer.cs diff --git a/PKX/f2-Text.cs b/Subforms/PKM Editors/Text.cs similarity index 96% rename from PKX/f2-Text.cs rename to Subforms/PKM Editors/Text.cs index 145bb7ca1..b2b09a7d0 100644 --- a/PKX/f2-Text.cs +++ b/Subforms/PKM Editors/Text.cs @@ -42,7 +42,7 @@ private void onClick(object sender, EventArgs e) { string nickname = TB_Nickname.Text; if (nickname.Length < TB_Nickname.MaxLength) - TB_Nickname.Text += (sender as Label).Text; + TB_Nickname.Text += ((Label) sender).Text; } } } diff --git a/SAV/SAV_HallOfFame.resx b/Subforms/PKM Editors/Text.resx similarity index 100% rename from SAV/SAV_HallOfFame.resx rename to Subforms/PKM Editors/Text.resx diff --git a/SAV/SAV_Database.Designer.cs b/Subforms/SAV_Database.Designer.cs similarity index 96% rename from SAV/SAV_Database.Designer.cs rename to Subforms/SAV_Database.Designer.cs index 240a2e686..8e022359c 100644 --- a/SAV/SAV_Database.Designer.cs +++ b/Subforms/SAV_Database.Designer.cs @@ -99,6 +99,7 @@ private void InitializeComponent() this.Menu_SearchDatabase = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_SearchLegal = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_SearchIllegal = new System.Windows.Forms.ToolStripMenuItem(); + this.Menu_SearchAdvanced = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_OpenDB = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Report = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Export = new System.Windows.Forms.ToolStripMenuItem(); @@ -149,9 +150,12 @@ private void InitializeComponent() this.MT_ESV = new System.Windows.Forms.MaskedTextBox(); this.CHK_Shiny = new System.Windows.Forms.CheckBox(); this.TLP_Filters = new System.Windows.Forms.TableLayoutPanel(); - this.FLP_Level = new System.Windows.Forms.FlowLayoutPanel(); + this.FLP_Format = new System.Windows.Forms.FlowLayoutPanel(); + this.CB_FormatComparator = new System.Windows.Forms.ComboBox(); this.CB_Format = new System.Windows.Forms.ComboBox(); this.L_Format = new System.Windows.Forms.Label(); + this.FLP_Level = new System.Windows.Forms.FlowLayoutPanel(); + this.RTB_Instructions = new System.Windows.Forms.RichTextBox(); ((System.ComponentModel.ISupportInitialize)(this.bpkx30)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bpkx29)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bpkx28)).BeginInit(); @@ -223,6 +227,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.bpkx61)).BeginInit(); this.FLP_Egg.SuspendLayout(); this.TLP_Filters.SuspendLayout(); + this.FLP_Format.SuspendLayout(); this.FLP_Level.SuspendLayout(); this.SuspendLayout(); // @@ -944,7 +949,8 @@ private void InitializeComponent() this.Menu_SearchBoxes, this.Menu_SearchDatabase, this.Menu_SearchLegal, - this.Menu_SearchIllegal}); + this.Menu_SearchIllegal, + this.Menu_SearchAdvanced}); this.Menu_SearchSettings.Image = global::PKHeX.Properties.Resources.settings; this.Menu_SearchSettings.Name = "Menu_SearchSettings"; this.Menu_SearchSettings.Size = new System.Drawing.Size(197, 22); @@ -956,7 +962,7 @@ private void InitializeComponent() this.Menu_SearchBoxes.CheckOnClick = true; this.Menu_SearchBoxes.CheckState = System.Windows.Forms.CheckState.Checked; this.Menu_SearchBoxes.Name = "Menu_SearchBoxes"; - this.Menu_SearchBoxes.Size = new System.Drawing.Size(198, 22); + this.Menu_SearchBoxes.Size = new System.Drawing.Size(207, 22); this.Menu_SearchBoxes.Text = "Search Within Boxes"; // // Menu_SearchDatabase @@ -965,7 +971,7 @@ private void InitializeComponent() this.Menu_SearchDatabase.CheckOnClick = true; this.Menu_SearchDatabase.CheckState = System.Windows.Forms.CheckState.Checked; this.Menu_SearchDatabase.Name = "Menu_SearchDatabase"; - this.Menu_SearchDatabase.Size = new System.Drawing.Size(198, 22); + this.Menu_SearchDatabase.Size = new System.Drawing.Size(207, 22); this.Menu_SearchDatabase.Text = "Search Within Database"; // // Menu_SearchLegal @@ -974,7 +980,7 @@ private void InitializeComponent() this.Menu_SearchLegal.CheckOnClick = true; this.Menu_SearchLegal.CheckState = System.Windows.Forms.CheckState.Checked; this.Menu_SearchLegal.Name = "Menu_SearchLegal"; - this.Menu_SearchLegal.Size = new System.Drawing.Size(198, 22); + this.Menu_SearchLegal.Size = new System.Drawing.Size(207, 22); this.Menu_SearchLegal.Text = "Show Legal"; // // Menu_SearchIllegal @@ -983,9 +989,18 @@ private void InitializeComponent() this.Menu_SearchIllegal.CheckOnClick = true; this.Menu_SearchIllegal.CheckState = System.Windows.Forms.CheckState.Checked; this.Menu_SearchIllegal.Name = "Menu_SearchIllegal"; - this.Menu_SearchIllegal.Size = new System.Drawing.Size(198, 22); + this.Menu_SearchIllegal.Size = new System.Drawing.Size(207, 22); this.Menu_SearchIllegal.Text = "Show Illegal"; // + // Menu_SearchAdvanced + // + this.Menu_SearchAdvanced.CheckOnClick = true; + this.Menu_SearchAdvanced.Name = "Menu_SearchAdvanced"; + this.Menu_SearchAdvanced.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A))); + this.Menu_SearchAdvanced.Size = new System.Drawing.Size(207, 22); + this.Menu_SearchAdvanced.Text = "Advanced Search"; + this.Menu_SearchAdvanced.Click += new System.EventHandler(this.Menu_SearchAdvanced_Click); + // // Menu_OpenDB // this.Menu_OpenDB.Image = global::PKHeX.Properties.Resources.folder; @@ -1023,7 +1038,7 @@ private void InitializeComponent() // // PAN_Box // - this.PAN_Box.BackgroundImage = global::PKHeX.Properties.Resources.box_wp16; + this.PAN_Box.BackgroundImage = global::PKHeX.Properties.Resources.box_wp16xy; this.PAN_Box.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; this.PAN_Box.Controls.Add(this.bpkx66); this.PAN_Box.Controls.Add(this.bpkx65); @@ -1652,8 +1667,7 @@ private void InitializeComponent() // // TLP_Filters // - this.TLP_Filters.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) + this.TLP_Filters.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); this.TLP_Filters.AutoScroll = true; this.TLP_Filters.AutoScrollMargin = new System.Drawing.Size(3, 3); @@ -1661,6 +1675,7 @@ private void InitializeComponent() this.TLP_Filters.ColumnCount = 2; this.TLP_Filters.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); this.TLP_Filters.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.TLP_Filters.Controls.Add(this.FLP_Format, 1, 15); this.TLP_Filters.Controls.Add(this.L_Format, 0, 15); this.TLP_Filters.Controls.Add(this.FLP_Egg, 1, 0); this.TLP_Filters.Controls.Add(this.CHK_Shiny, 0, 0); @@ -1692,7 +1707,6 @@ private void InitializeComponent() this.TLP_Filters.Controls.Add(this.CB_GameOrigin, 1, 13); this.TLP_Filters.Controls.Add(this.L_Generation, 0, 14); this.TLP_Filters.Controls.Add(this.CB_Generation, 1, 14); - this.TLP_Filters.Controls.Add(this.CB_Format, 1, 15); this.TLP_Filters.Location = new System.Drawing.Point(304, 11); this.TLP_Filters.Name = "TLP_Filters"; this.TLP_Filters.RowCount = 17; @@ -1716,17 +1730,33 @@ private void InitializeComponent() this.TLP_Filters.Size = new System.Drawing.Size(228, 354); this.TLP_Filters.TabIndex = 118; // - // FLP_Level + // FLP_Format // - this.FLP_Level.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.FLP_Level.AutoSize = true; - this.FLP_Level.Controls.Add(this.TB_Level); - this.FLP_Level.Controls.Add(this.CB_Level); - this.FLP_Level.Location = new System.Drawing.Point(83, 104); - this.FLP_Level.Margin = new System.Windows.Forms.Padding(0); - this.FLP_Level.Name = "FLP_Level"; - this.FLP_Level.Size = new System.Drawing.Size(88, 21); - this.FLP_Level.TabIndex = 119; + this.FLP_Format.AutoSize = true; + this.FLP_Format.Controls.Add(this.CB_FormatComparator); + this.FLP_Format.Controls.Add(this.CB_Format); + this.FLP_Format.Location = new System.Drawing.Point(83, 314); + this.FLP_Format.Margin = new System.Windows.Forms.Padding(0); + this.FLP_Format.Name = "FLP_Format"; + this.FLP_Format.Size = new System.Drawing.Size(122, 21); + this.FLP_Format.TabIndex = 124; + // + // CB_FormatComparator + // + this.CB_FormatComparator.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.CB_FormatComparator.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_FormatComparator.FormattingEnabled = true; + this.CB_FormatComparator.Items.AddRange(new object[] { + "Any", + ">=", + "==", + "<="}); + this.CB_FormatComparator.Location = new System.Drawing.Point(0, 0); + this.CB_FormatComparator.Margin = new System.Windows.Forms.Padding(0); + this.CB_FormatComparator.Name = "CB_FormatComparator"; + this.CB_FormatComparator.Size = new System.Drawing.Size(54, 21); + this.CB_FormatComparator.TabIndex = 122; + this.CB_FormatComparator.SelectedIndexChanged += new System.EventHandler(this.changeFormatFilter); // // CB_Format // @@ -1735,15 +1765,16 @@ private void InitializeComponent() this.CB_Format.FormattingEnabled = true; this.CB_Format.Items.AddRange(new object[] { "Any", - ">=pk6", - ">=pk5", - ">=pk4", - ">=pk3"}); - this.CB_Format.Location = new System.Drawing.Point(83, 314); + ".pk6", + ".pk5", + ".pk4", + ".pk3"}); + this.CB_Format.Location = new System.Drawing.Point(54, 0); this.CB_Format.Margin = new System.Windows.Forms.Padding(0); this.CB_Format.Name = "CB_Format"; - this.CB_Format.Size = new System.Drawing.Size(122, 21); + this.CB_Format.Size = new System.Drawing.Size(68, 21); this.CB_Format.TabIndex = 121; + this.CB_Format.Visible = false; // // L_Format // @@ -1757,6 +1788,28 @@ private void InitializeComponent() this.L_Format.Text = "Format:"; this.L_Format.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // + // FLP_Level + // + this.FLP_Level.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.FLP_Level.AutoSize = true; + this.FLP_Level.Controls.Add(this.TB_Level); + this.FLP_Level.Controls.Add(this.CB_Level); + this.FLP_Level.Location = new System.Drawing.Point(83, 104); + this.FLP_Level.Margin = new System.Windows.Forms.Padding(0); + this.FLP_Level.Name = "FLP_Level"; + this.FLP_Level.Size = new System.Drawing.Size(88, 21); + this.FLP_Level.TabIndex = 119; + // + // RTB_Instructions + // + this.RTB_Instructions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.RTB_Instructions.Location = new System.Drawing.Point(63, 27); + this.RTB_Instructions.Name = "RTB_Instructions"; + this.RTB_Instructions.Size = new System.Drawing.Size(235, 352); + this.RTB_Instructions.TabIndex = 119; + this.RTB_Instructions.Text = ""; + // // SAV_Database // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -1769,6 +1822,7 @@ private void InitializeComponent() this.Controls.Add(this.B_Reset); this.Controls.Add(this.P_Results); this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.RTB_Instructions); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; @@ -1852,6 +1906,7 @@ private void InitializeComponent() this.FLP_Egg.PerformLayout(); this.TLP_Filters.ResumeLayout(false); this.TLP_Filters.PerformLayout(); + this.FLP_Format.ResumeLayout(false); this.FLP_Level.ResumeLayout(false); this.FLP_Level.PerformLayout(); this.ResumeLayout(false); @@ -1982,7 +2037,11 @@ private void InitializeComponent() public System.Windows.Forms.CheckBox CHK_IsEgg; private System.Windows.Forms.FlowLayoutPanel FLP_Egg; private System.Windows.Forms.FlowLayoutPanel FLP_Level; - private System.Windows.Forms.ComboBox CB_Format; private System.Windows.Forms.Label L_Format; + private System.Windows.Forms.FlowLayoutPanel FLP_Format; + private System.Windows.Forms.ComboBox CB_FormatComparator; + private System.Windows.Forms.ComboBox CB_Format; + private System.Windows.Forms.RichTextBox RTB_Instructions; + private System.Windows.Forms.ToolStripMenuItem Menu_SearchAdvanced; } } \ No newline at end of file diff --git a/SAV/SAV_Database.cs b/Subforms/SAV_Database.cs similarity index 80% rename from SAV/SAV_Database.cs rename to Subforms/SAV_Database.cs index efbd11171..abcc6bef1 100644 --- a/SAV/SAV_Database.cs +++ b/Subforms/SAV_Database.cs @@ -4,7 +4,6 @@ using System.Drawing; using System.IO; using System.Linq; -using System.Text; using System.Windows.Forms; namespace PKHeX @@ -15,7 +14,10 @@ public SAV_Database(Main f1) { m_parent = f1; InitializeComponent(); - CB_Format.SelectedIndex = MAXFORMAT - Main.SAV.Generation + 1; + + // Preset Filters to only show PKM available for loaded save + CB_FormatComparator.SelectedIndex = 3; // <= + PKXBOXES = new[] { bpkx1, bpkx2, bpkx3, bpkx4, bpkx5, bpkx6, @@ -77,41 +79,33 @@ public SAV_Database(Main f1) foreach (PictureBox p in PKXBOXES) p.ContextMenuStrip = mnu; - // Load initial database - Database.Add(new DatabaseList - { - Version = 0, - Title = "Misc", - Description = "Individual pkm files present in the db/sav.", - }); - - // Load databases + // Load Data + RawDB = new List(); foreach (string file in Directory.GetFiles(DatabasePath, "*", SearchOption.AllDirectories)) { FileInfo fi = new FileInfo(file); if (fi.Extension.Contains(".pk") && PKX.getIsPKM(fi.Length)) - Database[0].Slot.Add(PKMConverter.getPKMfromBytes(File.ReadAllBytes(file), file)); - else - loadDatabase(File.ReadAllBytes(file)); + RawDB.Add(PKMConverter.getPKMfromBytes(File.ReadAllBytes(file), file)); } // Fetch from save file foreach (var pkm in Main.SAV.BoxData.Where(pk => pk.Species != 0)) - Database[0].Slot.Add(pkm); + RawDB.Add(pkm); // Prepare Database - prepareDBForSearch(); + RawDB = new List(RawDB.Where(pk => pk.ChecksumValid && pk.Species != 0 && pk.Sanity == 0)); + RawDB = new List(RawDB.Distinct()); + setResults(RawDB); + Menu_SearchSettings.DropDown.Closing += (sender, e) => { if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked) e.Cancel = true; }; - B_Search.PerformClick(); CenterToParent(); } private readonly Main m_parent; private readonly PictureBox[] PKXBOXES; private readonly string DatabasePath = Main.DatabasePath; - private readonly List Database = new List(); private List Results; private List RawDB; private int slotSelected = -1; // = null; @@ -246,21 +240,21 @@ private void populateComboBoxes() CB_GameOrigin.ValueMember = CB_HPType.ValueMember = "Value"; - var Any = new Util.cbItem {Text = "Any", Value = -1}; + var Any = new ComboItem {Text = "Any", Value = -1}; - var DS_Species = new List(Main.SpeciesDataSource); + var DS_Species = new List(Main.SpeciesDataSource); DS_Species.RemoveAt(0); DS_Species.Insert(0, Any); CB_Species.DataSource = DS_Species; - var DS_Item = new List(Main.ItemDataSource); + var DS_Item = new List(Main.ItemDataSource); DS_Item.Insert(0, Any); CB_HeldItem.DataSource = DS_Item; - var DS_Nature = new List(Main.NatureDataSource); + var DS_Nature = new List(Main.NatureDataSource); DS_Nature.Insert(0, Any); CB_Nature.DataSource = DS_Nature; - var DS_Ability = new List(Main.AbilityDataSource); + var DS_Ability = new List(Main.AbilityDataSource); DS_Ability.Insert(0, Any); CB_Ability.DataSource = DS_Ability; - var DS_Version = new List(Main.VersionDataSource); + var DS_Version = new List(Main.VersionDataSource); DS_Version.Insert(0, Any); CB_GameOrigin.DataSource = DS_Version; string[] hptypes = new string[Main.types.Length - 2]; Array.Copy(Main.types, 1, hptypes, 0, hptypes.Length); @@ -268,7 +262,7 @@ private void populateComboBoxes() DS_Type.Insert(0, Any); CB_HPType.DataSource = DS_Type; // Set the Move ComboBoxes too.. - var DS_Move = new List(Main.MoveDataSource); + var DS_Move = new List(Main.MoveDataSource); DS_Move.RemoveAt(0); DS_Move.Insert(0, Any); { foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4 }) @@ -303,6 +297,7 @@ private void resetFilters(object sender, EventArgs e) CB_Generation.SelectedIndex = 0; MT_ESV.Visible = L_ESV.Visible = false; + RTB_Instructions.Clear(); if (sender != null) System.Media.SystemSounds.Asterisk.Play(); @@ -319,84 +314,10 @@ private void generateDBReport(object sender, EventArgs e) } // IO Usage - private class DatabaseList - { - public readonly List Slot = new List(); - public int Version; - private readonly bool Unicode; - private readonly byte[] Unused; - public string Title; - public string Description; - - public DatabaseList() { } - public DatabaseList(byte[] data) - { - if ((data.Length < 0x100 + 0xE8) || (data.Length - 0x100)%0xE8 != 0) - return; - - Version = BitConverter.ToInt32(data, 0); - Unicode = data[0x5] == 1; - Unused = data.Skip(4).Take(0xB).ToArray(); - - if (Unicode) - { - Title = Encoding.Unicode.GetString(data, 0x10, 0x30).Trim(); - Description = Encoding.Unicode.GetString(data, 0x40, 0x60).Trim(); - } - else - { - Title = Encoding.ASCII.GetString(data, 0x10, 0x30).Trim(); - Description = Encoding.ASCII.GetString(data, 0x40, 0x60).Trim(); - } - - int count = (data.Length - 0x100)/0xE8; - for (int i = 0; i < count; i++) - Slot.Add(new PK6(data.Skip(0x100 + i * 0xE8).Take(0xE8).ToArray())); - } - public byte[] Write() - { - using (MemoryStream ms = new MemoryStream()) - using (BinaryWriter bw = new BinaryWriter(ms)) - { - bw.Write(Version); - bw.Write(Unused); - - byte[] title = Unicode ? Encoding.Unicode.GetBytes(Title) : Encoding.ASCII.GetBytes(Title); - Array.Resize(ref title, 0x30); - bw.Write(title); - - byte[] desc = Unicode ? Encoding.Unicode.GetBytes(Description) : Encoding.ASCII.GetBytes(Description); - Array.Resize(ref title, 0x60); - bw.Write(desc); - - foreach (var pk6 in Slot) - bw.Write(pk6.Data.Take(0xE8).ToArray()); - - return ms.ToArray(); - } - } - } - private void loadDatabase(byte[] data) - { - var db = new DatabaseList(data); - if (db.Slot.Count > 0) - Database.Add(db); - } - private void prepareDBForSearch() - { - RawDB = new List(); - - foreach (var db in Database) - RawDB.AddRange(db.Slot); - - RawDB = new List(RawDB.Where(pk => pk.ChecksumValid && pk.Species != 0 && pk.Sanity == 0)); - RawDB = new List(RawDB.Distinct()); - setResults(RawDB); - } private void openDB(object sender, EventArgs e) { if (Directory.Exists(DatabasePath)) - Process.Start("explorer.exe", @DatabasePath); + Process.Start("explorer.exe", DatabasePath); } private void Menu_Export_Click(object sender, EventArgs e) { @@ -415,8 +336,7 @@ private void Menu_Export_Click(object sender, EventArgs e) Directory.CreateDirectory(path); foreach (PKM pkm in Results) - File.WriteAllBytes(Path.Combine(path, Util.CleanFileName(pkm.FileName)), - pkm.Data.Take(0xE8).ToArray()); + File.WriteAllBytes(Path.Combine(path, Util.CleanFileName(pkm.FileName)), pkm.DecryptedBoxData); } // View Updates @@ -426,23 +346,21 @@ private void B_Search_Click(object sender, EventArgs e) IEnumerable res = RawDB; int format = MAXFORMAT + 1 - CB_Format.SelectedIndex; - res = res.Where(pk => pk.Format <= format); + switch (CB_FormatComparator.SelectedIndex) + { + case 0: /* Do nothing */ break; + case 1: res = res.Where(pk => pk.Format >= format); break; + case 2: res = res.Where(pk => pk.Format == format); break; + case 3: res = res.Where(pk => pk.Format <= format); break; + } switch (CB_Generation.SelectedIndex) { - case 0: break; // Do nothing - case 1: // Gen 6 - res = res.Where(pk => pk.Gen6); - break; - case 2: // Gen 5 - res = res.Where(pk => pk.Gen5); - break; - case 3: // Gen 4 - res = res.Where(pk => pk.Gen4); - break; - case 4: // Gen 3 - res = res.Where(pk => pk.Gen3); - break; + case 0: /* Do nothing */ break; + case 1: res = res.Where(pk => pk.Gen6); break; + case 2: res = res.Where(pk => pk.Gen5); break; + case 3: res = res.Where(pk => pk.Gen4); break; + case 4: res = res.Where(pk => pk.Gen3); break; } // Primary Searchables @@ -542,9 +460,39 @@ 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.Gen6 && pk is PK6 && new LegalityAnalysis(pk as PK6).Valid); + res = res.Where(pk => pk.Gen6 && pk is PK6 && new LegalityAnalysis((PK6) pk).Valid); if (!Menu_SearchLegal.Checked && Menu_SearchIllegal.Checked) // Illegal Only - res = res.Where(pk => pk.Gen6 && pk is PK6 && !new LegalityAnalysis(pk as PK6).Valid); + res = res.Where(pk => pk.Gen6 && pk is PK6 && !new LegalityAnalysis((PK6) pk).Valid); + + if (RTB_Instructions.Lines.Any(line => line.Length > 0)) + { + var raw = + RTB_Instructions.Lines + .Where(line => !string.IsNullOrWhiteSpace(line)) + .Where(line => new[] { '!', '=' }.Contains(line[0])); + + var filters = (from line in raw + let eval = line[0] == '=' + let split = line.Substring(1).Split('=') + where split.Length == 2 && !string.IsNullOrWhiteSpace(split[0]) + select new BatchEditor.StringInstruction { PropertyName = split[0], PropertyValue = split[1], Evaluator = eval }).ToArray(); + + if (filters.Any(z => string.IsNullOrWhiteSpace(z.PropertyValue))) + { Util.Error("Empty Filter Value detected."); return; } + + res = res.Where(pkm => // Compare across all filters + { + foreach (var cmd in filters) + { + if (!pkm.GetType().HasProperty(cmd.PropertyName)) + return false; + try { if (ReflectUtil.GetValueEquals(pkm, cmd.PropertyName, cmd.PropertyValue) == cmd.Evaluator) continue; } + catch { Console.WriteLine($"Unable to compare {cmd.PropertyName} to {cmd.PropertyValue}."); } + return false; + } + return true; + }); + } var results = res.ToArray(); if (results.Length == 0) @@ -612,31 +560,11 @@ private void changeGeneration(object sender, EventArgs e) CB_GameOrigin.SelectedIndex = 0; } - // Debug - private void testQuery() + private void Menu_SearchAdvanced_Click(object sender, EventArgs e) { - var query = from db in Database - select db.Slot.Where(p => p.Move1 == 1).ToArray(); - - var result = query.ToArray(); - if (!result[0].Any()) - return; - - var any = result[0][0]; - m_parent.populateFields(any); - } - private void testUnique() - { - var query = from db in Database - select db.Slot.GroupBy(p => p.Checksum + p.EncryptionConstant + p.Species) // Unique criteria - .Select(grp => grp.First()).ToArray(); - - var result = query.ToArray(); - if (!result[0].Any()) - return; - - var any = result[0][0]; - m_parent.populateFields(any); + if (!Menu_SearchAdvanced.Checked) + { Size = MinimumSize; RTB_Instructions.Clear(); } + else Size = MaximumSize; } private void Menu_Exit_Click(object sender, EventArgs e) @@ -652,5 +580,19 @@ protected override void OnMouseWheel(MouseEventArgs e) if (newval >= SCR_Box.Minimum && SCR_Box.Maximum >= newval) FillPKXBoxes(SCR_Box.Value = newval); } + + private void changeFormatFilter(object sender, EventArgs e) + { + if (CB_FormatComparator.SelectedIndex == 0) + { + CB_Format.Visible = false; // !any + CB_Format.SelectedIndex = 0; + } + else + { + CB_Format.Visible = true; + CB_Format.SelectedIndex = MAXFORMAT - Main.SAV.Generation + 1; // SAV generation (offset by 1 for "Any") + } + } } } diff --git a/SAV/SAV_Database.resx b/Subforms/SAV_Database.resx similarity index 100% rename from SAV/SAV_Database.resx rename to Subforms/SAV_Database.resx diff --git a/Subforms/Save Editors/Gen5/CGearBackground.cs b/Subforms/Save Editors/Gen5/CGearBackground.cs new file mode 100644 index 000000000..6605e50d9 --- /dev/null +++ b/Subforms/Save Editors/Gen5/CGearBackground.cs @@ -0,0 +1,359 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; + +namespace PKHeX +{ + public class CGearBackground + { + public const string Extension = "cgb"; + public const string Filter = "C-Gear Background|*.cgb"; + public const int Width = 256; // px + public const int Height = 192; // px + public const int SIZE_CGB = 0x2600; + + /* CGearBackground Documentation + * CGearBackgrounds (.cgb) are tiled images. + * Tiles are 8x8, and serve as a tileset for building the image. + * The first 0x2000 bytes are the tile building region. + * A tile to have two pixels defined in one byte of space. + * A tile takes up 64 pixels, 32 bytes, 0x20 chunks. + * The last tile is actually the colors used in the image (16bit). + * Only 16 colors can be used for the entire image. + * 255 tiles may be chosen from, as (0x2000-(0x20))/0x20 = 0xFF + * The last 0x600 bytes are the tiles used. + * 256/8 = 32, 192/8 = 24 + * 32 * 24 = 0x300 + * The tiles are chosen based on the 16bit index of the tile. + * 0x300 * 2 = 0x600! + * + * CGearBackgrounds tilemap (when stored) employs odd obfuscation. + * BW obfuscates by adding 0xA0A0, B2W2 adds 0xA000 + * The obfuscated number is then tweaked by adding 15*(i/17) + * To reverse, use a similar reverse calculation + * PSK files are basically raw game rips (obfuscated) + * CGB files are un-obfuscated. + * Due to BW and B2W2 using different obfuscation adds, PSK files are incompatible between the versions. + */ + + public CGearBackground(byte[] data) + { + if (data.Length != SIZE_CGB) + return; + + byte[] Region1 = data.Take(0x1FE0).ToArray(); + byte[] ColorData = data.Skip(0x1FE0).Take(0x20).ToArray(); + byte[] Region2 = data.Skip(0x2000).Take(0x600).ToArray(); + + ColorPalette = new Color[0x10]; + for (int i = 0; i < 0x10; i++) + ColorPalette[i] = getRGB555_16(BitConverter.ToUInt16(ColorData, i * 2)); + + Tiles = new Tile[0xFF]; + for (int i = 0; i < 0xFF; i++) + { + Tiles[i] = new Tile(Region1.Skip(i * Tile.SIZE_TILE).Take(Tile.SIZE_TILE).ToArray()); + Tiles[i].setTile(ColorPalette); + } + + Map = new TileMap(Region2); + } + + public byte[] Write() + { + byte[] data = new byte[SIZE_CGB]; + for (int i = 0; i < Tiles.Length; i++) + Array.Copy(Tiles[i].Write(), 0, data, i*Tile.SIZE_TILE, Tile.SIZE_TILE); + + for (int i = 0; i < ColorPalette.Length; i++) + BitConverter.GetBytes(getRGB555(ColorPalette[i])).CopyTo(data, 0x1FE0 + i*2); + + Array.Copy(Map.Write(), 0, data, 0x2000, 0x600); + + return data; + } + + public static bool getIsCGB(byte[] data) + { + return data[0x2001] == 0; + } + public static byte[] CGBtoPSK(byte[] cgb, bool B2W2) + { + byte[] psk = (byte[])cgb.Clone(); + int shiftVal = B2W2 ? 0xA000 : 0xA0A0; + for (int i = 0x2000; i < 0x2600; i += 2) + { + int index = BitConverter.ToUInt16(cgb, i); + int val = IndexToVal(index, shiftVal); + BitConverter.GetBytes((ushort)val).CopyTo(psk, i); + } + return psk; + } + public static byte[] PSKtoCGB(byte[] psk, bool B2W2) + { + byte[] cgb = (byte[])psk.Clone(); + for (int i = 0x2000; i < 0x2600; i += 2) + { + int val = BitConverter.ToUInt16(psk, i); + int index = ValToIndex(val); + BitConverter.GetBytes((ushort)index).CopyTo(cgb, i); + } + return cgb; + } + + private Color[] ColorPalette; + private Tile[] Tiles; + private TileMap Map; + + public Bitmap GetImage() + { + Bitmap img = new Bitmap(Width, Height, PixelFormat.Format32bppArgb); + + // Fill Data + using (Graphics g = Graphics.FromImage(img)) + for (int i = 0; i < Map.TileChoices.Length; i++) + { + int x = (i*8)%Width; + int y = 8*((i*8)/Width); + + Bitmap b = Tiles[Map.TileChoices[i] % Tiles.Length].Rotate(Map.Rotations[i]); + g.DrawImage(b, new Point(x, y)); + } + return img; + } + public void SetImage(Bitmap img) + { + if (img.Width != Width) + throw new ArgumentException($"Invalid image width. Expected {Width} pixels wide."); + if (img.Height != Height) + throw new ArgumentException($"Invalid image height. Expected {Height} pixels high."); + + // get raw bytes of image + BitmapData bData = img.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); + byte[] data = new byte[bData.Stride * bData.Height]; + Marshal.Copy(bData.Scan0, data, 0, data.Length); + + int bpp = bData.Stride/Width; + img.UnlockBits(bData); + // get colors + Color[] colors = new Color[Width*Height]; + for (int i = 0; i < data.Length; i += bpp) + { + uint val = BitConverter.ToUInt32(data, i); + colors[i/bpp] = getRGB555_32(val); + } + + Color[] Palette = colors.Distinct().ToArray(); + if (Palette.Length > 0x10) + throw new ArgumentException($"Too many unique colors. Expected <= 16, got {Palette.Length}"); + + // Build Tiles + Tile[] tiles = new Tile[0x300]; + for (int i = 0; i < tiles.Length; i++) + { + int x = (i*8)%Width; + int y = 8*((i*8)/Width); + + Tile t = new Tile(); + for (uint ix = 0; ix < 8; ix++) + for (uint iy = 0; iy < 8; iy++) + { + int index = (int)(y + iy)*Width + (int)(x + ix); + Color c = colors[index]; + + t.ColorChoices[ix%8 + iy*8] = Array.IndexOf(Palette, c); + } + t.setTile(Palette); + tiles[i] = t; + } + + List tilelist = new List {tiles[0]}; + TileMap tm = new TileMap(new byte[2*Width*Height/64]); + for (int i = 1; i < tm.TileChoices.Length; i++) + { + for (int j = 0; j < tilelist.Count; j++) + { + int rotVal = tiles[i].getRotationValue(tilelist[j].ColorChoices); + if (rotVal <= -1) continue; + tm.TileChoices[i] = j; + tm.Rotations[i] = rotVal; + goto next; + } + if (tilelist.Count == 0xFF) + throw new ArgumentException($"Too many unique tiles. Expected < 256, ran out of tiles at {i + 1} of {tm.TileChoices.Length}"); + tilelist.Add(tiles[i]); + tm.TileChoices[i] = tilelist.Count - 1; + + next:; + } + + // Finished! + Map = tm; + ColorPalette = Palette; + Tiles = tilelist.ToArray(); + } + + private class Tile + { + public const int SIZE_TILE = 0x20; + private const int TileWidth = 8; + private const int TileHeight = 8; + public readonly int[] ColorChoices; + private Bitmap img; + + public Tile(byte[] data = null) + { + if (data == null) + data = new byte[SIZE_TILE]; + if (data.Length != SIZE_TILE) + return; + + ColorChoices = new int[TileWidth*TileHeight]; + for (int i = 0; i < data.Length; i++) + { + ColorChoices[i*2+0] = data[i] & 0xF; + ColorChoices[i*2+1] = data[i] >> 4; + } + } + public void setTile(Color[] Palette) + { + img = new Bitmap(8, 8); + for (int x = 0; x < 8; x++) + for (int y = 0; y < 8; y++) + { + var index = ColorChoices[x%8 + y*8]; + var choice = Palette[index]; + img.SetPixel(x, y, choice); + } + } + public byte[] Write() + { + byte[] data = new byte[SIZE_TILE]; + for (int i = 0; i < data.Length; i++) + { + data[i] |= (byte)(ColorChoices[i*2+0] & 0xF); + data[i] |= (byte)((ColorChoices[i*2+1] & 0xF) << 4); + } + return data; + } + + public Bitmap Rotate(int rotFlip) + { + if (rotFlip == 0) + return img; + Bitmap tile = (Bitmap)img.Clone(); + if ((rotFlip & 4) > 0) + tile.RotateFlip(RotateFlipType.RotateNoneFlipX); + if ((rotFlip & 8) > 0) + tile.RotateFlip(RotateFlipType.RotateNoneFlipY); + return tile; + } + + public int getRotationValue(int[] tileColors) + { + // Check all rotation types + if (ColorChoices.SequenceEqual(tileColors)) + return 0; + + // flip x + for (int i = 0; i < 64; i++) + if (ColorChoices[(7 - (i & 7)) + 8 * (i / 8)] != tileColors[i]) + goto check8; + return 4; + + // flip y + check8: + for (int i = 0; i < 64; i++) + if (ColorChoices[64 - 8 * (1 + (i / 8)) + (i & 7)] != tileColors[i]) + goto check12; + return 8; + + // flip xy + check12: + for (int i = 0; i < 64; i++) + if (ColorChoices[63 - i] != tileColors[i]) + return -1; + return 12; + } + } + private class TileMap + { + public readonly int[] TileChoices; + public readonly int[] Rotations; + + public TileMap(byte[] data) + { + TileChoices = new int[data.Length/2]; + Rotations = new int[data.Length/2]; + for (int i = 0; i < data.Length; i += 2) + { + TileChoices[i/2] = data[i]; + Rotations[i/2] = data[i+1]; + } + } + public byte[] Write() + { + using (MemoryStream ms = new MemoryStream()) + using (BinaryWriter bw = new BinaryWriter(ms)) + { + for (int i = 0; i < TileChoices.Length; i++) + { + bw.Write((byte)TileChoices[i]); + bw.Write((byte)Rotations[i]); + } + return ms.ToArray(); + } + } + } + + private static int IndexToVal(int index, int shiftVal) + { + int val = index + shiftVal; + return val + 15*(index/17); + } + private static int ValToIndex(int val) + { + if ((val & 0x3FF) < 0xA0 || (val & 0x3FF) > 0x280) + return ((val & 0x5C00) | 0xFF); + return ((val % 0x20) + 0x11 * (((val & 0x3FF) - 0xA0) / 0x20)) | (val & 0x5C00); + } + + private static byte convert8to5(int colorval) + { + byte i = 0; + while (colorval > Convert5To8[i]) i++; + return i; + } + private static Color getRGB555_32(uint val) + { + int R = (int)(val >> 0 >> 3) & 0x1F; + int G = (int)(val >> 8 >> 3) & 0x1F; + int B = (int)(val >> 16 >> 3) & 0x1F; + return Color.FromArgb(0xFF, Convert5To8[R], Convert5To8[G], Convert5To8[B]); + } + private static Color getRGB555_16(ushort val) + { + int R = (val >> 0) & 0x1F; + int G = (val >> 5) & 0x1F; + int B = (val >> 10) & 0x1F; + return Color.FromArgb(0xFF, Convert5To8[R], Convert5To8[G], Convert5To8[B]); + } + private static ushort getRGB555(Color c) + { + int val = 0; + // val += c.A >> 8; // unused + val |= convert8to5(c.R) << 0; + val |= convert8to5(c.G) << 5; + val |= convert8to5(c.B) << 10; + return (ushort)val; + } + private static readonly int[] Convert5To8 = { 0x00,0x08,0x10,0x18,0x20,0x29,0x31,0x39, + 0x41,0x4A,0x52,0x5A,0x62,0x6A,0x73,0x7B, + 0x83,0x8B,0x94,0x9C,0xA4,0xAC,0xB4,0xBD, + 0xC5,0xCD,0xD5,0xDE,0xE6,0xEE,0xF6,0xFF }; + } +} diff --git a/Subforms/Save Editors/Gen5/SAV_CGearSkin.Designer.cs b/Subforms/Save Editors/Gen5/SAV_CGearSkin.Designer.cs new file mode 100644 index 000000000..9707291cf --- /dev/null +++ b/Subforms/Save Editors/Gen5/SAV_CGearSkin.Designer.cs @@ -0,0 +1,156 @@ +namespace PKHeX +{ + partial class SAV_CGearSkin + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SAV_CGearSkin)); + this.PB_Background = new System.Windows.Forms.PictureBox(); + this.B_Cancel = new System.Windows.Forms.Button(); + this.B_Save = new System.Windows.Forms.Button(); + this.B_ImportPNG = new System.Windows.Forms.Button(); + this.B_ExportPNG = new System.Windows.Forms.Button(); + this.B_ExportCGB = new System.Windows.Forms.Button(); + this.B_ImportCGB = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.PB_Background)).BeginInit(); + this.SuspendLayout(); + // + // PB_Background + // + this.PB_Background.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.PB_Background.Location = new System.Drawing.Point(12, 12); + this.PB_Background.Name = "PB_Background"; + this.PB_Background.Size = new System.Drawing.Size(258, 194); + this.PB_Background.TabIndex = 0; + this.PB_Background.TabStop = false; + // + // B_Cancel + // + this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.B_Cancel.Location = new System.Drawing.Point(276, 183); + this.B_Cancel.Name = "B_Cancel"; + this.B_Cancel.Size = new System.Drawing.Size(103, 23); + this.B_Cancel.TabIndex = 1; + this.B_Cancel.Text = "Cancel"; + this.B_Cancel.UseVisualStyleBackColor = true; + this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + // + // B_Save + // + this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.B_Save.Location = new System.Drawing.Point(276, 154); + this.B_Save.Name = "B_Save"; + this.B_Save.Size = new System.Drawing.Size(103, 23); + this.B_Save.TabIndex = 2; + this.B_Save.Text = "Save"; + this.B_Save.UseVisualStyleBackColor = true; + this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + // + // B_ImportPNG + // + this.B_ImportPNG.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.B_ImportPNG.Location = new System.Drawing.Point(276, 12); + this.B_ImportPNG.Name = "B_ImportPNG"; + this.B_ImportPNG.Size = new System.Drawing.Size(103, 23); + this.B_ImportPNG.TabIndex = 3; + this.B_ImportPNG.Text = "Import .png"; + this.B_ImportPNG.UseVisualStyleBackColor = true; + this.B_ImportPNG.Click += new System.EventHandler(this.B_ImportPNG_Click); + // + // B_ExportPNG + // + this.B_ExportPNG.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.B_ExportPNG.Location = new System.Drawing.Point(276, 41); + this.B_ExportPNG.Name = "B_ExportPNG"; + this.B_ExportPNG.Size = new System.Drawing.Size(103, 23); + this.B_ExportPNG.TabIndex = 4; + this.B_ExportPNG.Text = "Export .png"; + this.B_ExportPNG.UseVisualStyleBackColor = true; + this.B_ExportPNG.Click += new System.EventHandler(this.B_ExportPNG_Click); + // + // B_ExportCGB + // + this.B_ExportCGB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.B_ExportCGB.Location = new System.Drawing.Point(276, 112); + this.B_ExportCGB.Name = "B_ExportCGB"; + this.B_ExportCGB.Size = new System.Drawing.Size(103, 23); + this.B_ExportCGB.TabIndex = 6; + this.B_ExportCGB.Text = "Export .cgb"; + this.B_ExportCGB.UseVisualStyleBackColor = true; + this.B_ExportCGB.Click += new System.EventHandler(this.B_ExportCGB_Click); + // + // B_ImportCGB + // + this.B_ImportCGB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.B_ImportCGB.Location = new System.Drawing.Point(276, 83); + this.B_ImportCGB.Name = "B_ImportCGB"; + this.B_ImportCGB.Size = new System.Drawing.Size(103, 23); + this.B_ImportCGB.TabIndex = 5; + this.B_ImportCGB.Text = "Import .cgb/.psk"; + this.B_ImportCGB.UseVisualStyleBackColor = true; + this.B_ImportCGB.Click += new System.EventHandler(this.B_ImportCGB_Click); + // + // SAV_CGearSkin + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(391, 216); + this.Controls.Add(this.B_ExportCGB); + this.Controls.Add(this.B_ImportCGB); + this.Controls.Add(this.B_ExportPNG); + this.Controls.Add(this.B_ImportPNG); + this.Controls.Add(this.B_Save); + this.Controls.Add(this.B_Cancel); + this.Controls.Add(this.PB_Background); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "SAV_CGearSkin"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "C-Gear Skin"; + ((System.ComponentModel.ISupportInitialize)(this.PB_Background)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox PB_Background; + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.Button B_ImportPNG; + private System.Windows.Forms.Button B_ExportPNG; + private System.Windows.Forms.Button B_ExportCGB; + private System.Windows.Forms.Button B_ImportCGB; + } +} \ No newline at end of file diff --git a/Subforms/Save Editors/Gen5/SAV_CGearSkin.cs b/Subforms/Save Editors/Gen5/SAV_CGearSkin.cs new file mode 100644 index 000000000..3d0b6ea42 --- /dev/null +++ b/Subforms/Save Editors/Gen5/SAV_CGearSkin.cs @@ -0,0 +1,134 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Windows.Forms; + +namespace PKHeX +{ + public partial class SAV_CGearSkin : Form + { + public SAV_CGearSkin() + { + InitializeComponent(); + + SAV = (SAV5)Main.SAV.Clone(); + + bool cgearPresent = SAV.Data[SAV.CGearInfoOffset + 0x26] == 1; + bg = new CGearBackground(cgearPresent ? + CGearBackground.PSKtoCGB(SAV.Data.Skip(SAV.CGearDataOffset).Take(CGearBackground.SIZE_CGB).ToArray(), SAV.B2W2) + : new byte[CGearBackground.SIZE_CGB]); + + PB_Background.Image = bg.GetImage(); + } + + private readonly SAV5 SAV; + private CGearBackground bg; + + private void B_ImportPNG_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog + { + Filter = "PNG File|*.png", + FileName = "Background.png", + }; + + if (ofd.ShowDialog() != DialogResult.OK) + return; + + Bitmap img = (Bitmap)Image.FromFile(ofd.FileName); + + try + { + bg.SetImage(img); + PB_Background.Image = bg.GetImage(); + } + catch (Exception ex) + { + Util.Error(ex.Message); + } + } + private void B_ExportPNG_Click(object sender, EventArgs e) + { + Image png = PB_Background.Image; + SaveFileDialog sfd = new SaveFileDialog + { + Filter = "PNG File|*.png", + FileName = "Background.png", + }; + + if (sfd.ShowDialog() != DialogResult.OK) + return; + + png.Save(sfd.FileName, ImageFormat.Png); + } + private void B_ImportCGB_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog + { + Filter = CGearBackground.Filter + "|PokeStock C-Gear Skin|*.psk" + }; + + if (ofd.ShowDialog() != DialogResult.OK) + return; + + var len = new FileInfo(ofd.FileName).Length; + if (len != CGearBackground.SIZE_CGB) + { + Util.Error($"Incorrect size, got {len} bytes, expected {CGearBackground.SIZE_CGB} bytes."); + return; + } + + byte[] data = File.ReadAllBytes(ofd.FileName); + if (!CGearBackground.getIsCGB(data)) + { + bool B2W2 = data[0x2000] != 0x00; + data = CGearBackground.PSKtoCGB(data, B2W2); + } + + bg = new CGearBackground(data); + PB_Background.Image = bg.GetImage(); + } + private void B_ExportCGB_Click(object sender, EventArgs e) + { + SaveFileDialog sfd = new SaveFileDialog + { + Filter = CGearBackground.Filter, + }; + + if (sfd.ShowDialog() != DialogResult.OK) + return; + + byte[] data = bg.Write(); + File.WriteAllBytes(sfd.FileName, data); + } + private void B_Save_Click(object sender, EventArgs e) + { + byte[] bgdata = bg.Write(); + if (bgdata.SequenceEqual(new byte[CGearBackground.SIZE_CGB])) + return; + + bgdata = CGearBackground.CGBtoPSK(bgdata, SAV.B2W2); + + Array.Copy(bgdata, 0, Main.SAV.Data, SAV.CGearDataOffset, bgdata.Length); + ushort chk = SaveUtil.ccitt16(bgdata); + BitConverter.GetBytes(chk).CopyTo(Main.SAV.Data, SAV.CGearDataOffset + bgdata.Length + 2); + BitConverter.GetBytes(chk).CopyTo(Main.SAV.Data, SAV.CGearDataOffset + bgdata.Length + 0x100); + + byte[] skinchkdata = Main.SAV.Data.Skip(SAV.CGearDataOffset + bgdata.Length + 0x100).Take(4).ToArray(); + ushort skinchkval = SaveUtil.ccitt16(skinchkdata); + BitConverter.GetBytes(skinchkval).CopyTo(Main.SAV.Data, SAV.CGearDataOffset + bgdata.Length + 0x112); + + Main.SAV.Data[SAV.CGearInfoOffset + 0x26] = 1; // data present + BitConverter.GetBytes(chk).CopyTo(Main.SAV.Data, SAV.CGearInfoOffset + 0x24); + + Main.SAV.Edited = true; + Close(); + } + private void B_Cancel_Click(object sender, EventArgs e) + { + Close(); + } + } +} diff --git a/SAV/SAV_OPower.resx b/Subforms/Save Editors/Gen5/SAV_CGearSkin.resx similarity index 100% rename from SAV/SAV_OPower.resx rename to Subforms/Save Editors/Gen5/SAV_CGearSkin.resx diff --git a/SAV/SAV_BerryFieldXY.Designer.cs b/Subforms/Save Editors/Gen6/SAV_BerryFieldXY.Designer.cs similarity index 100% rename from SAV/SAV_BerryFieldXY.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_BerryFieldXY.Designer.cs diff --git a/SAV/SAV_BerryFieldXY.cs b/Subforms/Save Editors/Gen6/SAV_BerryFieldXY.cs similarity index 100% rename from SAV/SAV_BerryFieldXY.cs rename to Subforms/Save Editors/Gen6/SAV_BerryFieldXY.cs diff --git a/SAV/SAV_PokeBlockORAS.resx b/Subforms/Save Editors/Gen6/SAV_BerryFieldXY.resx similarity index 100% rename from SAV/SAV_PokeBlockORAS.resx rename to Subforms/Save Editors/Gen6/SAV_BerryFieldXY.resx diff --git a/SAV/SAV_BoxLayout.Designer.cs b/Subforms/Save Editors/Gen6/SAV_BoxLayout.Designer.cs similarity index 100% rename from SAV/SAV_BoxLayout.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_BoxLayout.Designer.cs diff --git a/SAV/SAV_BoxLayout.cs b/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs similarity index 88% rename from SAV/SAV_BoxLayout.cs rename to Subforms/Save Editors/Gen6/SAV_BoxLayout.cs index fb2a0ff4b..671edb669 100644 --- a/SAV/SAV_BoxLayout.cs +++ b/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs @@ -1,5 +1,4 @@ using System; -using System.Drawing; using System.Windows.Forms; namespace PKHeX @@ -61,8 +60,7 @@ private void changeBoxBG(object sender, EventArgs e) if (!editing) SAV.Data[SAV.PCBackgrounds + LB_BoxSelect.SelectedIndex] = (byte)CB_BG.SelectedIndex; - string imagename = "box_wp" + (CB_BG.SelectedIndex + 1).ToString("00"); if (SAV.ORAS && CB_BG.SelectedIndex + 1 > 16) imagename += "o"; - PAN_BG.BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(imagename); + PAN_BG.BackgroundImage = BoxWallpaper.getWallpaper(SAV, CB_BG.SelectedIndex); } } } \ No newline at end of file diff --git a/SAV/SAV_BoxLayout.resx b/Subforms/Save Editors/Gen6/SAV_BoxLayout.resx similarity index 100% rename from SAV/SAV_BoxLayout.resx rename to Subforms/Save Editors/Gen6/SAV_BoxLayout.resx diff --git a/SAV/SAV_HallOfFame.Designer.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.Designer.cs similarity index 100% rename from SAV/SAV_HallOfFame.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_HallOfFame.Designer.cs diff --git a/SAV/SAV_HallOfFame.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs similarity index 90% rename from SAV/SAV_HallOfFame.cs rename to Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index ea81bcde4..6dcf088a8 100644 --- a/SAV/SAV_HallOfFame.cs +++ b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -15,7 +15,7 @@ public SAV_HallOfFame() Array.Copy(SAV.Data, SAV.HoF, data, 0, data.Length); //Copy HoF section of save into Data Setup(); - editor_spec = new object[]{ + editor_spec = new Control[]{ GB_OT, GB_CurrentMoves, CB_Species, @@ -54,7 +54,7 @@ public SAV_HallOfFame() private readonly string[] gendersymbols = Main.gendersymbols; private readonly byte[] data = new byte[0x1B40]; - private readonly object[] editor_spec; + private readonly Control[] editor_spec; private void Setup() { @@ -64,33 +64,25 @@ private void Setup() CB_Move2.Items.Clear(); CB_Move3.Items.Clear(); CB_Move4.Items.Clear(); + + CB_Species.DisplayMember = "Text"; + CB_Species.ValueMember = "Value"; + CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); - #region Species - { - CB_Species.DisplayMember = "Text"; - CB_Species.ValueMember = "Value"; - CB_Species.DataSource = Util.getCBList(Main.specieslist.Skip(1).Take(SAV.MaxSpeciesID).ToArray(), null); - } - #endregion - #region Moves - { - CB_Move1.DisplayMember = CB_Move2.DisplayMember = CB_Move3.DisplayMember = CB_Move4.DisplayMember = "Text"; - CB_Move1.ValueMember = CB_Move2.ValueMember = CB_Move3.ValueMember = CB_Move4.ValueMember = "Value"; + CB_Move1.DisplayMember = CB_Move2.DisplayMember = CB_Move3.DisplayMember = CB_Move4.DisplayMember = "Text"; + CB_Move1.ValueMember = CB_Move2.ValueMember = CB_Move3.ValueMember = CB_Move4.ValueMember = "Value"; - CB_Move1.DataSource = new BindingSource(Main.MoveDataSource, null); - CB_Move2.DataSource = new BindingSource(Main.MoveDataSource, null); - CB_Move3.DataSource = new BindingSource(Main.MoveDataSource, null); - CB_Move4.DataSource = new BindingSource(Main.MoveDataSource, null); - } - #endregion - #region Items - { - CB_HeldItem.DisplayMember = "Text"; - CB_HeldItem.ValueMember = "Value"; - CB_HeldItem.DataSource = new BindingSource(Main.ItemDataSource, null); - } - #endregion + var MoveList = Main.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); + CB_Move1.DataSource = new BindingSource(MoveList, null); + CB_Move2.DataSource = new BindingSource(MoveList, null); + CB_Move3.DataSource = new BindingSource(MoveList, null); + CB_Move4.DataSource = new BindingSource(MoveList, null); + + CB_HeldItem.DisplayMember = "Text"; + CB_HeldItem.ValueMember = "Value"; + CB_HeldItem.DataSource = new BindingSource(Main.ItemDataSource, null); } + private void B_Cancel_Click(object sender, EventArgs e) { Close(); @@ -120,15 +112,15 @@ private void displayEntry(object sender, EventArgs e) if (day == 0) { s += "No records in this slot."; - foreach (object t in editor_spec) - ((Control)t).Enabled = false; + foreach (Control t in editor_spec) + t.Enabled = false; editing = false; NUP_PartyIndex_ValueChanged(sender, e); goto end; } - foreach (object t in editor_spec) - ((Control)t).Enabled = true; + foreach (Control t in editor_spec) + t.Enabled = true; s += "Date: " + year + "/" + month + "/" + day + "" + Environment.NewLine + Environment.NewLine; CAL_MetDate.Value = new DateTime((int)year, (int)month, (int)day); @@ -352,7 +344,7 @@ private void updateNickname(object sender, EventArgs e) { // get language string l = Main.curlanguage; - TB_Nickname.Text = Util.getStringList("species", l)[species]; + TB_Nickname.Text = Util.getSpeciesList(l)[species]; } } TB_Nickname.ReadOnly = !CHK_Nicknamed.Checked; @@ -363,7 +355,7 @@ private void updateNickname(object sender, EventArgs e) private void setForms() { int species = Util.getIndex(CB_Species); - bool hasForms = Legal.PersonalAO[species].HasFormes || new[] { 664, 665, 414 }.Contains(species); + bool hasForms = PersonalTable.AO[species].HasFormes || new[] { 664, 665, 414 }.Contains(species); CB_Form.Enabled = CB_Form.Visible = hasForms; CB_Form.DisplayMember = "Text"; @@ -387,7 +379,7 @@ private void updateGender(object sender, EventArgs e) { // Get Gender Threshold int species = Util.getIndex(CB_Species); - int gt = PKX.Personal[species].Gender; + int gt = SAV.Personal[species].Gender; if (gt == 255) Label_Gender.Text = gendersymbols[2]; @@ -447,7 +439,7 @@ private void B_Delete_Click(object sender, EventArgs e) private void changeNickname(object sender, MouseEventArgs e) { - TextBox tb = !(sender is TextBox) ? TB_Nickname : sender as TextBox; + TextBox tb = !(sender is TextBox) ? TB_Nickname : (TextBox) sender; // Special Character Form if (ModifierKeys != Keys.Control) return; diff --git a/SAV/SAV_Pokepuff.resx b/Subforms/Save Editors/Gen6/SAV_HallOfFame.resx similarity index 100% rename from SAV/SAV_Pokepuff.resx rename to Subforms/Save Editors/Gen6/SAV_HallOfFame.resx diff --git a/Subforms/Save Editors/Gen6/SAV_Link6.Designer.cs b/Subforms/Save Editors/Gen6/SAV_Link6.Designer.cs new file mode 100644 index 000000000..4796710d6 --- /dev/null +++ b/Subforms/Save Editors/Gen6/SAV_Link6.Designer.cs @@ -0,0 +1,621 @@ +namespace PKHeX +{ + partial class SAV_Link6 + { + private System.Windows.Forms.TextBox TB_PKM1; + private System.Windows.Forms.TextBox TB_PKM2; + private System.Windows.Forms.TextBox TB_PKM3; + private System.Windows.Forms.Label L_PKM1; + private System.Windows.Forms.Label L_PKM2; + private System.Windows.Forms.Label L_PKM3; + private System.Windows.Forms.Label L_PKM6; + private System.Windows.Forms.Label L_PKM5; + private System.Windows.Forms.Label L_PKM4; + private System.Windows.Forms.TextBox TB_PKM6; + private System.Windows.Forms.TextBox TB_PKM5; + private System.Windows.Forms.TextBox TB_PKM4; + private System.Windows.Forms.Button B_Export; + + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SAV_Link6)); + this.TB_PKM1 = new System.Windows.Forms.TextBox(); + this.TB_PKM2 = new System.Windows.Forms.TextBox(); + this.TB_PKM3 = new System.Windows.Forms.TextBox(); + this.L_PKM1 = new System.Windows.Forms.Label(); + this.L_PKM2 = new System.Windows.Forms.Label(); + this.L_PKM3 = new System.Windows.Forms.Label(); + this.L_PKM6 = new System.Windows.Forms.Label(); + this.L_PKM5 = new System.Windows.Forms.Label(); + this.L_PKM4 = new System.Windows.Forms.Label(); + this.TB_PKM6 = new System.Windows.Forms.TextBox(); + this.TB_PKM5 = new System.Windows.Forms.TextBox(); + this.TB_PKM4 = new System.Windows.Forms.TextBox(); + this.B_Export = new System.Windows.Forms.Button(); + this.B_Import = new System.Windows.Forms.Button(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.TAB_Main = new System.Windows.Forms.TabPage(); + this.CHK_LinkAvailable = new System.Windows.Forms.CheckBox(); + this.RTB_LinkSource = new System.Windows.Forms.TextBox(); + this.L_BP = new System.Windows.Forms.Label(); + this.L_Pokemiles = new System.Windows.Forms.Label(); + this.NUD_Pokemiles = new System.Windows.Forms.NumericUpDown(); + this.NUD_BP = new System.Windows.Forms.NumericUpDown(); + this.TAB_PKM = new System.Windows.Forms.TabPage(); + this.TAB_Items = new System.Windows.Forms.TabPage(); + this.CB_Item6 = new System.Windows.Forms.ComboBox(); + this.NUD_Item6 = new System.Windows.Forms.NumericUpDown(); + this.L_Item6 = new System.Windows.Forms.Label(); + this.CB_Item5 = new System.Windows.Forms.ComboBox(); + this.NUD_Item5 = new System.Windows.Forms.NumericUpDown(); + this.L_Item5 = new System.Windows.Forms.Label(); + this.CB_Item4 = new System.Windows.Forms.ComboBox(); + this.NUD_Item4 = new System.Windows.Forms.NumericUpDown(); + this.L_Item4 = new System.Windows.Forms.Label(); + this.CB_Item3 = new System.Windows.Forms.ComboBox(); + this.NUD_Item3 = new System.Windows.Forms.NumericUpDown(); + this.L_Item3 = new System.Windows.Forms.Label(); + this.CB_Item2 = new System.Windows.Forms.ComboBox(); + this.NUD_Item2 = new System.Windows.Forms.NumericUpDown(); + this.L_Item2 = new System.Windows.Forms.Label(); + this.CB_Item1 = new System.Windows.Forms.ComboBox(); + this.NUD_Item1 = new System.Windows.Forms.NumericUpDown(); + this.L_Item1 = new System.Windows.Forms.Label(); + this.B_Save = new System.Windows.Forms.Button(); + this.B_Cancel = new System.Windows.Forms.Button(); + this.tabControl1.SuspendLayout(); + this.TAB_Main.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Pokemiles)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_BP)).BeginInit(); + this.TAB_PKM.SuspendLayout(); + this.TAB_Items.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item6)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item5)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item1)).BeginInit(); + this.SuspendLayout(); + // + // TB_PKM1 + // + this.TB_PKM1.Location = new System.Drawing.Point(49, 5); + this.TB_PKM1.Name = "TB_PKM1"; + this.TB_PKM1.ReadOnly = true; + this.TB_PKM1.Size = new System.Drawing.Size(160, 20); + this.TB_PKM1.TabIndex = 117; + // + // TB_PKM2 + // + this.TB_PKM2.Location = new System.Drawing.Point(49, 27); + this.TB_PKM2.Name = "TB_PKM2"; + this.TB_PKM2.ReadOnly = true; + this.TB_PKM2.Size = new System.Drawing.Size(160, 20); + this.TB_PKM2.TabIndex = 118; + // + // TB_PKM3 + // + this.TB_PKM3.Location = new System.Drawing.Point(49, 49); + this.TB_PKM3.Name = "TB_PKM3"; + this.TB_PKM3.ReadOnly = true; + this.TB_PKM3.Size = new System.Drawing.Size(160, 20); + this.TB_PKM3.TabIndex = 119; + // + // L_PKM1 + // + this.L_PKM1.Location = new System.Drawing.Point(6, 3); + this.L_PKM1.Name = "L_PKM1"; + this.L_PKM1.Size = new System.Drawing.Size(37, 23); + this.L_PKM1.TabIndex = 123; + this.L_PKM1.Text = "#1:"; + this.L_PKM1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_PKM2 + // + this.L_PKM2.Location = new System.Drawing.Point(6, 25); + this.L_PKM2.Name = "L_PKM2"; + this.L_PKM2.Size = new System.Drawing.Size(37, 23); + this.L_PKM2.TabIndex = 124; + this.L_PKM2.Text = "#2:"; + this.L_PKM2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_PKM3 + // + this.L_PKM3.Location = new System.Drawing.Point(6, 48); + this.L_PKM3.Name = "L_PKM3"; + this.L_PKM3.Size = new System.Drawing.Size(37, 23); + this.L_PKM3.TabIndex = 126; + this.L_PKM3.Text = "#3:"; + this.L_PKM3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_PKM6 + // + this.L_PKM6.Location = new System.Drawing.Point(6, 114); + this.L_PKM6.Name = "L_PKM6"; + this.L_PKM6.Size = new System.Drawing.Size(37, 23); + this.L_PKM6.TabIndex = 138; + this.L_PKM6.Text = "#6:"; + this.L_PKM6.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_PKM5 + // + this.L_PKM5.Location = new System.Drawing.Point(6, 91); + this.L_PKM5.Name = "L_PKM5"; + this.L_PKM5.Size = new System.Drawing.Size(37, 23); + this.L_PKM5.TabIndex = 137; + this.L_PKM5.Text = "#5:"; + this.L_PKM5.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_PKM4 + // + this.L_PKM4.Location = new System.Drawing.Point(6, 69); + this.L_PKM4.Name = "L_PKM4"; + this.L_PKM4.Size = new System.Drawing.Size(37, 23); + this.L_PKM4.TabIndex = 136; + this.L_PKM4.Text = "#4:"; + this.L_PKM4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // TB_PKM6 + // + this.TB_PKM6.Location = new System.Drawing.Point(49, 115); + this.TB_PKM6.Name = "TB_PKM6"; + this.TB_PKM6.ReadOnly = true; + this.TB_PKM6.Size = new System.Drawing.Size(160, 20); + this.TB_PKM6.TabIndex = 135; + // + // TB_PKM5 + // + this.TB_PKM5.Location = new System.Drawing.Point(49, 93); + this.TB_PKM5.Name = "TB_PKM5"; + this.TB_PKM5.ReadOnly = true; + this.TB_PKM5.Size = new System.Drawing.Size(160, 20); + this.TB_PKM5.TabIndex = 134; + // + // TB_PKM4 + // + this.TB_PKM4.Location = new System.Drawing.Point(49, 71); + this.TB_PKM4.Name = "TB_PKM4"; + this.TB_PKM4.ReadOnly = true; + this.TB_PKM4.Size = new System.Drawing.Size(160, 20); + this.TB_PKM4.TabIndex = 133; + // + // B_Export + // + this.B_Export.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.B_Export.Location = new System.Drawing.Point(163, 87); + this.B_Export.Name = "B_Export"; + this.B_Export.Size = new System.Drawing.Size(80, 23); + this.B_Export.TabIndex = 4; + this.B_Export.Text = "Export"; + this.B_Export.UseVisualStyleBackColor = true; + this.B_Export.Click += new System.EventHandler(this.B_Export_Click); + // + // B_Import + // + this.B_Import.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.B_Import.Location = new System.Drawing.Point(163, 64); + this.B_Import.Name = "B_Import"; + this.B_Import.Size = new System.Drawing.Size(80, 23); + this.B_Import.TabIndex = 0; + this.B_Import.Text = "Import"; + this.B_Import.UseVisualStyleBackColor = true; + this.B_Import.Click += new System.EventHandler(this.B_Import_Click); + // + // tabControl1 + // + this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl1.Controls.Add(this.TAB_Main); + this.tabControl1.Controls.Add(this.TAB_PKM); + this.tabControl1.Controls.Add(this.TAB_Items); + this.tabControl1.Location = new System.Drawing.Point(12, 12); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(307, 183); + this.tabControl1.TabIndex = 143; + // + // TAB_Main + // + this.TAB_Main.Controls.Add(this.CHK_LinkAvailable); + this.TAB_Main.Controls.Add(this.RTB_LinkSource); + this.TAB_Main.Controls.Add(this.L_BP); + this.TAB_Main.Controls.Add(this.L_Pokemiles); + this.TAB_Main.Controls.Add(this.NUD_Pokemiles); + this.TAB_Main.Controls.Add(this.B_Export); + this.TAB_Main.Controls.Add(this.B_Import); + this.TAB_Main.Controls.Add(this.NUD_BP); + this.TAB_Main.Location = new System.Drawing.Point(4, 22); + this.TAB_Main.Name = "TAB_Main"; + this.TAB_Main.Padding = new System.Windows.Forms.Padding(3); + this.TAB_Main.Size = new System.Drawing.Size(299, 157); + this.TAB_Main.TabIndex = 0; + this.TAB_Main.Text = "Main"; + this.TAB_Main.UseVisualStyleBackColor = true; + // + // CHK_LinkAvailable + // + this.CHK_LinkAvailable.Enabled = false; + this.CHK_LinkAvailable.Location = new System.Drawing.Point(9, 116); + this.CHK_LinkAvailable.Name = "CHK_LinkAvailable"; + this.CHK_LinkAvailable.Size = new System.Drawing.Size(146, 21); + this.CHK_LinkAvailable.TabIndex = 149; + this.CHK_LinkAvailable.Text = "Pokémon Link Enabled"; + this.CHK_LinkAvailable.UseVisualStyleBackColor = true; + // + // RTB_LinkSource + // + this.RTB_LinkSource.Enabled = false; + this.RTB_LinkSource.Location = new System.Drawing.Point(6, 6); + this.RTB_LinkSource.MaxLength = 54; + this.RTB_LinkSource.Multiline = true; + this.RTB_LinkSource.Name = "RTB_LinkSource"; + this.RTB_LinkSource.Size = new System.Drawing.Size(237, 52); + this.RTB_LinkSource.TabIndex = 148; + // + // L_BP + // + this.L_BP.Location = new System.Drawing.Point(6, 61); + this.L_BP.Name = "L_BP"; + this.L_BP.Size = new System.Drawing.Size(73, 23); + this.L_BP.TabIndex = 146; + this.L_BP.Text = "Battle Points:"; + this.L_BP.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_Pokemiles + // + this.L_Pokemiles.Location = new System.Drawing.Point(16, 87); + this.L_Pokemiles.Name = "L_Pokemiles"; + this.L_Pokemiles.Size = new System.Drawing.Size(63, 23); + this.L_Pokemiles.TabIndex = 147; + this.L_Pokemiles.Text = "PokéMiles:"; + this.L_Pokemiles.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // NUD_Pokemiles + // + this.NUD_Pokemiles.Enabled = false; + this.NUD_Pokemiles.Location = new System.Drawing.Point(85, 90); + this.NUD_Pokemiles.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Pokemiles.Name = "NUD_Pokemiles"; + this.NUD_Pokemiles.Size = new System.Drawing.Size(58, 20); + this.NUD_Pokemiles.TabIndex = 145; + // + // NUD_BP + // + this.NUD_BP.Enabled = false; + this.NUD_BP.Location = new System.Drawing.Point(85, 64); + this.NUD_BP.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_BP.Name = "NUD_BP"; + this.NUD_BP.Size = new System.Drawing.Size(58, 20); + this.NUD_BP.TabIndex = 144; + // + // TAB_PKM + // + this.TAB_PKM.Controls.Add(this.TB_PKM1); + this.TAB_PKM.Controls.Add(this.TB_PKM2); + this.TAB_PKM.Controls.Add(this.L_PKM6); + this.TAB_PKM.Controls.Add(this.TB_PKM3); + this.TAB_PKM.Controls.Add(this.L_PKM5); + this.TAB_PKM.Controls.Add(this.L_PKM1); + this.TAB_PKM.Controls.Add(this.L_PKM4); + this.TAB_PKM.Controls.Add(this.L_PKM2); + this.TAB_PKM.Controls.Add(this.TB_PKM6); + this.TAB_PKM.Controls.Add(this.L_PKM3); + this.TAB_PKM.Controls.Add(this.TB_PKM5); + this.TAB_PKM.Controls.Add(this.TB_PKM4); + this.TAB_PKM.Location = new System.Drawing.Point(4, 22); + this.TAB_PKM.Name = "TAB_PKM"; + this.TAB_PKM.Padding = new System.Windows.Forms.Padding(3); + this.TAB_PKM.Size = new System.Drawing.Size(299, 157); + this.TAB_PKM.TabIndex = 1; + this.TAB_PKM.Text = "Pokémon"; + this.TAB_PKM.UseVisualStyleBackColor = true; + // + // TAB_Items + // + this.TAB_Items.Controls.Add(this.CB_Item6); + this.TAB_Items.Controls.Add(this.NUD_Item6); + this.TAB_Items.Controls.Add(this.L_Item6); + this.TAB_Items.Controls.Add(this.CB_Item5); + this.TAB_Items.Controls.Add(this.NUD_Item5); + this.TAB_Items.Controls.Add(this.L_Item5); + this.TAB_Items.Controls.Add(this.CB_Item4); + this.TAB_Items.Controls.Add(this.NUD_Item4); + this.TAB_Items.Controls.Add(this.L_Item4); + this.TAB_Items.Controls.Add(this.CB_Item3); + this.TAB_Items.Controls.Add(this.NUD_Item3); + this.TAB_Items.Controls.Add(this.L_Item3); + this.TAB_Items.Controls.Add(this.CB_Item2); + this.TAB_Items.Controls.Add(this.NUD_Item2); + this.TAB_Items.Controls.Add(this.L_Item2); + this.TAB_Items.Controls.Add(this.CB_Item1); + this.TAB_Items.Controls.Add(this.NUD_Item1); + this.TAB_Items.Controls.Add(this.L_Item1); + this.TAB_Items.Location = new System.Drawing.Point(4, 22); + this.TAB_Items.Name = "TAB_Items"; + this.TAB_Items.Size = new System.Drawing.Size(299, 157); + this.TAB_Items.TabIndex = 2; + this.TAB_Items.Text = "Items"; + this.TAB_Items.UseVisualStyleBackColor = true; + // + // CB_Item6 + // + this.CB_Item6.Enabled = false; + this.CB_Item6.FormattingEnabled = true; + this.CB_Item6.Location = new System.Drawing.Point(69, 117); + this.CB_Item6.Name = "CB_Item6"; + this.CB_Item6.Size = new System.Drawing.Size(139, 21); + this.CB_Item6.TabIndex = 133; + // + // NUD_Item6 + // + this.NUD_Item6.Enabled = false; + this.NUD_Item6.Location = new System.Drawing.Point(214, 117); + this.NUD_Item6.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Item6.Name = "NUD_Item6"; + this.NUD_Item6.Size = new System.Drawing.Size(58, 20); + this.NUD_Item6.TabIndex = 131; + // + // L_Item6 + // + this.L_Item6.Location = new System.Drawing.Point(3, 115); + this.L_Item6.Name = "L_Item6"; + this.L_Item6.Size = new System.Drawing.Size(60, 23); + this.L_Item6.TabIndex = 132; + this.L_Item6.Text = "Item 6:"; + this.L_Item6.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // CB_Item5 + // + this.CB_Item5.Enabled = false; + this.CB_Item5.FormattingEnabled = true; + this.CB_Item5.Location = new System.Drawing.Point(69, 94); + this.CB_Item5.Name = "CB_Item5"; + this.CB_Item5.Size = new System.Drawing.Size(139, 21); + this.CB_Item5.TabIndex = 130; + // + // NUD_Item5 + // + this.NUD_Item5.Enabled = false; + this.NUD_Item5.Location = new System.Drawing.Point(214, 94); + this.NUD_Item5.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Item5.Name = "NUD_Item5"; + this.NUD_Item5.Size = new System.Drawing.Size(58, 20); + this.NUD_Item5.TabIndex = 128; + // + // L_Item5 + // + this.L_Item5.Location = new System.Drawing.Point(3, 92); + this.L_Item5.Name = "L_Item5"; + this.L_Item5.Size = new System.Drawing.Size(60, 23); + this.L_Item5.TabIndex = 129; + this.L_Item5.Text = "Item 5:"; + this.L_Item5.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // CB_Item4 + // + this.CB_Item4.Enabled = false; + this.CB_Item4.FormattingEnabled = true; + this.CB_Item4.Location = new System.Drawing.Point(69, 71); + this.CB_Item4.Name = "CB_Item4"; + this.CB_Item4.Size = new System.Drawing.Size(139, 21); + this.CB_Item4.TabIndex = 127; + // + // NUD_Item4 + // + this.NUD_Item4.Enabled = false; + this.NUD_Item4.Location = new System.Drawing.Point(214, 71); + this.NUD_Item4.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Item4.Name = "NUD_Item4"; + this.NUD_Item4.Size = new System.Drawing.Size(58, 20); + this.NUD_Item4.TabIndex = 125; + // + // L_Item4 + // + this.L_Item4.Location = new System.Drawing.Point(3, 69); + this.L_Item4.Name = "L_Item4"; + this.L_Item4.Size = new System.Drawing.Size(60, 23); + this.L_Item4.TabIndex = 126; + this.L_Item4.Text = "Item 4:"; + this.L_Item4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // CB_Item3 + // + this.CB_Item3.Enabled = false; + this.CB_Item3.FormattingEnabled = true; + this.CB_Item3.Location = new System.Drawing.Point(69, 48); + this.CB_Item3.Name = "CB_Item3"; + this.CB_Item3.Size = new System.Drawing.Size(139, 21); + this.CB_Item3.TabIndex = 124; + // + // NUD_Item3 + // + this.NUD_Item3.Enabled = false; + this.NUD_Item3.Location = new System.Drawing.Point(214, 48); + this.NUD_Item3.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Item3.Name = "NUD_Item3"; + this.NUD_Item3.Size = new System.Drawing.Size(58, 20); + this.NUD_Item3.TabIndex = 122; + // + // L_Item3 + // + this.L_Item3.Location = new System.Drawing.Point(3, 46); + this.L_Item3.Name = "L_Item3"; + this.L_Item3.Size = new System.Drawing.Size(60, 23); + this.L_Item3.TabIndex = 123; + this.L_Item3.Text = "Item 3:"; + this.L_Item3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // CB_Item2 + // + this.CB_Item2.Enabled = false; + this.CB_Item2.FormattingEnabled = true; + this.CB_Item2.Location = new System.Drawing.Point(69, 25); + this.CB_Item2.Name = "CB_Item2"; + this.CB_Item2.Size = new System.Drawing.Size(139, 21); + this.CB_Item2.TabIndex = 121; + // + // NUD_Item2 + // + this.NUD_Item2.Enabled = false; + this.NUD_Item2.Location = new System.Drawing.Point(214, 25); + this.NUD_Item2.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Item2.Name = "NUD_Item2"; + this.NUD_Item2.Size = new System.Drawing.Size(58, 20); + this.NUD_Item2.TabIndex = 119; + // + // L_Item2 + // + this.L_Item2.Location = new System.Drawing.Point(3, 23); + this.L_Item2.Name = "L_Item2"; + this.L_Item2.Size = new System.Drawing.Size(60, 23); + this.L_Item2.TabIndex = 120; + this.L_Item2.Text = "Item 2:"; + this.L_Item2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // CB_Item1 + // + this.CB_Item1.Enabled = false; + this.CB_Item1.FormattingEnabled = true; + this.CB_Item1.Location = new System.Drawing.Point(69, 2); + this.CB_Item1.Name = "CB_Item1"; + this.CB_Item1.Size = new System.Drawing.Size(139, 21); + this.CB_Item1.TabIndex = 118; + // + // NUD_Item1 + // + this.NUD_Item1.Enabled = false; + this.NUD_Item1.Location = new System.Drawing.Point(214, 2); + this.NUD_Item1.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Item1.Name = "NUD_Item1"; + this.NUD_Item1.Size = new System.Drawing.Size(58, 20); + this.NUD_Item1.TabIndex = 116; + // + // L_Item1 + // + this.L_Item1.Location = new System.Drawing.Point(3, 0); + this.L_Item1.Name = "L_Item1"; + this.L_Item1.Size = new System.Drawing.Size(60, 23); + this.L_Item1.TabIndex = 117; + this.L_Item1.Text = "Item 1:"; + this.L_Item1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // B_Save + // + this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Save.Location = new System.Drawing.Point(239, 201); + this.B_Save.Name = "B_Save"; + this.B_Save.Size = new System.Drawing.Size(80, 23); + this.B_Save.TabIndex = 144; + this.B_Save.Text = "Save"; + this.B_Save.UseVisualStyleBackColor = true; + this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + // + // B_Cancel + // + this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Cancel.Location = new System.Drawing.Point(153, 201); + this.B_Cancel.Name = "B_Cancel"; + this.B_Cancel.Size = new System.Drawing.Size(80, 23); + this.B_Cancel.TabIndex = 145; + this.B_Cancel.Text = "Cancel"; + this.B_Cancel.UseVisualStyleBackColor = true; + this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + // + // SAV_Link6 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(334, 236); + this.Controls.Add(this.B_Cancel); + this.Controls.Add(this.B_Save); + this.Controls.Add(this.tabControl1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimumSize = new System.Drawing.Size(350, 275); + this.Name = "SAV_Link6"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Pokemon Link Tool"; + this.tabControl1.ResumeLayout(false); + this.TAB_Main.ResumeLayout(false); + this.TAB_Main.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Pokemiles)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_BP)).EndInit(); + this.TAB_PKM.ResumeLayout(false); + this.TAB_PKM.PerformLayout(); + this.TAB_Items.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item6)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item5)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Item1)).EndInit(); + this.ResumeLayout(false); + + } + + private System.Windows.Forms.Button B_Import; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage TAB_Main; + private System.Windows.Forms.TabPage TAB_PKM; + private System.Windows.Forms.TabPage TAB_Items; + private System.Windows.Forms.Label L_Item1; + private System.Windows.Forms.NumericUpDown NUD_Item1; + private System.Windows.Forms.ComboBox CB_Item1; + private System.Windows.Forms.Label L_Item2; + private System.Windows.Forms.NumericUpDown NUD_Item2; + private System.Windows.Forms.ComboBox CB_Item2; + private System.Windows.Forms.Label L_Item3; + private System.Windows.Forms.NumericUpDown NUD_Item3; + private System.Windows.Forms.ComboBox CB_Item3; + private System.Windows.Forms.Label L_Item4; + private System.Windows.Forms.NumericUpDown NUD_Item4; + private System.Windows.Forms.ComboBox CB_Item4; + private System.Windows.Forms.Label L_Item5; + private System.Windows.Forms.NumericUpDown NUD_Item5; + private System.Windows.Forms.ComboBox CB_Item5; + private System.Windows.Forms.Label L_Item6; + private System.Windows.Forms.NumericUpDown NUD_Item6; + private System.Windows.Forms.ComboBox CB_Item6; + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.NumericUpDown NUD_BP; + private System.Windows.Forms.NumericUpDown NUD_Pokemiles; + private System.Windows.Forms.Label L_Pokemiles; + private System.Windows.Forms.Label L_BP; + private System.Windows.Forms.TextBox RTB_LinkSource; + private System.Windows.Forms.CheckBox CHK_LinkAvailable; + } +} \ No newline at end of file diff --git a/Subforms/Save Editors/Gen6/SAV_Link6.cs b/Subforms/Save Editors/Gen6/SAV_Link6.cs new file mode 100644 index 000000000..97e7d9aac --- /dev/null +++ b/Subforms/Save Editors/Gen6/SAV_Link6.cs @@ -0,0 +1,110 @@ +using System; +using System.IO; +using System.Linq; +using System.Windows.Forms; + +namespace PKHeX +{ + public partial class SAV_Link6 : Form + { + public SAV_Link6() + { + InitializeComponent(); + foreach (var cb in TAB_Items.Controls.OfType()) + { + cb.DisplayMember = "Text"; + cb.ValueMember = "Value"; + cb.DataSource = new BindingSource(Main.ItemDataSource.Where(item => item.Value <= SAV.MaxItemID).ToArray(), null); + } + Util.TranslateInterface(this, Main.curlanguage); + byte[] data = SAV.LinkBlock; + if (data == null) + { + Util.Alert("Invalid save file / Link Information"); + Close(); + } + data = data.Skip(0x1FF).Take(PL6.Size).ToArray(); + loadLinkData(data); + } + + private readonly SAV6 SAV = Main.SAV.Clone() as SAV6; + private PL6 LinkInfo; + + private void B_Save_Click(object sender, EventArgs e) + { + byte[] data = new byte[SAV.LinkBlock.Length]; + Array.Copy(LinkInfo.Data, 0, data, 0x1FF, LinkInfo.Data.Length); + + // Fix Checksum just in case. + ushort ccitt = SaveUtil.ccitt16(data.Skip(0x200).Take(data.Length - 4 - 0x200).ToArray()); // [app,chk) + BitConverter.GetBytes(ccitt).CopyTo(data, data.Length - 4); + + SAV.LinkBlock = data; + Array.Copy(SAV.Data, Main.SAV.Data, SAV.Data.Length); + Close(); + } + private void B_Cancel_Click(object sender, EventArgs e) + { + Close(); + } + private void B_Import_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog {Filter = PL6.Filter}; + if (ofd.ShowDialog() != DialogResult.OK) + return; + + if (new FileInfo(ofd.FileName).Length != PL6.Size) + { Util.Alert("Invalid file length"); return; } + + byte[] data = File.ReadAllBytes(ofd.FileName); + + loadLinkData(data); + B_Export.Enabled = true; + } + private void B_Export_Click(object sender, EventArgs e) + { + if (LinkInfo.Data == null) + return; + + SaveFileDialog sfd = new SaveFileDialog {Filter = PL6.Filter}; + if (sfd.ShowDialog() != DialogResult.OK) + return; + + File.WriteAllBytes(sfd.FileName, LinkInfo.Data); + Util.Alert("Pokémon Link data saved to:\r" + sfd.FileName + "."); + } + + private void loadLinkData(byte[] data) + { + LinkInfo = new PL6(data); + + RTB_LinkSource.Text = LinkInfo.Origin_app; + CHK_LinkAvailable.Checked = LinkInfo.PL_enabled; + + NUD_BP.Value = LinkInfo.BattlePoints; + NUD_Pokemiles.Value = LinkInfo.Pokemiles; + + CB_Item1.SelectedIndex = LinkInfo.Item_1; + CB_Item2.SelectedIndex = LinkInfo.Item_2; + CB_Item3.SelectedIndex = LinkInfo.Item_3; + CB_Item4.SelectedIndex = LinkInfo.Item_4; + CB_Item5.SelectedIndex = LinkInfo.Item_5; + CB_Item6.SelectedIndex = LinkInfo.Item_6; + + NUD_Item1.Value = LinkInfo.Quantity_1; + NUD_Item2.Value = LinkInfo.Quantity_2; + NUD_Item3.Value = LinkInfo.Quantity_3; + NUD_Item4.Value = LinkInfo.Quantity_4; + NUD_Item5.Value = LinkInfo.Quantity_5; + NUD_Item6.Value = LinkInfo.Quantity_6; + + // Pokemon slots + TB_PKM1.Text = Main.specieslist[LinkInfo.Pokes[0].Species]; + TB_PKM2.Text = Main.specieslist[LinkInfo.Pokes[1].Species]; + TB_PKM3.Text = Main.specieslist[LinkInfo.Pokes[2].Species]; + TB_PKM4.Text = Main.specieslist[LinkInfo.Pokes[3].Species]; + TB_PKM5.Text = Main.specieslist[LinkInfo.Pokes[4].Species]; + TB_PKM6.Text = Main.specieslist[LinkInfo.Pokes[5].Species]; + } + } +} diff --git a/SAV/SAV_SecretBase.resx b/Subforms/Save Editors/Gen6/SAV_Link6.resx similarity index 100% rename from SAV/SAV_SecretBase.resx rename to Subforms/Save Editors/Gen6/SAV_Link6.resx diff --git a/SAV/SAV_OPower.Designer.cs b/Subforms/Save Editors/Gen6/SAV_OPower.Designer.cs similarity index 100% rename from SAV/SAV_OPower.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_OPower.Designer.cs diff --git a/SAV/SAV_OPower.cs b/Subforms/Save Editors/Gen6/SAV_OPower.cs similarity index 100% rename from SAV/SAV_OPower.cs rename to Subforms/Save Editors/Gen6/SAV_OPower.cs diff --git a/SAV/SAV_SuperTrain.resx b/Subforms/Save Editors/Gen6/SAV_OPower.resx similarity index 100% rename from SAV/SAV_SuperTrain.resx rename to Subforms/Save Editors/Gen6/SAV_OPower.resx diff --git a/SAV/SAV_PokeBlockORAS.Designer.cs b/Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.Designer.cs similarity index 100% rename from SAV/SAV_PokeBlockORAS.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.Designer.cs diff --git a/SAV/SAV_PokeBlockORAS.cs b/Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.cs similarity index 100% rename from SAV/SAV_PokeBlockORAS.cs rename to Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.cs diff --git a/SAV/SAV_Trainer.resx b/Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.resx similarity index 100% rename from SAV/SAV_Trainer.resx rename to Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.resx diff --git a/SAV/SAV_PokedexORAS.Designer.cs b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.Designer.cs similarity index 100% rename from SAV/SAV_PokedexORAS.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_PokedexORAS.Designer.cs diff --git a/SAV/SAV_PokedexORAS.cs b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs similarity index 97% rename from SAV/SAV_PokedexORAS.cs rename to Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs index 71daec422..e6647552f 100644 --- a/SAV/SAV_PokedexORAS.cs +++ b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs @@ -23,7 +23,7 @@ public SAV_PokedexORAS() // Fill List CB_Species.DisplayMember = "Text"; CB_Species.ValueMember = "Value"; - CB_Species.DataSource = Util.getCBList(Main.specieslist.Skip(1).Take(SAV.MaxSpeciesID).ToArray(), null); + CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).ToList(), null); for (int i = 1; i < SAV.MaxSpeciesID + 1; i++) LB_Species.Items.Add(i.ToString("000") + " - " + Main.specieslist[i]); @@ -73,7 +73,7 @@ private void removedropCB(object sender, KeyEventArgs e) } private void changeDisplayed(object sender, EventArgs e) { - if (!(sender as CheckBox).Checked) + if (!((CheckBox) sender).Checked) return; CHK_P6.Checked = sender == CHK_P6; @@ -116,7 +116,7 @@ private void getEntry() for (int i = 0; i < 7; i++) CL[i].Checked = langbools[i, pk - 1]; - int gt = PKX.Personal[pk].Gender; + int gt = SAV.Personal[pk].Gender; CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = gt != 254; // Not Female-Only CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = gt != 0 && gt != 255; // Not Male-Only and Not Genderless @@ -127,7 +127,7 @@ private void getEntry() CLB_FormsSeen.Items.Clear(); CLB_FormDisplayed.Items.Clear(); - int fc = PKX.Personal[species].FormeCount; + int fc = SAV.Personal[species].FormeCount; int f = SaveUtil.getDexFormIndexORAS(species, fc); if (f < 0) return; @@ -171,7 +171,7 @@ private void setEntry() BitConverter.GetBytes((ushort)Math.Min(0xFFFF, Util.ToUInt32(MT_Count.Text))).CopyTo(SAV.Data, SAV.EncounterCount + (species - 1) * 2); - int fc = PKX.Personal[species].FormeCount; + int fc = SAV.Personal[species].FormeCount; int f = SaveUtil.getDexFormIndexORAS(species, fc); if (f < 0) return; @@ -283,7 +283,7 @@ private void B_GiveAll_Click(object sender, EventArgs e) CHK_P1.Checked = ModifierKeys != Keys.Control; } int index = LB_Species.SelectedIndex+1; - int gt = PKX.Personal[index].Gender; + int gt = SAV.Personal[index].Gender; CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control; CHK_P3.Checked = CHK_P5.Checked = gt != 0 && gt != 255 && ModifierKeys != Keys.Control; @@ -329,7 +329,7 @@ private void modifyAll(object sender, EventArgs e) if (sender == mnuSeenNone || sender == mnuSeenAll || sender == mnuComplete) for (int i = 0; i < CB_Species.Items.Count; i++) { - int gt = PKX.Personal[i + 1].Gender; + int gt = SAV.Personal[i + 1].Gender; LB_Species.SelectedIndex = i; foreach (CheckBox t in new[] { CHK_P2, CHK_P3, CHK_P4, CHK_P5 }) t.Checked = mnuSeenNone != sender && t.Enabled; @@ -354,7 +354,7 @@ private void modifyAll(object sender, EventArgs e) if (sender == mnuCaughtNone || sender == mnuCaughtAll || sender == mnuComplete) for (int i = 0; i < CB_Species.Items.Count; i++) { - int gt = PKX.Personal[i + 1].Gender; + int gt = SAV.Personal[i + 1].Gender; LB_Species.SelectedIndex = i; foreach (CheckBox t in new[] { CHK_P1 }) t.Checked = mnuCaughtNone != sender; diff --git a/SAV/SAV_PokedexORAS.resx b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.resx similarity index 100% rename from SAV/SAV_PokedexORAS.resx rename to Subforms/Save Editors/Gen6/SAV_PokedexORAS.resx diff --git a/SAV/SAV_PokedexXY.Designer.cs b/Subforms/Save Editors/Gen6/SAV_PokedexXY.Designer.cs similarity index 100% rename from SAV/SAV_PokedexXY.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_PokedexXY.Designer.cs diff --git a/SAV/SAV_PokedexXY.cs b/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs similarity index 97% rename from SAV/SAV_PokedexXY.cs rename to Subforms/Save Editors/Gen6/SAV_PokedexXY.cs index 8eb4f4927..517d3a132 100644 --- a/SAV/SAV_PokedexXY.cs +++ b/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs @@ -23,7 +23,7 @@ public SAV_PokedexXY() // Fill List CB_Species.DisplayMember = "Text"; CB_Species.ValueMember = "Value"; - CB_Species.DataSource = Util.getCBList(Main.specieslist.Skip(1).Take(SAV.MaxSpeciesID).ToArray(), null); + CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).ToList(), null); for (int i = 1; i < SAV.MaxSpeciesID + 1; i++) LB_Species.Items.Add(i.ToString("000") + " - " + Main.specieslist[i]); @@ -74,7 +74,7 @@ private void removedropCB(object sender, KeyEventArgs e) } private void changeDisplayed(object sender, EventArgs e) { - if (!(sender as CheckBox).Checked) + if (!((CheckBox) sender).Checked) return; CHK_P6.Checked = sender == CHK_P6; @@ -120,7 +120,7 @@ private void getEntry() if (pk < 650) { CHK_F1.Enabled = true; CHK_F1.Checked = foreignbools[pk - 1]; } else { CHK_F1.Enabled = CHK_F1.Checked = false; } - int gt = PKX.Personal[pk].Gender; + int gt = SAV.Personal[pk].Gender; CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = gt != 254; // Not Female-Only CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(gt == 0 || (gt == 255)); // Not Male-Only and Not Genderless @@ -128,7 +128,7 @@ private void getEntry() CLB_FormsSeen.Items.Clear(); CLB_FormDisplayed.Items.Clear(); - int fc = PKX.Personal[species].FormeCount; + int fc = SAV.Personal[species].FormeCount; int f = SaveUtil.getDexFormIndexXY(species, fc); if (f < 0) return; @@ -172,7 +172,7 @@ private void setEntry() langbools[5, species - 1] = CHK_L6.Checked; langbools[6, species - 1] = CHK_L7.Checked; - int fc = PKX.Personal[species].FormeCount; + int fc = SAV.Personal[species].FormeCount; int f = SaveUtil.getDexFormIndexORAS(species, fc); if (f < 0) return; @@ -305,7 +305,7 @@ private void B_GiveAll_Click(object sender, EventArgs e) CHK_F1.Checked = ModifierKeys != Keys.Control; } int index = LB_Species.SelectedIndex+1; - int gt = PKX.Personal[index].Gender; + int gt = SAV.Personal[index].Gender; CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control; CHK_P3.Checked = CHK_P5.Checked = gt != 0 && gt != 255 && ModifierKeys != Keys.Control; @@ -330,7 +330,7 @@ private void modifyAll(object sender, EventArgs e) if (sender == mnuSeenNone || sender == mnuSeenAll || sender == mnuComplete) for (int i = 0; i < CB_Species.Items.Count; i++) { - int gt = PKX.Personal[i + 1].Gender; + int gt = SAV.Personal[i + 1].Gender; LB_Species.SelectedIndex = i; foreach (CheckBox t in new[] { CHK_P2, CHK_P3, CHK_P4, CHK_P5 }) t.Checked = mnuSeenNone != sender && t.Enabled; @@ -355,7 +355,7 @@ private void modifyAll(object sender, EventArgs e) if (sender == mnuCaughtNone || sender == mnuCaughtAll || sender == mnuComplete) for (int i = 0; i < CB_Species.Items.Count; i++) { - int gt = PKX.Personal[i + 1].Gender; + int gt = SAV.Personal[i + 1].Gender; LB_Species.SelectedIndex = i; foreach (CheckBox t in new[] { CHK_P1, CHK_F1 }) t.Checked = mnuCaughtNone != sender; diff --git a/SAV/SAV_PokedexXY.resx b/Subforms/Save Editors/Gen6/SAV_PokedexXY.resx similarity index 100% rename from SAV/SAV_PokedexXY.resx rename to Subforms/Save Editors/Gen6/SAV_PokedexXY.resx diff --git a/SAV/SAV_Pokepuff.Designer.cs b/Subforms/Save Editors/Gen6/SAV_Pokepuff.Designer.cs similarity index 100% rename from SAV/SAV_Pokepuff.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_Pokepuff.Designer.cs diff --git a/SAV/SAV_Pokepuff.cs b/Subforms/Save Editors/Gen6/SAV_Pokepuff.cs similarity index 98% rename from SAV/SAV_Pokepuff.cs rename to Subforms/Save Editors/Gen6/SAV_Pokepuff.cs index 63b89bd38..915668503 100644 --- a/SAV/SAV_Pokepuff.cs +++ b/Subforms/Save Editors/Gen6/SAV_Pokepuff.cs @@ -59,7 +59,7 @@ private void Setup() private void dropclick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex != 1) return; - ((ComboBox)(sender as DataGridView).EditingControl).DroppedDown = true; + ((ComboBox)((DataGridView) sender).EditingControl).DroppedDown = true; } private void B_Cancel_Click(object sender, EventArgs e) diff --git a/SAV/frmReport.resx b/Subforms/Save Editors/Gen6/SAV_Pokepuff.resx similarity index 100% rename from SAV/frmReport.resx rename to Subforms/Save Editors/Gen6/SAV_Pokepuff.resx diff --git a/SAV/SAV_SecretBase.Designer.cs b/Subforms/Save Editors/Gen6/SAV_SecretBase.Designer.cs similarity index 100% rename from SAV/SAV_SecretBase.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_SecretBase.Designer.cs diff --git a/SAV/SAV_SecretBase.cs b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs similarity index 96% rename from SAV/SAV_SecretBase.cs rename to Subforms/Save Editors/Gen6/SAV_SecretBase.cs index f1a0f5ba4..cc1da33bc 100644 --- a/SAV/SAV_SecretBase.cs +++ b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs @@ -35,19 +35,20 @@ private void setupComboBoxes() CB_Ball.DisplayMember = CB_HeldItem.DisplayMember = CB_Species.DisplayMember = CB_Nature.DisplayMember = "Text"; CB_Ball.ValueMember = CB_HeldItem.ValueMember = CB_Species.ValueMember = CB_Nature.ValueMember = "Value"; - CB_Ball.DataSource = new BindingSource(Main.BallDataSource.Where(b => b.Value <= SAV.MaxBallID), null); - CB_HeldItem.DataSource = new BindingSource(Main.ItemDataSource, null); - CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID), null); + CB_Ball.DataSource = new BindingSource(Main.BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null); + CB_HeldItem.DataSource = new BindingSource(Main.ItemDataSource.Where(i => i.Value < SAV.MaxItemID).ToList(), null); + CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); CB_Nature.DataSource = new BindingSource(Main.NatureDataSource, null); CB_Move1.DisplayMember = CB_Move2.DisplayMember = CB_Move3.DisplayMember = CB_Move4.DisplayMember = "Text"; CB_Move1.ValueMember = CB_Move2.ValueMember = CB_Move3.ValueMember = CB_Move4.ValueMember = "Value"; - CB_Move1.DataSource = new BindingSource(Main.MoveDataSource, null); - CB_Move2.DataSource = new BindingSource(Main.MoveDataSource, null); - CB_Move3.DataSource = new BindingSource(Main.MoveDataSource, null); - CB_Move4.DataSource = new BindingSource(Main.MoveDataSource, null); + var MoveList = Main.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); + CB_Move1.DataSource = new BindingSource(MoveList, null); + CB_Move2.DataSource = new BindingSource(MoveList, null); + CB_Move3.DataSource = new BindingSource(MoveList, null); + CB_Move4.DataSource = new BindingSource(MoveList, null); } // Repopulation Functions @@ -411,7 +412,7 @@ private void setAbilityList() int newabil = Convert.ToInt16(MT_AbilNo.Text) >> 1; int species = Util.getIndex(CB_Species); int formnum = CB_Form.SelectedIndex; - byte[] abils = Legal.PersonalAO[Legal.PersonalAO[species].FormeIndex(species, formnum)].Abilities; + int[] abils = PersonalTable.AO.getAbilities(species, formnum); // Build Ability List List ability_list = new List @@ -428,7 +429,7 @@ private void setAbilityList() private void setForms() { int species = Util.getIndex(CB_Species); - bool hasForms = Legal.PersonalAO[species].HasFormes || new[] { 664, 665, 414 }.Contains(species); + bool hasForms = PersonalTable.AO[species].HasFormes || new[] { 664, 665, 414 }.Contains(species); CB_Form.Enabled = CB_Form.Visible = hasForms; CB_Form.DisplayMember = "Text"; @@ -443,7 +444,7 @@ private void updateSpecies(object sender, EventArgs e) // Check for Gender Changes // Get Gender Threshold - int gt = PKX.Personal[Util.getIndex(CB_Species)].Gender; + int gt = SAV.Personal[Util.getIndex(CB_Species)].Gender; if (gt == 255) // Genderless genderflag = 2; @@ -468,7 +469,7 @@ private void updateForm(object sender, EventArgs e) private void Label_Gender_Click(object sender, EventArgs e) { // Get Gender Threshold - int gt = PKX.Personal[Util.getIndex(CB_Species)].Gender; + int gt = SAV.Personal[Util.getIndex(CB_Species)].Gender; if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless return; diff --git a/Subforms/Save Editors/Gen6/SAV_SecretBase.resx b/Subforms/Save Editors/Gen6/SAV_SecretBase.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/Save Editors/Gen6/SAV_SecretBase.resx @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE + AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq + KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+ + vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li + 4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg + 4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly + 8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz + 8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v// + //+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P + Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA + Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK + k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF + Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P + aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N + pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT + vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV + yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ + yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq + rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB + AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY + GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e + HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq + quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq + quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY + 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY + 2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra + 2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc + 3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna + 2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg + 4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ + WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li + 4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA + AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk + 5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb + 2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl + 5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh + 4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm + 5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk + 4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn + 5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn + 5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn + 5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq + 6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn + 5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA + AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl + 5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR + 0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA + AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk + 5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG + RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn + 5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC + LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC + K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ + rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK + s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL + p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC + Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK + ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE + UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA + AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA + AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER + w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL + pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER + wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P + tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT + wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER + vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV + wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV + wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV + xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW + yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV + x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY + zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl + eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX + zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA + AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ + zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA + AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws + p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb + ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB////// + + + \ No newline at end of file diff --git a/SAV/SAV_SuperTrain.Designer.cs b/Subforms/Save Editors/Gen6/SAV_SuperTrain.Designer.cs similarity index 100% rename from SAV/SAV_SuperTrain.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_SuperTrain.Designer.cs diff --git a/SAV/SAV_SuperTrain.cs b/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs similarity index 86% rename from SAV/SAV_SuperTrain.cs rename to Subforms/Save Editors/Gen6/SAV_SuperTrain.cs index 69263f969..7623628f9 100644 --- a/SAV/SAV_SuperTrain.cs +++ b/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs @@ -24,18 +24,7 @@ public SAV_SuperTrain() } private readonly SAV6 SAV = new SAV6(Main.SAV.Data); - private readonly string[] trba = { - "Empty", - "HP Bag S","HP Bag M","HP Bag L", - "ATK Bag S","ATK Bag M","ATK Bag L", - "DEF Bag S","DEF Bag M","DEF Bag L", - "SpA Bag S","SpA Bag M","SpA Bag L", - "SpD Bag S","SpD Bag M","SpD Bag L", - "Speed Bag S","Speed Bag M","Speed Bag L", - "Strength Bag","Toughen Up Bag","Swiftness Bag", - "Big-Shot Bag","Double-Up Bag","Team Flare Bag", - "Reset Bag","Soothing Bag", - }; + private readonly string[] trba; private readonly int offsetVal; private readonly int offsetTime; private readonly int offsetSpec; @@ -46,11 +35,11 @@ private void setup() { CB_Species.DisplayMember = "Text"; CB_Species.ValueMember = "Value"; - CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID), null); + CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); CB_S2.DisplayMember = "Text"; CB_S2.ValueMember = "Value"; - CB_S2.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID), null); + CB_S2.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); } listBox1.SelectedIndex = 0; fillTrainingBags(); diff --git a/Subforms/Save Editors/Gen6/SAV_SuperTrain.resx b/Subforms/Save Editors/Gen6/SAV_SuperTrain.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/Save Editors/Gen6/SAV_SuperTrain.resx @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE + AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq + KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+ + vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li + 4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg + 4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly + 8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz + 8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v// + //+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P + Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA + Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK + k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF + Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P + aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N + pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT + vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV + yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ + yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq + rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB + AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY + GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e + HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq + quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq + quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY + 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY + 2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra + 2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc + 3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna + 2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg + 4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ + WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li + 4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA + AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk + 5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb + 2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl + 5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh + 4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm + 5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk + 4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn + 5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn + 5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn + 5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq + 6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn + 5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA + AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl + 5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR + 0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA + AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk + 5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG + RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn + 5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC + LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC + K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ + rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK + s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL + p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC + Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK + ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE + UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA + AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA + AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER + w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL + pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER + wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P + tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT + wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER + vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV + wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV + wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV + xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW + yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV + x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY + zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl + eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX + zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA + AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ + zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA + AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws + p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb + ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB////// + + + \ No newline at end of file diff --git a/SAV/SAV_Trainer.Designer.cs b/Subforms/Save Editors/Gen6/SAV_Trainer.Designer.cs similarity index 99% rename from SAV/SAV_Trainer.Designer.cs rename to Subforms/Save Editors/Gen6/SAV_Trainer.Designer.cs index 736bf6990..401b769f7 100644 --- a/SAV/SAV_Trainer.Designer.cs +++ b/Subforms/Save Editors/Gen6/SAV_Trainer.Designer.cs @@ -1669,7 +1669,6 @@ private void InitializeComponent() // CB_Vivillon // this.CB_Vivillon.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.CB_Vivillon.Enabled = false; this.CB_Vivillon.FormattingEnabled = true; this.CB_Vivillon.Location = new System.Drawing.Point(287, 73); this.CB_Vivillon.Name = "CB_Vivillon"; diff --git a/SAV/SAV_Trainer.cs b/Subforms/Save Editors/Gen6/SAV_Trainer.cs similarity index 98% rename from SAV/SAV_Trainer.cs rename to Subforms/Save Editors/Gen6/SAV_Trainer.cs index fbf2da068..d106096cd 100644 --- a/SAV/SAV_Trainer.cs +++ b/Subforms/Save Editors/Gen6/SAV_Trainer.cs @@ -18,6 +18,9 @@ public SAV_Trainer() Util.TranslateInterface(this, Main.curlanguage); B_MaxCash.Click += (sender, e) => MT_Money.Text = "9,999,999"; + CB_Gender.Items.Clear(); + CB_Gender.Items.AddRange(Main.gendersymbols.Take(2).ToArray()); // m/f depending on unicode selection + MaisonRecords = new[] { TB_MCSN,TB_MCSS,TB_MBSN,TB_MBSS, @@ -560,7 +563,7 @@ private void showTSV(object sender, EventArgs e) { uint TID = Util.ToUInt32(MT_TID.Text); uint SID = Util.ToUInt32(MT_SID.Text); - uint tsv = PKX.getTSV(TID, SID); + uint tsv = (TID ^ SID) >> 4; Tip1.SetToolTip(MT_TID, "TSV: " + tsv.ToString("0000")); Tip2.SetToolTip(MT_SID, "TSV: " + tsv.ToString("0000")); } @@ -583,7 +586,7 @@ private void changeBadge(object sender, EventArgs e) private void changeSpecial(object sender, EventArgs e) { MaskedTextBox box = sender as MaskedTextBox; - int val = Util.ToInt32(box.Text); + int val = Util.ToInt32(box?.Text); if (box == MT_HairColor) box.Text = (val > 7 ? 7 : val).ToString(); @@ -593,13 +596,13 @@ private void changeSpecial(object sender, EventArgs e) private void change255(object sender, EventArgs e) { MaskedTextBox box = sender as MaskedTextBox; - if (box.Text == "") box.Text = "0"; + if (box?.Text == "") box.Text = "0"; if (Util.ToInt32(box.Text) > 255) box.Text = "255"; } private void changeFFFF(object sender, EventArgs e) { MaskedTextBox box = sender as MaskedTextBox; - if (box.Text == "") box.Text = "0"; + if (box?.Text == "") box.Text = "0"; if (Util.ToInt32(box.Text) > 65535) box.Text = "65535"; } private void changeStat(object sender, EventArgs e) diff --git a/Subforms/Save Editors/Gen6/SAV_Trainer.resx b/Subforms/Save Editors/Gen6/SAV_Trainer.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/Save Editors/Gen6/SAV_Trainer.resx @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE + AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq + KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+ + vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li + 4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg + 4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly + 8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz + 8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v// + //+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P + Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA + Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK + k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF + Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P + aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N + pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT + vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV + yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ + yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq + rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB + AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY + GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e + HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq + quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq + quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY + 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY + 2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra + 2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc + 3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna + 2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg + 4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ + WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li + 4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA + AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk + 5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb + 2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl + 5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh + 4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm + 5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk + 4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn + 5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn + 5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn + 5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq + 6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn + 5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA + AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl + 5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR + 0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA + AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk + 5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG + RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn + 5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC + LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC + K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ + rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK + s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL + p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC + Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK + ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE + UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA + AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA + AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER + w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL + pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER + wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P + tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT + wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER + vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV + wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV + wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV + xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW + yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV + x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY + zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl + eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX + zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA + AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ + zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA + AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws + p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb + ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB////// + + + \ No newline at end of file diff --git a/SAV/SAV_EventFlags.Designer.cs b/Subforms/Save Editors/SAV_EventFlags.Designer.cs similarity index 100% rename from SAV/SAV_EventFlags.Designer.cs rename to Subforms/Save Editors/SAV_EventFlags.Designer.cs diff --git a/SAV/SAV_EventFlags.cs b/Subforms/Save Editors/SAV_EventFlags.cs similarity index 94% rename from SAV/SAV_EventFlags.cs rename to Subforms/Save Editors/SAV_EventFlags.cs index d1fe152b4..006653a9c 100644 --- a/SAV/SAV_EventFlags.cs +++ b/Subforms/Save Editors/SAV_EventFlags.cs @@ -23,11 +23,18 @@ public SAV_EventFlags() for (int i = 0; i < Constants.Length; i++) CB_Stats.Items.Add(i.ToString()); + TLP_Flags.SuspendLayout(); + TLP_Const.SuspendLayout(); + TLP_Flags.Scroll += Util.PanelScroll; + TLP_Const.Scroll += Util.PanelScroll; TLP_Flags.Controls.Clear(); TLP_Const.Controls.Clear(); addFlagList(getStringList("flags")); addConstList(getStringList("const")); + TLP_Flags.ResumeLayout(); + TLP_Const.ResumeLayout(); + Util.TranslateInterface(this, Main.curlanguage); CB_Stats.SelectedIndex = 0; @@ -52,14 +59,14 @@ private void B_Cancel_Click(object sender, EventArgs e) private void B_Save_Click(object sender, EventArgs e) { // Gather Updated Flags - foreach (CheckBox flag in TLP_Flags.Controls) + foreach (CheckBox flag in TLP_Flags.Controls.OfType()) flags[getControlNum(flag)] = flag.Checked; SAV.EventFlags = flags; // Copy back Constants changeConstantIndex(null, null); // Trigger Saving SAV.EventConsts = Constants; - + Array.Copy(SAV.Data, Main.SAV.Data, SAV.Data.Length); Close(); } @@ -119,6 +126,7 @@ private void addFlagList(string[] list) AutoSize = true }; chk.CheckStateChanged += toggleFlag; + lbl.Click += (sender, e) => { chk.Checked ^= true; }; TLP_Flags.Controls.Add(chk, 0, i); TLP_Flags.Controls.Add(lbl, 1, i); } @@ -293,8 +301,8 @@ private void diffSaves() SaveFile s1 = SaveUtil.getVariantSAV(File.ReadAllBytes(TB_OldSAV.Text)); SaveFile s2 = SaveUtil.getVariantSAV(File.ReadAllBytes(TB_NewSAV.Text)); - if (s1.GetType() != s2.GetType()) - { Util.Alert("Save types are different.", $"S1: {s1.GetType()}", $"S2: {s2.GetType()}"); return; } + if (s1.GetType() != s2.GetType()) { Util.Alert("Save types are different.", $"S1: {s1.GetType()}", $"S2: {s2.GetType()}"); return; } + if (s1.Version != s2.Version) { Util.Alert("Save versions are different.", $"S1: {s1.Version}", $"S2: {s2.Version}"); return; } string tbIsSet = ""; string tbUnSet = ""; diff --git a/Subforms/Save Editors/SAV_EventFlags.resx b/Subforms/Save Editors/SAV_EventFlags.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/Save Editors/SAV_EventFlags.resx @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE + AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq + KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+ + vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li + 4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg + 4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly + 8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz + 8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v// + //+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P + Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA + Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK + k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF + Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P + aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N + pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT + vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV + yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ + yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq + rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB + AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY + GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e + HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq + quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq + quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY + 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY + 2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra + 2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc + 3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna + 2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg + 4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ + WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li + 4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA + AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk + 5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb + 2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl + 5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh + 4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm + 5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk + 4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn + 5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn + 5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn + 5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq + 6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn + 5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA + AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl + 5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR + 0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA + AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk + 5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG + RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn + 5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC + LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC + K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ + rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK + s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL + p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC + Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK + ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE + UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA + AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA + AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER + w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL + pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER + wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P + tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT + wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER + vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV + wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV + wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV + xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW + yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV + x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY + zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl + eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX + zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA + AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ + zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA + AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws + p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb + ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB////// + + + \ No newline at end of file diff --git a/SAV/SAV_Inventory.Designer.cs b/Subforms/Save Editors/SAV_Inventory.Designer.cs similarity index 100% rename from SAV/SAV_Inventory.Designer.cs rename to Subforms/Save Editors/SAV_Inventory.Designer.cs diff --git a/SAV/SAV_Inventory.cs b/Subforms/Save Editors/SAV_Inventory.cs similarity index 89% rename from SAV/SAV_Inventory.cs rename to Subforms/Save Editors/SAV_Inventory.cs index 63cf17f44..b9094f50a 100644 --- a/SAV/SAV_Inventory.cs +++ b/Subforms/Save Editors/SAV_Inventory.cs @@ -10,7 +10,7 @@ public SAV_Inventory() { InitializeComponent(); Util.TranslateInterface(this, Main.curlanguage); - + itemlist = SAV.Generation == 3 ? Main.g3items : Main.itemlist; Pouches = SAV.Inventory; getBags(); } @@ -110,7 +110,7 @@ private void spillBag(DataGridView dgv, int bag) for (int i = 0; i < pouch.Items.Length; i++) { int itemvalue = pouch.Items[i].Index; - try { itemname = Main.itemlist[itemvalue]; } + try { itemname = itemlist[itemvalue]; } catch { Util.Error("Unknown item detected.", "Item ID: " + itemvalue, "Item is after: " + itemname); @@ -136,16 +136,16 @@ private void spillBag(DataGridView dgv, int bag) } private void packBags() { - for (int p = 0; p < Pouches.Length; p++) + foreach (InventoryPouch t in Pouches) { // Get DataGridView - DataGridView dgv = Controls.Find(DGVPrefix + Pouches[p].Type, true).FirstOrDefault() as DataGridView; + DataGridView dgv = Controls.Find(DGVPrefix + t.Type, true).FirstOrDefault() as DataGridView; int ctr = 0; for (int i = 0; i < dgv.Rows.Count; i++) { string item = dgv.Rows[i].Cells[0].Value.ToString(); - int itemindex = Array.IndexOf(Main.itemlist, item); + int itemindex = Array.IndexOf(itemlist, item); int itemcnt; try { itemcnt = Convert.ToUInt16(dgv.Rows[i].Cells[1].Value.ToString()); } @@ -159,20 +159,21 @@ private void packBags() if (itemindex == 0) // Compression of Empty Slots continue; - Pouches[p].Items[ctr++] = new InventoryItem {Index = itemindex, Count = itemcnt}; + t.Items[ctr++] = new InventoryItem {Index = itemindex, Count = itemcnt}; } - for (int i = ctr; i < Pouches[p].Items.Length; i++) - Pouches[p].Items[i] = new InventoryItem(); // Empty Slots at the end + for (int i = ctr; i < t.Items.Length; i++) + t.Items[i] = new InventoryItem(); // Empty Slots at the end } } // Initialize String Tables + private readonly string[] itemlist; private string[] getItems(ushort[] items, bool sort = true) { string[] res = new string[items.Length + 1]; for (int i = 0; i < res.Length - 1; i++) - res[i] = Main.itemlist[items[i]]; - res[items.Length] = Main.itemlist[0]; + res[i] = itemlist[items[i]]; + res[items.Length] = itemlist[0]; if (sort) Array.Sort(res); return res; @@ -194,7 +195,7 @@ private void B_GiveAll_Click(object sender, EventArgs e) { for (int i = 0; i < legalitems.Length; i++) { - dgv.Rows[i].Cells[0].Value = Main.itemlist[0]; + dgv.Rows[i].Cells[0].Value = itemlist[0]; dgv.Rows[i].Cells[1].Value = 0; } Util.Alert("Items cleared."); @@ -211,12 +212,12 @@ private void B_GiveAll_Click(object sender, EventArgs e) switch (SAV.Generation) { case 3: { - itemname = Main.itemlist[item]; + itemname = itemlist[item]; if (Legal.Pouch_HM_RS.Contains(legalitems[i])) c = 1; break; } default: { - itemname = Main.itemlist[item]; + itemname = itemlist[item]; if (new[] { 420, 421, 422, 423, 423, 424, 425, 426, 427, 737 }.Contains(legalitems[i])) c = 1; break; } diff --git a/SAV/SAV_Inventory.resx b/Subforms/Save Editors/SAV_Inventory.resx similarity index 100% rename from SAV/SAV_Inventory.resx rename to Subforms/Save Editors/SAV_Inventory.resx diff --git a/SAV/SAV_SimpleTrainer.Designer.cs b/Subforms/Save Editors/SAV_SimpleTrainer.Designer.cs similarity index 99% rename from SAV/SAV_SimpleTrainer.Designer.cs rename to Subforms/Save Editors/SAV_SimpleTrainer.Designer.cs index 5ccfc3300..111a04802 100644 --- a/SAV/SAV_SimpleTrainer.Designer.cs +++ b/Subforms/Save Editors/SAV_SimpleTrainer.Designer.cs @@ -673,6 +673,7 @@ private void InitializeComponent() this.Controls.Add(this.GB_Adventure); this.MinimumSize = new System.Drawing.Size(400, 300); this.Name = "SAV_SimpleTrainer"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Trainer Data Editor"; this.GB_Adventure.ResumeLayout(false); this.GB_Adventure.PerformLayout(); diff --git a/SAV/SAV_SimpleTrainer.cs b/Subforms/Save Editors/SAV_SimpleTrainer.cs similarity index 97% rename from SAV/SAV_SimpleTrainer.cs rename to Subforms/Save Editors/SAV_SimpleTrainer.cs index 59fd633e6..cd77cf21f 100644 --- a/SAV/SAV_SimpleTrainer.cs +++ b/Subforms/Save Editors/SAV_SimpleTrainer.cs @@ -15,6 +15,9 @@ public SAV_SimpleTrainer() TB_OTName.MaxLength = SAV.OTLength; B_MaxCash.Click += (sender, e) => MT_Money.Text = "9,999,999"; + CB_Gender.Items.Clear(); + CB_Gender.Items.AddRange(Main.gendersymbols.Take(2).ToArray()); // m/f depending on unicode selection + TB_OTName.Text = SAV.OT; CB_Gender.SelectedIndex = SAV.Gender; MT_TID.Text = SAV.TID.ToString("00000"); diff --git a/SAV/SAV_SimpleTrainer.resx b/Subforms/Save Editors/SAV_SimpleTrainer.resx similarity index 100% rename from SAV/SAV_SimpleTrainer.resx rename to Subforms/Save Editors/SAV_SimpleTrainer.resx diff --git a/SAV/SAV_Wondercard.Designer.cs b/Subforms/Save Editors/SAV_Wondercard.Designer.cs similarity index 100% rename from SAV/SAV_Wondercard.Designer.cs rename to Subforms/Save Editors/SAV_Wondercard.Designer.cs diff --git a/SAV/SAV_Wondercard.cs b/Subforms/Save Editors/SAV_Wondercard.cs similarity index 91% rename from SAV/SAV_Wondercard.cs rename to Subforms/Save Editors/SAV_Wondercard.cs index 2bac31c6d..6dd953b6f 100644 --- a/SAV/SAV_Wondercard.cs +++ b/Subforms/Save Editors/SAV_Wondercard.cs @@ -37,6 +37,17 @@ public SAV_Wondercard(MysteryGift g = null) if (mga.Gifts.Length < 19) L_r4.Visible = false; + if (SAV.Generation == 4) // pgt & pcd, split up + { + PB_Card09.Location = PB_Card19.Location; + PB_Card10.Location = PB_Card20.Location; + PB_Card11.Location = PB_Card21.Location; + L_r4.Visible = true; + L_r1.Text = "PGT 1-6"; + L_r2.Text = "PGT 7-8"; + L_r4.Text = "PCD 1-3"; + } + setGiftBoxes(); getReceivedFlags(); @@ -75,7 +86,8 @@ private void viewGiftData(MysteryGift g) { try { - if (g.GiftUsed && DialogResult.Yes == + // only check if the form is visible (not opening) + if (Visible && g.GiftUsed && DialogResult.Yes == Util.Prompt(MessageBoxButtons.YesNo, "Wonder Card is marked as USED and will not be able to be picked up in-game.", "Do you want to remove the USED flag so that it is UNUSED?")) @@ -284,32 +296,35 @@ private bool checkSpecialWonderCard(MysteryGift g) private void L_QR_Click(object sender, EventArgs e) { - if (SAV.Generation != 6) - { - Util.Alert("Feature not available for non Gen6 games."); - return; - } if (ModifierKeys == Keys.Alt) { byte[] data = QR.getQRData(); if (data == null) return; - if (data.Length != WC6.Size) { Util.Alert($"Decoded data not 0x{WC6.Size.ToString("X")} bytes.", - $"QR Data Size: 0x{data.Length.ToString("X")}"); } - else try { viewGiftData(new WC6(data)); } - catch { Util.Alert("Error loading wondercard data."); } + + string[] types = mga.Gifts.Select(g => g.GetType().Name).Distinct().ToArray(); + MysteryGift gift = MysteryGift.getMysteryGift(data); + string giftType = gift.GetType().Name; + + if (mga.Gifts.All(card => card.Data.Length != data.Length)) + Util.Alert("Decoded data not valid for loaded save file.", $"QR Data Size: 0x{data.Length.ToString("X")}"); + else if (types.All(type => type != giftType)) + Util.Alert("Gift type is not compatible with the save file.", $"QR Gift Type: {gift.GetType().Name}" + Environment.NewLine + $"Expected Types: {string.Join(", ", types)}"); + else + try { viewGiftData(gift); } + catch { Util.Alert("Error loading Mystery Gift data."); } } else { if (mg.Data.SequenceEqual(new byte[mg.Data.Length])) { Util.Alert("No wondercard data found in loaded slot!"); return; } - if (mg.Item == 726 && mg.IsItem) + if (SAV.Generation == 6 && mg.Item == 726 && mg.IsItem) { Util.Alert("Eon Ticket Wonder Cards will not function properly", "Inject to the save file instead."); return; } const string server = "http://lunarcookies.github.io/wc.html#"; Image qr = QR.getQRImage(mg.Data, server); if (qr == null) return; - string desc = getDescription(mg); + string desc = $"({mg.GetType().Name}) {getDescription(mg)}"; new QR(qr, PB_Preview.Image, desc, "", "", "PKHeX Wonder Card @ ProjectPokemon.org").ShowDialog(); } diff --git a/SAV/SAV_Wondercard.resx b/Subforms/Save Editors/SAV_Wondercard.resx similarity index 100% rename from SAV/SAV_Wondercard.resx rename to Subforms/Save Editors/SAV_Wondercard.resx diff --git a/SAV/frmReport.Designer.cs b/Subforms/frmReport.Designer.cs similarity index 100% rename from SAV/frmReport.Designer.cs rename to Subforms/frmReport.Designer.cs diff --git a/SAV/frmReport.cs b/Subforms/frmReport.cs similarity index 91% rename from SAV/frmReport.cs rename to Subforms/frmReport.cs index 5ed00dc3f..7004595a4 100644 --- a/SAV/frmReport.cs +++ b/Subforms/frmReport.cs @@ -30,15 +30,15 @@ public class Preview public string Move3 => Main.movelist[pkm.Move3]; public string Move4 => Main.movelist[pkm.Move4]; public string HeldItem => Main.itemlist[pkm.HeldItem]; - public string MetLoc => PKX.getLocation(pkm, egg: false); - public string EggLoc => PKX.getLocation(pkm, egg: true); + public string MetLoc => PKX.getLocation(pkm, eggmet: false); + public string EggLoc => PKX.getLocation(pkm, eggmet: true); public string Ball => Main.balllist[pkm.Ball]; public string OT => pkm.OT_Name; public string Version => Main.gamelist[pkm.Version]; public string OTLang => Main.gamelanguages[pkm.Language] ?? $"UNK {pkm.Language}"; - public string CountryID => pkm.Format > 5 ? (pkm as PK6).Country.ToString() : "N/A"; - public string RegionID => pkm.Format > 5 ? (pkm as PK6).Region.ToString() : "N/A"; - public string DSRegionID => pkm.Format > 5 ? (pkm as PK6).ConsoleRegion.ToString() : "N/A"; + public string CountryID => pkm.Format > 5 ? ((PK6) pkm).Country.ToString() : "N/A"; + public string RegionID => pkm.Format > 5 ? ((PK6) pkm).Region.ToString() : "N/A"; + public string DSRegionID => pkm.Format > 5 ? ((PK6) pkm).ConsoleRegion.ToString() : "N/A"; #region Extraneous public string EC => pkm.EncryptionConstant.ToString("X8"); @@ -65,9 +65,9 @@ public class Preview public int Sheen => pkm.CNT_Sheen; public int Markings => pkm.MarkByte; - public string NotOT => pkm.Format > 5 ? (pkm as PK6).HT_Name : "N/A"; + public string NotOT => pkm.Format > 5 ? ((PK6) pkm).HT_Name : "N/A"; - public int AbilityNum => pkm.Format > 5 ? (pkm as PK6).AbilityNumber : -1; + public int AbilityNum => pkm.Format > 5 ? ((PK6) pkm).AbilityNumber : -1; public int GenderFlag => pkm.Gender; public int AltForms => pkm.AltForm; public int PKRS_Strain => pkm.PKRS_Strain; @@ -115,12 +115,9 @@ public frmReport() dgData.DoubleBuffered(true); CenterToParent(); } - public void PopulateData(SaveFile SAV) - { - PopulateData(SAV.BoxData); - } public void PopulateData(PKM[] Data) { + SuspendLayout(); BoxBar.Step = 1; PokemonList PL = new PokemonList(); foreach (PKM pkm in Data.Where(pkm => pkm.ChecksumValid && pkm.Species != 0)) @@ -140,6 +137,7 @@ public void PopulateData(PKM[] Data) dgData.Columns[i].SortMode = DataGridViewColumnSortMode.Automatic; } BoxBar.Visible = false; + ResumeLayout(); } private void promptSaveCSV(object sender, FormClosingEventArgs e) { @@ -159,13 +157,11 @@ private void Export_CSV(string path) var sb = new StringBuilder(); var headers = dgData.Columns.Cast(); - sb.AppendLine(string.Join(",", headers.Select(column => "\"" + column.HeaderText + "\"").ToArray())); + sb.AppendLine(string.Join(",", headers.Select(column => $"\"{column.HeaderText}\""))); + + foreach (var cells in from DataGridViewRow row in dgData.Rows select row.Cells.Cast()) + sb.AppendLine(string.Join(",", cells.Select(cell => $"\"{cell.Value}\""))); - foreach (DataGridViewRow row in dgData.Rows) - { - var cells = row.Cells.Cast(); - sb.AppendLine(string.Join(",", cells.Select(cell => "\"" + cell.Value + "\"").ToArray())); - } File.WriteAllText(path, sb.ToString(), Encoding.UTF8); } diff --git a/Subforms/frmReport.resx b/Subforms/frmReport.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/frmReport.resx @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE + AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq + KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+ + vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li + 4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg + 4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly + 8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz + 8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v// + //+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P + Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA + Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK + k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF + Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P + aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N + pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT + vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV + yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ + yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq + rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB + AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY + GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e + HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq + quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq + quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY + 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY + 2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra + 2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc + 3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna + 2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg + 4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ + WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li + 4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA + AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk + 5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb + 2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl + 5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh + 4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm + 5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk + 4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn + 5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn + 5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn + 5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq + 6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn + 5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA + AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl + 5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR + 0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA + AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk + 5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG + RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn + 5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC + LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC + K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ + rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK + s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL + p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC + Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK + ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE + UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA + AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA + AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER + w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL + pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER + wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P + tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT + wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER + vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV + wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV + wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV + xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW + yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV + x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY + zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl + eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX + zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA + AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ + zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA + AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws + p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb + ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB////// + + + \ No newline at end of file diff --git a/Util/DataUtil.cs b/Util/DataUtil.cs new file mode 100644 index 000000000..86ffbf8cb --- /dev/null +++ b/Util/DataUtil.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace PKHeX +{ + public partial class Util + { + + /// + /// Gets a list of all Pokémon species names. + /// + /// Language of the Pokémon species names to select (e.g. "en", "fr", "jp", etc.) + /// An array of strings whose indexes correspond to the IDs of each Pokémon species name. + public static string[] getSpeciesList(string language) + { + return getStringList("species", language); + } + + /// + /// Gets a list of all move names. + /// + /// Language of the move names to select (e.g. "en", "fr", "jp", etc.) + /// An array of strings whose indexes correspond to the IDs of each move name. + public static string[] getMovesList(string language) + { + return getStringList("moves", language); + } + + /// + /// Gets a list of all Pokémon ability names. + /// + /// Language of the Pokémon ability names to select (e.g. "en", "fr", "jp", etc.) + /// An array of strings whose indexes correspond to the IDs of each Pokémon ability name. + public static string[] getAbilitiesList(string language) + { + return getStringList("abilities", language); + } + + public static string[] getStringList(string f) + { + object txt = Properties.Resources.ResourceManager.GetObject(f); // Fetch File, \n to list. + if (txt == null) return new string[0]; + string[] rawlist = ((string)txt).Split('\n'); + for (int i = 0; i < rawlist.Length; i++) + rawlist[i] = rawlist[i].Trim(); + return rawlist; + } + public static string[] getStringList(string f, string l) + { + object txt = Properties.Resources.ResourceManager.GetObject("text_" + f + "_" + l); // Fetch File, \n to list. + if (txt == null) return new string[0]; + string[] rawlist = ((string)txt).Split('\n'); + for (int i = 0; i < rawlist.Length; i++) + rawlist[i] = rawlist[i].Trim(); + return rawlist; + } + internal static string[] getNulledStringArray(string[] SimpleStringList) + { + try + { + string[] newlist = new string[ToInt32(SimpleStringList[SimpleStringList.Length - 1].Split(',')[0]) + 1]; + for (int i = 1; i < SimpleStringList.Length; i++) + newlist[ToInt32(SimpleStringList[i].Split(',')[0])] = SimpleStringList[i].Split(',')[1]; + return newlist; + } + catch { return null; } + } + + // DataSource Providing + internal static List getCBList(string textfile, string lang) + { + // Set up + string[] inputCSV = getStringList(textfile); + + // Get Language we're fetching for + int index = Array.IndexOf(new[] { "ja", "en", "fr", "de", "it", "es", "ko", "zh", }, lang); + + // Set up our Temporary Storage + string[] unsortedList = new string[inputCSV.Length - 1]; + int[] indexes = new int[inputCSV.Length - 1]; + + // Gather our data from the input file + for (int i = 1; i < inputCSV.Length; i++) + { + string[] countryData = inputCSV[i].Split(','); + indexes[i - 1] = Convert.ToInt32(countryData[0]); + unsortedList[i - 1] = countryData[index + 1]; + } + + // Sort our input data + string[] sortedList = new string[inputCSV.Length - 1]; + Array.Copy(unsortedList, sortedList, unsortedList.Length); + Array.Sort(sortedList); + + // Arrange the input data based on original number + return sortedList.Select(s => new ComboItem + { + Text = s, + Value = indexes[Array.IndexOf(unsortedList, s)] + }).ToList(); + } + internal static List getCBList(string[] inStrings, params int[][] allowed) + { + List cbList = new List(); + if (allowed?.First() == null) + allowed = new[] { Enumerable.Range(0, inStrings.Length).ToArray() }; + + foreach (int[] list in allowed) + { + // Sort the Rest based on String Name + string[] unsortedChoices = new string[list.Length]; + for (int i = 0; i < list.Length; i++) + unsortedChoices[i] = inStrings[list[i]]; + + string[] sortedChoices = new string[unsortedChoices.Length]; + Array.Copy(unsortedChoices, sortedChoices, unsortedChoices.Length); + Array.Sort(sortedChoices); + + // Add the rest of the items + cbList.AddRange(sortedChoices.Select(s => new ComboItem + { + Text = s, + Value = list[Array.IndexOf(unsortedChoices, s)] + })); + } + return cbList; + } + internal static List getOffsetCBList(List cbList, string[] inStrings, int offset, int[] allowed) + { + if (allowed == null) + allowed = Enumerable.Range(0, inStrings.Length).ToArray(); + + int[] list = (int[])allowed.Clone(); + for (int i = 0; i < list.Length; i++) + list[i] -= offset; + + // Sort the Rest based on String Name + string[] unsortedChoices = new string[allowed.Length]; + for (int i = 0; i < allowed.Length; i++) + unsortedChoices[i] = inStrings[list[i]]; + + string[] sortedChoices = new string[unsortedChoices.Length]; + Array.Copy(unsortedChoices, sortedChoices, unsortedChoices.Length); + Array.Sort(sortedChoices); + + // Add the rest of the items + cbList.AddRange(sortedChoices.Select(s => new ComboItem + { + Text = s, + Value = allowed[Array.IndexOf(unsortedChoices, s)] + })); + return cbList; + } + internal static List getVariedCBList(string[] inStrings, int[] stringNum, int[] stringVal) + { + // Set up + List newlist = new List(); + + for (int i = 4; i > 1; i--) // add 4,3,2 + { + // First 3 Balls are always first + ComboItem ncbi = new ComboItem + { + Text = inStrings[i], + Value = i + }; + newlist.Add(ncbi); + } + + // Sort the Rest based on String Name + string[] ballnames = new string[stringNum.Length]; + for (int i = 0; i < stringNum.Length; i++) + ballnames[i] = inStrings[stringNum[i]]; + + string[] sortedballs = new string[stringNum.Length]; + Array.Copy(ballnames, sortedballs, ballnames.Length); + Array.Sort(sortedballs); + + // Add the rest of the balls + newlist.AddRange(sortedballs.Select(s => new ComboItem + { + Text = s, + Value = stringVal[Array.IndexOf(ballnames, s)] + })); + return newlist; + } + internal static List getUnsortedCBList(string textfile) + { + // Set up + List cbList = new List(); + string[] inputCSV = getStringList(textfile); + + // Gather our data from the input file + for (int i = 1; i < inputCSV.Length; i++) + { + string[] inputData = inputCSV[i].Split(','); + ComboItem ncbi = new ComboItem + { + Text = inputData[1], + Value = Convert.ToInt32(inputData[0]) + }; + cbList.Add(ncbi); + } + return cbList; + } + } +} diff --git a/Util/FormUtil.cs b/Util/FormUtil.cs new file mode 100644 index 000000000..c76a198d9 --- /dev/null +++ b/Util/FormUtil.cs @@ -0,0 +1,156 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Windows.Forms; + +namespace PKHeX +{ + public partial class Util + { + // Form Translation + internal static void TranslateInterface(Control form, string lang) + { + // Check to see if a the translation file exists in the same folder as the executable + string externalLangPath = "lang_" + lang + ".txt"; + string[] rawlist; + if (File.Exists(externalLangPath)) + rawlist = File.ReadAllLines(externalLangPath); + else + { + object txt = Properties.Resources.ResourceManager.GetObject("lang_" + lang); + if (txt == null) return; // Translation file does not exist as a resource; abort this function and don't translate UI. + rawlist = ((string)txt).Split(new[] { "\n" }, StringSplitOptions.None); + rawlist = rawlist.Select(i => i.Trim()).ToArray(); // Remove trailing spaces + } + + List stringdata = new List(); + int start = -1; + for (int i = 0; i < rawlist.Length; i++) + { + // Find our starting point + if (!rawlist[i].Contains("! " + form.Name)) continue; + start = i; + break; + } + if (start < 0) + return; + + // Rename Window Title + string[] WindowName = rawlist[start].Split(new[] { " = " }, StringSplitOptions.None); + if (WindowName.Length > 1) form.Text = WindowName[1]; + + // Fetch controls to rename + for (int i = start + 1; i < rawlist.Length; i++) + { + if (rawlist[i].Length == 0) continue; // Skip Over Empty Lines, errhandled + if (rawlist[i][0] == '-') continue; // Keep translating if line is a comment line + if (rawlist[i][0] == '!') // Stop if we have reached the end of translation + break; + stringdata.Add(rawlist[i]); // Add the entry to process later. + } + + if (stringdata.Count == 0) + return; + + // Find control then change display Text. + form.SuspendLayout(); + foreach (string str in stringdata) + { + string[] SplitString = str.Split(new[] { " = " }, StringSplitOptions.None); + if (SplitString.Length < 2) + continue; + + object c = FindControl(SplitString[0], form.Controls); // Find control within Form's controls + if (c == null) // Not found + continue; + + string text = SplitString[1]; // Text to set Control.Text to... + + if (c is Control) + (c as Control).Text = text; + else if (c is ToolStripItem) + (c as ToolStripItem).Text = text; + } + form.ResumeLayout(); + } + private static object FindControl(string name, Control.ControlCollection c) + { + Control control = c.Find(name, true).FirstOrDefault(); + if (control != null) + return control; + foreach (MenuStrip menu in c.OfType()) + { + var item = menu.Items.Find(name, true).FirstOrDefault(); + if (item != null) + return item; + } + foreach (ContextMenuStrip strip in FindContextMenuStrips(c.OfType())) + { + var item = strip.Items.Find(name, true).FirstOrDefault(); + if (item != null) + return item; + } + return null; + } + private static List FindContextMenuStrips(IEnumerable c) + { + List cs = new List(); + foreach (Control control in c) + { + if (control.ContextMenuStrip != null) + cs.Add(control.ContextMenuStrip); + + else if (control.Controls.Count > 0) + cs.AddRange(FindContextMenuStrips(control.Controls.OfType())); + } + return cs; + } + internal static void CenterToForm(Control child, Control parent) + { + int x = parent.Location.X + (parent.Width - child.Width) / 2; + int y = parent.Location.Y + (parent.Height - child.Height) / 2; + child.Location = new Point(Math.Max(x, 0), Math.Max(y, 0)); + } + + // Message Displays + internal static DialogResult Error(params string[] lines) + { + System.Media.SystemSounds.Exclamation.Play(); + string msg = string.Join(Environment.NewLine + Environment.NewLine, lines); + return MessageBox.Show(msg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + internal static DialogResult Alert(params string[] lines) + { + System.Media.SystemSounds.Asterisk.Play(); + string msg = string.Join(Environment.NewLine + Environment.NewLine, lines); + return MessageBox.Show(msg, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + internal static DialogResult Prompt(MessageBoxButtons btn, params string[] lines) + { + System.Media.SystemSounds.Question.Play(); + string msg = string.Join(Environment.NewLine + Environment.NewLine, lines); + return MessageBox.Show(msg, "Prompt", btn, MessageBoxIcon.Asterisk); + } + + internal static int getIndex(ComboBox cb) + { + return (int)(cb?.SelectedValue ?? 0); + } + + public static void PanelScroll(object sender, ScrollEventArgs e) + { + var p = sender as Panel; + switch (e.ScrollOrientation) + { + case ScrollOrientation.HorizontalScroll: + p.HorizontalScroll.Value = e.NewValue; + break; + case ScrollOrientation.VerticalScroll: + p.VerticalScroll.Value = e.NewValue; + break; + } + } + } +} diff --git a/Util/ImageUtil.cs b/Util/ImageUtil.cs new file mode 100644 index 000000000..cf6db53bf --- /dev/null +++ b/Util/ImageUtil.cs @@ -0,0 +1,47 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Runtime.InteropServices; + +namespace PKHeX +{ + public partial class Util + { + // Image Layering/Blending Utility + internal static Bitmap LayerImage(Image baseLayer, Image overLayer, int x, int y, double trans) + { + Bitmap img = new Bitmap(baseLayer.Width, baseLayer.Height); + using (Graphics gr = Graphics.FromImage(img)) + { + gr.DrawImage(baseLayer, new Point(0, 0)); + Bitmap o = ChangeOpacity(overLayer, trans); + gr.DrawImage(o, new Rectangle(x, y, overLayer.Width, overLayer.Height)); + } + return img; + } + internal static Bitmap ChangeOpacity(Image img, double trans) + { + if (img == null) + return null; + if (img.PixelFormat.HasFlag(PixelFormat.Indexed)) + return (Bitmap)img; + + Bitmap bmp = (Bitmap)img.Clone(); + BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); + IntPtr ptr = bmpData.Scan0; + + int len = bmp.Width * bmp.Height * 4; + byte[] data = new byte[len]; + + Marshal.Copy(ptr, data, 0, len); + + for (int i = 0; i < data.Length; i += 4) + data[i + 3] = (byte)(data[i + 3] * trans); + + Marshal.Copy(data, 0, ptr, len); + bmp.UnlockBits(bmpData); + + return bmp; + } + } +} diff --git a/Util/PathUtil.cs b/Util/PathUtil.cs new file mode 100644 index 000000000..6159fc92b --- /dev/null +++ b/Util/PathUtil.cs @@ -0,0 +1,70 @@ +using System; +using System.IO; +using System.Linq; + +namespace PKHeX +{ + public partial class Util + { + internal static string GetTempFolder() + { + return Path.Combine(Path.GetTempPath(), "3DSSE"); + } + internal static string GetCacheFolder() + { + return Path.Combine(GetBackupLocation(), "cache"); + } + internal static string GetRegistryValue(string key) + { + Microsoft.Win32.RegistryKey currentUser = Microsoft.Win32.Registry.CurrentUser; + Microsoft.Win32.RegistryKey key3 = currentUser.OpenSubKey(GetRegistryBase()); + if (key3 == null) + return null; + + string str = key3.GetValue(key) as string; + key3.Close(); + currentUser.Close(); + return str; + } + internal static string GetRegistryBase() + { + return @"SOFTWARE\CYBER Gadget\3DSSaveEditor"; + } + internal static string GetBackupLocation() + { + string registryValue = GetRegistryValue("Location"); + if (!string.IsNullOrEmpty(registryValue)) + { + Directory.CreateDirectory(registryValue); + return registryValue; + } + string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "3DSSaveBank"); + Directory.CreateDirectory(path); + return path; + } + internal static string get3DSLocation() + { + try + { + string[] DriveList = Environment.GetLogicalDrives(); + for (int i = 1; i < DriveList.Length; i++) // Skip first drive (some users still have floppy drives and would chew up time!) + { + string potentialPath = Path.Combine(DriveList[i], "Nintendo 3DS"); + if (Directory.Exists(potentialPath)) + return potentialPath; + } + } + catch { } + return null; + } + internal static string CleanFileName(string fileName) + { + return Path.GetInvalidFileNameChars().Aggregate(fileName, (current, c) => current.Replace(c.ToString(), string.Empty)); + } + internal static string TrimFromZero(string input) + { + int index = input.IndexOf('\0'); + return index < 0 ? input : input.Substring(0, index); + } + } +} diff --git a/Util/RandUtil.cs b/Util/RandUtil.cs new file mode 100644 index 000000000..0ce40a0c9 --- /dev/null +++ b/Util/RandUtil.cs @@ -0,0 +1,24 @@ +using System; + +namespace PKHeX +{ + public partial class Util + { + internal static readonly Random rand = new Random(); + internal static uint rnd32() + { + return (uint)rand.Next(1 << 30) << 2 | (uint)rand.Next(1 << 2); + } + internal static void Shuffle(T[] array) + { + int n = array.Length; + for (int i = 0; i < n; i++) + { + int r = i + (int)(rand.NextDouble() * (n - i)); + T t = array[r]; + array[r] = array[i]; + array[i] = t; + } + } + } +} diff --git a/Util/ReflectUtil.cs b/Util/ReflectUtil.cs new file mode 100644 index 000000000..f90a32dd2 --- /dev/null +++ b/Util/ReflectUtil.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace PKHeX +{ + public static class ReflectUtil + { + internal static bool GetValueEquals(object obj, string propertyName, object value) + { + PropertyInfo pi = obj.GetType().GetProperty(propertyName); + var v = pi.GetValue(obj, null); + var c = Convert.ChangeType(value, pi.PropertyType); + return v.Equals(c); + } + internal static void SetValue(object obj, string propertyName, object value) + { + PropertyInfo pi = obj.GetType().GetProperty(propertyName); + pi.SetValue(obj, Convert.ChangeType(value, pi.PropertyType), null); + } + internal static object GetValue(object obj, string propertyName) + { + PropertyInfo pi = obj.GetType().GetProperty(propertyName); + return pi.GetValue(obj, null); + } + internal static IEnumerable getPropertiesStartWithPrefix(Type type, string prefix) + { + return type.GetProperties() + .Where(p => p.Name.StartsWith(prefix)) + .Select(p => p.Name); + } + internal static IEnumerable getPropertiesCanWritePublic(Type type) + { + return type.GetProperties().Where(p => p.CanWrite && p.GetSetMethod(nonPublic: true).IsPublic).Select(p => p.Name); + } + internal static bool HasProperty(this Type type, string name) + { + return type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Any(p => p.Name == name); + } + } +} diff --git a/Util/StringUtil.cs b/Util/StringUtil.cs new file mode 100644 index 000000000..f421adb60 --- /dev/null +++ b/Util/StringUtil.cs @@ -0,0 +1,31 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public partial class Util + { + internal static int ToInt32(string value) + { + string val = value?.Replace(" ", "").Replace("_", "").Trim(); + return string.IsNullOrWhiteSpace(val) ? 0 : int.Parse(val); + } + + internal static uint ToUInt32(string value) + { + string val = value?.Replace(" ", "").Replace("_", "").Trim(); + return string.IsNullOrWhiteSpace(val) ? 0 : uint.Parse(val); + } + + internal static uint getHEXval(string s) + { + string str = getOnlyHex(s); + return string.IsNullOrWhiteSpace(str) ? 0 : Convert.ToUInt32(str, 16); + } + + internal static string getOnlyHex(string s) + { + return string.IsNullOrWhiteSpace(s) ? "0" : s.Select(char.ToUpper).Where("0123456789ABCDEF".Contains).Aggregate("", (str, c) => str + c); + } + } +}