From 795e0e005b51796372e22b4a0398fe0b53d3c0b9 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 2 Jul 2016 10:59:22 -0700 Subject: [PATCH 001/184] Fix ability display Thanks Odaxis! --- PKX/f1-Main.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 0541e7909..abc515ee1 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -1589,7 +1589,7 @@ private void setAbilityList() abilitylist[abils[1]] + " (2)", }; if (SAV.Generation >= 5) // hidden ability - ability_list.Add(abilitylist[abils[1]] + " (H)"); + ability_list.Add(abilitylist[abils[2]] + " (H)"); int curAbil = CB_Ability.SelectedIndex; CB_Ability.DataSource = ability_list; From 54bc0b320da8a66003c525a0d8b8c549a2bbf853 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 2 Jul 2016 20:24:17 -0700 Subject: [PATCH 002/184] Add PersonalInfo for gens4/5 Abstracted the PersonalInfo class to the multi-generation format. Structure hasn't changed since BW sans a few additions. --- Legality/Checks.cs | 4 +- Legality/Core.cs | 16 +++- Legality/Data.cs | 121 ------------------------- PKHeX.csproj | 11 +++ PKM/PKX.cs | 8 +- PKX/f1-Main.cs | 16 +--- PersonalInfo/PersonalInfo.cs | 151 +++++++++++++++++++++++++++++++ PersonalInfo/PersonalInfoB2W2.cs | 36 ++++++++ PersonalInfo/PersonalInfoBW.cs | 95 +++++++++++++++++++ PersonalInfo/PersonalInfoG4.cs | 89 ++++++++++++++++++ PersonalInfo/PersonalInfoORAS.cs | 36 ++++++++ PersonalInfo/PersonalInfoXY.cs | 26 ++++++ Properties/Resources.Designer.cs | 50 ++++++++++ Properties/Resources.resx | 15 +++ Resources/byte/personal_b2w2 | Bin 0 -> 53884 bytes Resources/byte/personal_bw | Bin 0 -> 40080 bytes Resources/byte/personal_dp | Bin 0 -> 22044 bytes Resources/byte/personal_hgss | Bin 0 -> 22352 bytes Resources/byte/personal_pt | Bin 0 -> 22352 bytes SAV/SAV_SecretBase.cs | 2 +- Saves/SAV4.cs | 7 +- Saves/SAV5.cs | 5 +- Saves/SaveUtil.cs | 4 +- 23 files changed, 544 insertions(+), 148 deletions(-) create mode 100644 PersonalInfo/PersonalInfo.cs create mode 100644 PersonalInfo/PersonalInfoB2W2.cs create mode 100644 PersonalInfo/PersonalInfoBW.cs create mode 100644 PersonalInfo/PersonalInfoG4.cs create mode 100644 PersonalInfo/PersonalInfoORAS.cs create mode 100644 PersonalInfo/PersonalInfoXY.cs create mode 100644 Resources/byte/personal_b2w2 create mode 100644 Resources/byte/personal_bw create mode 100644 Resources/byte/personal_dp create mode 100644 Resources/byte/personal_hgss create mode 100644 Resources/byte/personal_pt diff --git a/Legality/Checks.cs b/Legality/Checks.cs index f7c884dd0..1586c0ae6 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -424,8 +424,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 = Legal.PersonalAO[index].Abilities; + int abilval = Array.IndexOf(abilities, pk6.Ability); if (abilval < 0) return new LegalityCheck(Severity.Invalid, "Ability is not valid for species/form."); diff --git a/Legality/Core.cs b/Legality/Core.cs index 8a9454ab5..05da7a600 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -8,8 +8,14 @@ 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); + internal static readonly PersonalInfo[] PersonalAO = PersonalInfo.getArray(Properties.Resources.personal_ao, GameVersion.ORAS); + internal static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, GameVersion.XY); + internal static readonly PersonalInfo[] PersonalB2W2 = PersonalInfo.getArray(Properties.Resources.personal_b2w2, GameVersion.B2W2); + internal static readonly PersonalInfo[] PersonalBW = PersonalInfo.getArray(Properties.Resources.personal_bw, GameVersion.BW); + internal static readonly PersonalInfo[] PersonalHGSS = PersonalInfo.getArray(Properties.Resources.personal_hgss, GameVersion.HGSS); + internal static readonly PersonalInfo[] PersonalPt = PersonalInfo.getArray(Properties.Resources.personal_pt, GameVersion.Pt); + internal static readonly PersonalInfo[] PersonalDP = PersonalInfo.getArray(Properties.Resources.personal_dp, GameVersion.DP); + 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")); @@ -595,16 +601,16 @@ private static IEnumerable getEggMoves(int species, int formnum) } private static IEnumerable getTutorMoves(int species, int formnum, bool ORASTutors) { - PersonalInfo pkAO = PersonalAO[PersonalAO[species].FormeIndex(species, formnum)]; + PersonalInfoORAS pkAO = (PersonalInfoORAS)PersonalAO[PersonalAO[species].FormeIndex(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..5e76c58a8 100644 --- a/Legality/Data.cs +++ b/Legality/Data.cs @@ -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/PKHeX.csproj b/PKHeX.csproj index c3c813445..b93da15f7 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -75,6 +75,12 @@ + + + + + + @@ -380,6 +386,11 @@ + + + + + diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 922bdf9e5..8967c5f94 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -243,7 +243,7 @@ internal static byte[] getRandomEVs() Util.Shuffle(evs); return evs; } - internal static byte getBaseFriendship(int species) + internal static int getBaseFriendship(int species) { return Personal[species].BaseFriendship; } @@ -267,14 +267,14 @@ internal static uint getEXP(int level, int species) if (level > 100) level = 100; return ExpTable[level, Personal[species].EXPGrowth]; } - internal static byte[] getAbilities(int species, int formnum) + internal static int[] 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); + int[] spec_abilities = getAbilities(species, formnum); + int abilval = Array.IndexOf(spec_abilities, ability); if (abilval >= 0) return 1 << abilval; return -1; diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index abc515ee1..22252fb1e 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -376,8 +376,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 = PKX.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, }; @@ -1581,15 +1581,9 @@ private void setAbilityList() if (SAV.Generation > 3) // has forms formnum = CB_Form.SelectedIndex; - byte[] abils = SAV.Personal[SAV.Personal[species].FormeIndex(species, formnum)].Abilities; - - List ability_list = new List - { - abilitylist[abils[0]] + " (1)", - abilitylist[abils[1]] + " (2)", - }; - if (SAV.Generation >= 5) // hidden ability - ability_list.Add(abilitylist[abils[2]] + " (H)"); + int[] abils = SAV.Personal[SAV.Personal[species].FormeIndex(species, formnum)].Abilities; + string[] abilIdentifier = {" (1)", " (2)", " (H)"}; + List ability_list = abils.Select((t, i) => abilitylist[t] + abilIdentifier[i]).ToList(); int curAbil = CB_Ability.SelectedIndex; CB_Ability.DataSource = ability_list; diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs new file mode 100644 index 000000000..d623102c8 --- /dev/null +++ b/PersonalInfo/PersonalInfo.cs @@ -0,0 +1,151 @@ +using System; + +namespace PKHeX +{ + public abstract class PersonalInfo + { + protected const int SIZE_G4 = 0x2C; + protected const int SIZE_BW = 0x3C; + protected const int SIZE_B2W2 = 0x4C; + protected const int SIZE_XY = 0x40; + protected const int SIZE_AO = 0x50; + + protected byte[] Data; + 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 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 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; + } + public virtual byte[] Write() { return Data; } + + // Data Manipulation + public int FormeIndex(int species, int forme) + { + return forme == 0 || FormStatsIndex == 0 ? species : 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; + + // Array Retrieval + internal static PersonalInfo[] getArray(byte[] data, GameVersion format) + { + int size = 0; + switch (format) + { + case GameVersion.DP: + case GameVersion.Pt: + case GameVersion.HGSS: size = SIZE_G4; break; + case GameVersion.BW: size = SIZE_BW; break; + case GameVersion.B2W2: size = SIZE_B2W2; break; + case GameVersion.XY: size = SIZE_XY; break; + case GameVersion.ORAS: size = SIZE_AO; break; + } + + if (size == 0) + return null; + + byte[][] entries = splitBytes(data, size); + PersonalInfo[] d = new PersonalInfo[data.Length / size]; + + switch (format) + { + 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; + } + return d; + } + 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] = new byte[size]; + Array.Copy(data, i, r[i/size], 0, size); + } + return r; + } + } +} diff --git a/PersonalInfo/PersonalInfoB2W2.cs b/PersonalInfo/PersonalInfoB2W2.cs new file mode 100644 index 000000000..a080f2920 --- /dev/null +++ b/PersonalInfo/PersonalInfoB2W2.cs @@ -0,0 +1,36 @@ +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoB2W2 : PersonalInfoBW + { + public PersonalInfoB2W2(byte[] data) + { + if (data.Length != SIZE_B2W2) + 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..60cffb035 --- /dev/null +++ b/PersonalInfo/PersonalInfoBW.cs @@ -0,0 +1,95 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoBW : PersonalInfo + { + protected PersonalInfoBW() { } + public PersonalInfoBW(byte[] data) + { + if (data.Length != SIZE_BW) + return; + Data = data; + + 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/PersonalInfoG4.cs b/PersonalInfo/PersonalInfoG4.cs new file mode 100644 index 000000000..6e7d507b0 --- /dev/null +++ b/PersonalInfo/PersonalInfoG4.cs @@ -0,0 +1,89 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoG4 : PersonalInfo + { + public PersonalInfoG4(byte[] data) + { + if (data.Length != SIZE_G4) + 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; + } + + 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[0x18], Data[0x19] }; } + 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/PersonalInfoORAS.cs b/PersonalInfo/PersonalInfoORAS.cs new file mode 100644 index 000000000..b71d8b218 --- /dev/null +++ b/PersonalInfo/PersonalInfoORAS.cs @@ -0,0 +1,36 @@ +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoORAS : PersonalInfoXY + { + public PersonalInfoORAS(byte[] data) + { + if (data.Length != SIZE_AO) + 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..2857fcfe1 --- /dev/null +++ b/PersonalInfo/PersonalInfoXY.cs @@ -0,0 +1,26 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoXY : PersonalInfoBW + { + protected PersonalInfoXY() { } // For ORAS + public PersonalInfoXY(byte[] data) + { + if (data.Length != SIZE_XY) + return; + Data = data; + + 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/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 9e278c637..9056c20f0 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -14635,6 +14635,56 @@ 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_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_pt { + get { + object obj = ResourceManager.GetObject("personal_pt", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 14e9b3472..531ab0d6a 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -5869,4 +5869,19 @@ ..\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 + \ No newline at end of file diff --git a/Resources/byte/personal_b2w2 b/Resources/byte/personal_b2w2 new file mode 100644 index 0000000000000000000000000000000000000000..dbe6c87e3eea722f48833ab081a8a9167447b9c3 GIT binary patch literal 53884 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 J73HY2`VUb?Ug7`% literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_bw b/Resources/byte/personal_bw new file mode 100644 index 0000000000000000000000000000000000000000..78c862814ee2345d1f4a00bfcd04062daf2dc8a0 GIT binary patch literal 40080 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

Wa%2wmvx9{`sM6g3 z3f`Y0v5jisS*N|pv~f$?s6d_>uiH80M*i;sQQ& z980Vre)60vC!s%69OJ?p#Vxd#BpYK4dyRhRv8-bGfP=Mmb=4VNbpEqjXNgVQx_6M? zyR?GGS_z9YZ4g)BV3#HnRmo&Ig0p~$b;h_asw2YgH7Uv5Qp~clkNZfIjJ0D(<frEbpC1D#4n-7;Q|Dw2n z4{MdNWs?yQwh{T;Xzb(I4}O6O+X%47J=jM5n(+7ylwT&s=9x{)Xh)Wf*gAsydKsF zg$7)m;R57jI6QCu<>K*tnE^TZcP!R=V6Yl7WBYl^rE6sJx|I#V&JeS!G8#LCp86O( zIR>`SlOt@jn13{i?yrG`zR`N%UZVRjPtA1N8&BeOsW_{oWPgP7uN>atAsEI`>#+(B z`_j@Dy{FZkN02!lEY2saK)!}NZ-mkO9p^kJ+mq3|@Q&Bgcm^-_|G?6Bg|Fq6gMZyN z#2Sw8xZxX4KPQto91Zr#5*dp<``*iJTRmTbxu3(Df;DvHVl#H2XrD}{(^?}uZlio|LjtR79)naN=3S=m?zFKU*};_XTF)I{XrE<82)#f#Q^by1wz zmCPGKoJZlI>&5zM9UK@No6Kbnpl5vPOjHk+axOM=2V3q> z3%>?oS02o5GU)wfMgKx6R>X}=^tW{2JoBOB{_k2st&V^A5&SodQeOaB#G4As?3NT#9X=%fLR#E`@#a4~W@51Kn)-Tb=Iv zjx9afmERSK$g{FPz}**Uui?s3$`37P=MYoWGRTME>`S#v;fp(UEnBadv>sIx85Fr5 zUFWPRIM>C`R*c1N;v`*XB%n<3PvE{u``JE=sIJ)coJt%LDu~@i!G@g96vN3 z+?sMHV+Q5*xykpl>`Hs2v1WQTtzg%xQ1obLq@H zoRLzT`wq5WV%bUT7l!zwmc&+iu-K*GWTtA+b>_myhzo*0WuL7Bt1Cb^N4}V2XXyOc z>NCHj#DmRlYBjrB>C7JoOLGDK!Hbs5I;Xx0 zo@`SZA}xF08rfZk_X!@g$+G#kZN06jDPXVr^ebVZPbTL`Z1Ag)?JGEZ1bbhHUU%Jn z#q%g;nfjE3UTx=D3#`bqmc0y_gLu&p<}l97#hFeJ12xtp;@%Yg+OyVt(*m~08>6rX zQRnwyzxpKh+OFIUeK}x@I={fWYd7+6FJh?x&f491)9JD+Ry<=(4cc^**`%Q-1Bfed zR#l3f_W7E@$5c4Ztu1FU4*T;1llLjJAg`S55zFEznq6IivMSJhgS~;fM`Qm3Joy^e z&dz(_7_gyGd#y9R*W`9=$+d@Yiei(XgZV4o;|bOkh4P&*X0MjbTTzeqcxvpQFJ9&9 zSJ&*wZE4RTUddfkMqx$1vlgDa;_97$3+%P0im|oV&O_p&{_GwEOpy@lMN-YUZX17*QNW5dGrXrLI_rsCkIesk2zSxGF{F-TN!`l@N?##`}l8mv_4OCQ~0~OFLzT< z#!u&&JL`;S?-3^#5Aj!3h}%5gy5^1C(C+@+v0{7s26Fj_jBL82#t1QT5%#aVcf|yZ(Pp-?Zk4<47gnvx z_4hNxxuw+6IogL6=&_V3z5A+n%qug44nOOs>JFW%D~YeOW8?%Fll@QUck9-0&Kf3c%&v;J zuP7eo&tUVpQ+e^8)-#e2a?<5{TL0ha8mqe|FUSUv`w+v;G=GcvgM=>T4^DUyIVMb- zTa05gmgXlfMPJE0zCVkFJr>wYGtP3v3b&-U_on50)4cD8jS*24WeLS@%^EXi>=5Qc zZ{d@%d6z<)6Ik%`QdX!RD>hFzKeeIjQx$lhNXi*s$oAr1Bfy>q!}-RH+qALB@BSZS z5fA)7#=-{mKgJ?I^#4Cro^gbDGv$+K98o|2xigL=mSVU5r&x-e{vTjVd|tmmEv3(E zDSTd3{+!RNE83OZ+f^psLH4k?8|yyo&*TFVSmgHoDIZXwKi9u%6!B0qj8`s>WO_nv$1IsbF61mXYvr7T&Z7)Hdaqy!IrtE$5EdP)pI@Crh_ zq-kGJDi!0kT@Q-*OiwoJwhioO1^=JJ+8aCUY!=v;g}_W~Lu=Cj$(12Dgb%N6TxjTO zD5MxEf^r?AE$rWkK>OL(rNSJ~h{<$Vky>Hf2Cze^Nqye~+jdi1_Re%jRQ`!ZGhOad z^X_x6Zyma7)`p3CMzTrJS7+@^M%O-Uz3p~ifH2D7r+USZh4 zey-F<;P=CB=*YIEyMa9~L}p^|+0k(>C7lrmzha(>;zLDBC>0ffz<3iIny@=&3SMtH zTMPQ`)R$VJNtKm>KyGcE{cnz4^{!Z5QBB(ph{{n~i(k5O@x&n3*lZrnk5$yj4V_+k zs+^Ei=-?f1Oihss9oUMq|26TKQmH1OgE!Y2pMr%BWGpjYhAmr)9q=k&4r0#Ua&=h4 zuyM2L#ld84O+>zWk#vX$%J=1W`9vXpDna@->sqU- z3S#c={GY{k*wz-)6h!6t$t$rYmm75DO3M>#D-(h+eq9RKGfZEJRtV?E96~?wAg?IQ4))-@B^E-2FhGS$` ztrA4%D|sN_oQ|ELZ$huvTCR|MzVQ#!e)}2M!4G{Ps5;Po?&V}&^n85- z^AA?G$51q%&-t79l~|LogW@_Dt1WI^Aj@9wZ&va>^bYwm|NIRC-qtR=@Yw@NLG;Ai zm@hGttCwq<*PFYCv=;=z#$xY|bvABVZ>7CHDZ=S7k>Xv^I+f~jE#42?e#?#Nv;`f$&s>Qx6-zqonxccLG$eFG z5Qf)?!V#feI1xJN3j~&bM8MK1&;05CTr2Gf*Iw7h)-7YM)6qN`@;1u zcK!m{P~m^anp46<_;Z5n%s+?OZ$sebgSC=4N4(2q6S{7_m2J<4Le`Th-!v>fU2gs* z!-nqaWY}JKKBZC+o>! zl@(a9>=nnCrRb~f9=cXw`yzVv$lz|jD7t&zvQ5XZyrT1W`75z)92;`6imFK#&du>Q zvMjcTyd@hj7L+tYxRwtb=p&IeunMU?C^o zO6T$YA)K2Gn=rLXMGHj6OrOvxY+`%JTQYZ3j<6+7X9trFIJ-YKhh|jI*phAsB3Awb z)3Er6P{YXR?=B`^af|KRmTd$=!Y`h0Lq5aV&a#-^b=jur4)2U3`aYdsuW z&ar0G=LhL*iDM7qIU%hwlTfhd+f#V=+v1*Y<$k?v=%=(Vj+so~gstXO)8|tU=dZ+? z9J|iNVvQYHhOfS!71ACgqcu0p0OKfdjH;?hqWCv506GKymT^oKopO*?ImAgbn6-2^mwcSWW&E^Wz@AqFdhvYT{+7FH-#W`^BY|lGAb|!0MZ~i!VCDy!~ zuvZ0vB^}_+Fu&pO_>C#N`}hma0T|)JIa5Vf?p3EZDVs*SrK!(wP^H=MQicD1dPoa z3|@0BjcviumQnAC2dvs9eWWhMFx@#b8qGdHYw`YAn0ju1IvQ2KL;Gz8_8iGQY}LDR zO-Q#f{<(i5?We;-}xff;r+07w_#>= z_?;76hiO>yJCIxSJF=WG)oj>1)=mBau^jAd)~pY)3?i#u4QxsjYuh%GhPG*B?OfQa z|A?Z^8Q2{h8*;I-ovn~0zi)gU#RR`5U+oQruJ_X#R|m?@?UeEb`w4E7TBbLlD1KjV zApU2uc27ak48KqL7TMW!xl2rvJ6PE4%2m^vW6=5bPzu-+?%q`AkR`75AmUp zv3jJe9gbQfalB)DNGM|Oyu9U|+DFcWjspvogvx}eWVG4Av72dM{HHJuUmXh7`N<~Z z1BX82jS72f%S}WcI4|{#nKNex^+#zmGq9&Pw%)}y8k)WW`&!vbtLSC=`ut1Tev1d% z5rfx?LgTrmG@3+Ou_#_2+eTQ#sn7wQyMfj%9w;lu>oxdL(0gEJI^;e=HaP>^2JCL1 zh%=U95%ejF3ICg&JcmU8;t!K0W!1U+gyhKyzvGy;X=cJP>zni`^HK1>E_MgU4!SCp;ALCbIcK}};aMJC>m}=KePv{-7Jfd~q~*qU^kQS10p*imGIKwGywhi`Mwvun(N~-nErs zbwlqdSS4O%Y%%oG zV}mYMmej1KA;KX>`d72fkU4W7YlpiULNo0s(H{xj-wCf>Er3xA9Ac* z#LBj;E0L)45qHkuCn-kEL2`V5)8}W6l@{WSeFsQRCX?3sjYw4a=ZSS=Sb7&f&9SnJ zRn<&FR(-y)O(a+3zQl8V74wtJ+Rwe2JSqyuxu4YS9!0f%KI`82mDoPQ9uwEPST)zQ zDba&-=&$&k30UJ`up~!valW0R^Eg#Jhq^bcXV`;$-8gpX%~PzmZvW(3c>Gn@Gy7e3;d6b+>^C0gXKZ&NCo782ub-W; z9e)wKr0>E@eaXSVtH*h+_eYQdiEixuaZ%_I{#|%SraViE)7b93{HM439@!JF|8^fc zyA7>Z&&rXA^3@3)1lU6t?P`kc!*s?rcCq-kJ7YVtjXC=U%^Ax#1&^oU?qRIOJ(#o0 z$-&TlM@=?ol5FZG?TZeQ^cyy3Vzl~JdguC`0M0CA3D_4#CY@0br#@Ud1v{T($?r(1 z0OCG|RaWcG3GAWQJ~6r9B9ZC^qz{)1>x7S@PwiWbHN=VOPfX02Fo9)q1rcWl!!Bn>7ZNb-fTJ?)nCd_$C6L|1F%CW@pyS( z8|fe`hLg=jqsk!J~4)XvFF{f!PdRrHMfx` zjGN^z;(V(K*0wS}%1{%T-b^g2+$V^Kg~P%-Y+ppS(>&by$8z|nheBU(;IXICab0&N zJ$ttDr93`u@ia3m6eu8udEvs3IS0b`g^{`L!`U>r%)b@H)mROVT|#1oYP0>HYm*1& z6k~9sKbzLfKtMU;&TpmZ_j(&|XZsB?Vv6nK)(6S|TG>pGY{GUftYNai6Hp$&@{8KO zOZ)pILA>Fp`2t}pLYf_`Kx|);V%Xh&(;taeW3I1!W%@U?>)EiVyyEJ>uvZC`MN>VBJpfdEnSN zEaq-7JC0L~Nb5#VHFV1Tp>KhnT0AdmHa{o{z zfvlWW&E|~un~k`-^a-le|wscjtt zZ|?R5oMYx!h^0B&V@O61;?*Of@Za&LitNEtwwP9NUf)x1_eq0d#I;E$olR%@W1{yb zoHHM{6aH9i5#v^N_Lc8@pv@-^3a1hz*8#ZSnJs#M%43)bEL*ojpLwv&=aoG!HtRV3 zs0Vm|_AXd+<-XCjz?`5fcR@-~RkgHKSxx={K2=Wm#VELKtYWtB)z8eAFv@D4^RBwd zFijKK`)SVJAG>8BgStqmsQjGrtRnVW#-Dw%@72?nw;l|veboE|tY5gJ$0-~^9OeCm zt1nJsHV>HJ-@fywx8MHU;Vo}Guj8nXgCji8VteY{YCc8ml0ey67t3^TYd)c=HJ=Hrx#ZmI(t$a% zzG5;zsT!$;^$k?>;b#ETS6t23m})*JrM!r`6U$=_+g`DqrN1=BNk2pDm@mIq#}V zZv>KguP5HsL4wljQ;wp+=64bo|HyP~-=*IMz^~7WcU_>h&?QN&T~2id=5}1(Gq%)W zezJUY&n{n$ui=#%`ZTMm=K5_^XP|E)u4Xlf*ixOaCdWoxEJ%Az#<@AZ%#H11rVr<4 z1AVW0VAa_@$$fS4T9dY>pe2w^_XI>|z>V#vVowqFV4YlR?xm;7x-7{u>Q2k}T0jSq z8zak)2b#VVL@pYSw=o4x$CPzF;B^MLkD9^Ce_ zyvXTpJDs3;u;$NSy?l9iHqQ(H8_VA!kx)XwhglV|y_7<&gYWtN6)RS+Umu=reTh_> zf!)EeI4_uGRmd?tkwAV?mjag8MPe}=0QhRWZ~=1jR6}87Q!B5D(HalW6MRM9J{IG= zeeJ-fzk4lg61fw@I#Mhq!yKQumaj4K;J^yPec(L@R!+kvDvS!*5QMQC+&#~*TAWq} z*in)jhg=e@$!Xc{7DQ_YU$-h?eF2W0cWULEf4g;GoxG&4h89^?71LCr;@CQxC7zS{ zeAhJ4y2%6D=$?0cHSr~v!}OV9nVF0k6|KKZU5P!#vGS733+Y1*B$J`cp8cDZ6LL|< z!JI)~K4${01)B#Gr<<+Mo}IggW|Zl`v4EpS^#eY?{5*CnOY3!T&c8q!PQl`vh|hqf z8WoSvh>Lf~pFPLVq1{utw$@eCxOlTdl`DuVUcpqL+LuoZES^WP5&04U^DD%=SiF-} zZB-?%_%Ksp0!t&kZ3kfo5tneRneCM%!|ylt$4Oll+lNB_>&ZVXh?bqR!ByDLO^nTS zvhX|KCVi)HuX{-@aj)Q0-FPQ~3^Jib#BtXiXlwz>MKEW?Bj%;j8k_-4K@AzCVnoE; zV7{mW$KunOSW7c|v~)yNzIk#w7Gt9vhvec6;BrkZEyLE8t*Ii`2jAC3dvjj&(r*jN zJ)*a|kJU{j_KHM)(@3*)lIDSGC|ha8!>fa}ZS$!o5md5}+aeAn}c zAj%DWNP;2P=s~1fRt79{epMje{C;5JHsfs_-xaDnV%=Sx?A+ATbz9PPWuo-)6nz!? zCQwI@G1gX&mXGFl`&-1j`5BP0Y$@9lj+!GAw)38xqps`ebh@NOIpm%Jl?fl?jS#fR z(L+xcPIx+M?&dLV!`cS?7mdEQ%Eu;c9EnLRhN0|ZDoy)qta?Rt^$N_xwJ z$J2m#W7y>P@AocrnS5pm-i8xGONu+nEF%?SD` zUnCv=b2``7#<@1Z9HO*OeMfpgGxXc94 z=gmUaKrS7uoXkymE{$(eE`9&55z3{%NMoxAUG#@82K-}osqbMr3)wvQH`1KN1C>LY zv4`$**TU{clRzfmnV$2mNeY;5s*9Y2KU?Sa1!)9F|!^A0H^&cN@jDM@@Fds%lO`?Z9sxiQ}8x zmrP(!Eg85+5+9_R1lgGibtNh0dyTOi42yg|(oQ@j^aZu zcM|&tjy>aIH4P@24*T`HDYpL|vj=gOCXwxIe`fAjJJ#4fX1+i=Bn-H-1kSf9V-q9V ztz-|ipDh1;Z8C*^7#{Cf-ImgA;d~q6d!FV@jQqu|qz_^1leRZh?Q%?-Vi`(IRGv-I z$7Bya(Z3d_0-c-SVUl@qAL;?L!wlIp?So;l@)-Ah;Gj{wuMU&_W_!yAPEtO9)NG-V z8}>m{HiN*%@eXo1jn^bhku+_3qZU5#yjHOwLJ))2jW zq`uj^QQX$a*3EL%Opjd_QqGda&cL>DY-n32TQ>`&ZYC2hRbKKzCFFWE4@F*X2G{23 zI?TuC%iT*Ve4Almlg#&_b~|8CSz{-c!y5a1`u8XoDPr*mtVM&#v74XZHHozC=-nBN zag^&j4jn=v@DF&+|+!Af_S4(lASFdxWs&_yoCF8ts-GnAa7CbNRcSE zZhn8oZG2_e|C;yNe5= z*mL(M1u^v%j#Z?Xkv71~Z4x|1UM>~`FGu$KWcjFPEH8f5<>i#-c^Ly7Ki8M@ax4Zf zP>gs8yj-5eleDOcHLt_e!0+6X5>{h5h?k4Su#NM;28fp{Pz{jTL&omTGOq1RT&Tt$ z^bldr7T--e%Y*C>g~i7)+XCfs*(;2Xa`_T) zAXE7giRn;(s(JL#(ESPdLw$4UndmPu4GnpKk)pS5e=0T#^sO%G2Ty?hoe|z6t0JCE z6Swl&{Ci-(3GBxhS7D}&9L1^1%O|hEE^X}xPw-q+2A0kiMVA%o?Ev@5?4b(hCgU~m z8EUKtU&q-3u7b(c)4G<{Lmp*_``@Y9N5Pj62jUswJ#co;w0lfo|A|d68(UHCw_Ltt z9k8T>YSOuh{KDY-nB;oI)tnPkI}WDEN4YVrnKo734EvPN@pE$q_FRhcA)GC60YbLN zLH`-B=O=Y2%H=(>gCfo>)(4W%5(!BvD;w8Hhc6a6kPP#EQEUvq( z?mX#G#3J4yKiS5yp>5ok%$FAE(gN6*o&vVW!!&Iqzk{AV^n2!UzIAOR|IlWx%BnDJ zCqI>k0Tz#G?Bm#3)m<#sP?SVPg@m5oWo+4)zO1Jga%R4ekRiW#m!4ieh11|@^g(+E z>KBia6{7Eo^$M@yoPxP(G@qR8yLwN#H2E`LsBapogFf9yX}=ZaqIC*SLHs*9I7P0E zoJ>~3k%=4<{TgCPbv>-l-EcffscPjQpA<25+m_4A9PkC%a zd7AI}so2{-sR8>C^}sQEkSR2hBGAE&?IG7+Qp0->N}9m&qsCg>#eB6%w2>Ss%YBwl zD9N3`wl=+yYQF!4nm74AcCtE7&PbW^G`Go_*ptl<{i^QGk3EQ?3bH1pCD{I%l_|XY zKCLnGEci(*`OKbP?9G1aS604~zY;s6rx){^)}*jFmLj?Aj1@%c6^8m$4=C(f15SbW zLF;PPNSmn5jKrs7VX&xo1N$QNReY4J@S4g>xU^{WHzsLFaufb=_?lXhD-S)4o~J#O zJJFUG<|h)WfxfHUK^{N6A9jsl*!`&GqvxNdWxCvRB=@klSj(5CxS=)%!e^RO1ZDdI z$v&I2+GW}Z#RTyNm*3Hoy1fxOdY*P8?_U?aS8;5gHo|PZ0lo-wbXiZxI_$xqcVi@1 z43x}ua`2TU=jh}xG`bt9`t4MGd9q4{QhWMj0>$S_h02GM^*TT+{1ZN zf#d>@tZ{Wu?+swik2gzXq9=x{_h0dCtLSiX&7#QJ4_ zVztE@m(w*319T>A^MElO3twH|$FX%wc;B{ap*P7WD^WheYZALF6X=Otnx(i}iI)G@ z3(b2rChpogheocZ)2gNggB<%D=?fhiuc92Mdh62H@2whK9eTZs@fxa`1*Z`7k8UG7 z!`KoO_knZ7x!D-#7&?!6C_CoH8sJM*HRyL9ioYke-Nl+cqsUu=e&t6ES75bWmtMMz zx(MRFS7={IvZl+LCpx+%g?Hpjs2Al1w&x!oD1XzC21B*q+{N-NUAJuA@1Hj9r!+PFv5DVXJS=dL1SjbJNyvs8piK{)0O7y zd&y5~BaBaN>|uM}T-YQpZ1Q?vvuIzizBVx&PU$(!S?$#txFAnKi1VB`yRJi9*MWYy zV`O!cShC65P1;up8+5UXQ(+ht;j-5@Q!Mu@tZ~90iF|w@u`Kj`O6tD-jwXyi2U?y}ETt)wVd>^CtK=elzL>N{D7Cb@T<-wnD z6x~5TjDC*vg`G{s?%>!#7mMHlHHnaKe6!%8`wV20;9)vx1`&e~?IeE3jL{`c;I?ZB>exgfm~W3!{t z@tbMqzCc)T=8G%nojlZmGuGps@1ETt?QN$g8r4VWWS@e?S}Zu%@g~mWiGCQIZ+O8+ zrD>Mnf5}G$D{drCObN{Wua+_N?0vJ7@u^By386mDUJ=;4}OsL8_t#?d#i6g&VawcTfxrakL@c}ez5NfY>j!((3`-nb+Kw% zPNdOGHO4xZ;^6HQ-jX1O2|?8*O)r)rC#%W2_S>tY^D0uNe~a>=8Q50BK6FD}w&y{5 zs3K!0Td12()Qr8fmJ&{Jum`n5LmLT zb-g+$9^?!x*7zB%o5$}j6NEuQXiC2Q+l$F#E#8q0tWRuRRyVRb?q@wV!JmnK>OH`; z#G{*rB1zok+O~oDK2tNyOxhn+hRF)sh4D($7Yc!2$2<8CbDwD+625=$5gy9{2smMB z580DgypvB|_sl&*;)NnsZCI!;S`hY)-Qw;c*m@)q`FIX~2eBvTqujHwr){0SzBTN# z9-)zP`z0*R8DdX{#k#S*xzIKeD)#1&iallUQDU)&b4B^tGtyB}L|-OMRA|nj8CwgN zJ^U!?3%OIVpW@g9uXC&{Ynp8OqT?%QC%}%`d5n3$IWG^d9K$^9ZFJ{BH@ht}=ZiYu zp|AeO*9%v*Npw-?9ugy(&`3!OlSX{?0OTwPM~+O0GXZ$mECl474^ zvyEDkIHi`9!p)tIX4IXYqIsBsZ6oZSj)iXBsX}%tC8wkW{sDqtbmhVx@J>#aj|#xn zxINRdS*X+tB_+;N#Df>H=r_W<1-r^Gr+}^dAKdqSbWO+7wVNX1na9~s8L#Z2IwZ!{ z(7I|MzZH3RZ5O*!Y#^7;z*nPA1}i*8SY9W?zL1CJj(WdbHj!shCzS=RLi)OE>xkw2 z{zcv7AGYth@Yv<%>hh1jwdp~6YUb*OtFJ~)t-pS9Z^mK>%K2L$CSORq@ruR9ZlDiO zv$G`-y0(|>Ec@i#5sGP#y74;l7QA9H>v?+04D280epNtB`-Iz1YszY+rpChKEGA%f z=0(4KFWd8K2RmbnT#%!iie<*axx71P$Qg>*oingKwqs3TWV{aDoO(T<4b?Q~SKRz7`Q<{m*?6g@z+t%tzV#3ueXv_I$&8 zVwV@O*)yt|_4~a)BP{$n>ji`k*iqHy;g>c>2mfmGVP3Pe)vTI56N{l2kdZbMSlGj@ zJ03pW5*^(8&;$IAf^7|})^ITB{YjiAcv3F*MYZ|x>GQx=9(J*aqIwFYQSSvV_nn-B zK0Npmyppdx|Lmcy6(tLn^zDF3g6-h8Q4hm%11@5r!%S=z{fNT{!(so=$$LNt#%;so zfW4RL3oiZvmm?iM=wuzA&(Hb>i&!{hyq+}w_e+u@QwknD2uVfk zdggzh>AQ6La`Z^xAHHb*iuMra!Lb%U@uCwOz1X=d#ujJsL;b0Tp9T*euCMH)wn0H1 zR)>dG^dtU+CI8d-b>)}OzxDmk9S$Eqyo*Hv+L~0ALY#SuO)uxnXZ8)&cQFpcx;b5| zG0vRlu~oz=yazUOXZLa|9q}nIe}Gh)l)D%H7d?jU{ETIC>sQpTT2W7&d1?ad54H#t z(>@w)KRZ%|-<7EEIz;(qs;#lTt&uqM6q_^BVJi0ZDsbk3 z2Jr1R{H_GB>s)Np(k6M;a&YD?w5nWR(Z8De9o$(ti94i%d~qY$PO4>%+P)sx&k4*? zlH8eCk9_ewOjNk3bF==5+rmNot^~84so0%6P?z3%QoQf@#aC$Iz)zwb5HaoY6yAN8 z;wbt(1;OnFEZ)ybkb;_}+UO^6e@~%^MUOWWoXKUTb0%5`!DSw&?KX+!yiqxmTl_tR zm5N-IkYS5c`VmEc=bcQ4;_oRexX9w24Qahq(}nQvoxzDdN5Ya0^VshxOuN%`#4Q(lU=)X*7Y!SPLAz9DA6emuMow15hqsTSr zKXdQ!?ytS;zYDILn$zDM@mgoe9wzg7fv~MSpO@Wy zes#aR0{1NaQ)5q$=XPe34eTyV9(Q55PrdaqeTAU{J0!k)ou0% zr}VF*n;(k?gKbFSjt%OC=qDH;b{EI~)WymlQffb>pf0kC zA~MV`t94+FX(P;d=_}K<8@dA#<;xV){!#!3f?kx5bB?sNc~lrf4{`(VpES3sEnBIE z@@2}iekp)kp}rN)!_4?y6iKQxr8@Ab%_(6k{!}qL>tom%Dxf#1OSZcp_q!BNzC}8~ zCJ|3!;IOlOgUNlk6VJI@55>dJKuzzynxplSzJP#Icg{qoH=e9r8l)jBGzYUG)3&EIJT8z5&zN>3+o#iYOYH{-*uQ?yqLaW zeFt$tQ{yxG>=PYpuDxX=a>#G8uTIDAC`VsVYNB7x%C_|CEyzW_lc%o&n*|4Q8}A!z z<9&l+w{OrL8imuI{*rbdUqc8ODT5^Ottcp-+eHdfQo6BI;*d9j0PU zj$O30Qzfj{QlGA04j%lb6yALgI$#-s>c`0Up>O**)-5bl^SfNe`kT6!ZG+9TwIJ+4 zV3%`j-zD(BgW+Ix7xOzHVY<7!k>fm1k}$SnZyo829H(%itfS7&akBl5t=*02?|Z)J zcc%3BwekMGklWw4M5{~J&4a$JDMF`H{u>Fc8&h|sklI<#=BHr6 zF#+rTMuND|#VV4j7>EgSHwc&(p5w6C2vf*&9M43K)7-rHh6M|}Wv^`@9Z-*D{F&zt zT8jqMZtI&p1@AU<4jpJ8`|#?UT330?^naqYn1My@mayS%ZLI!w-3L0a{y=9iI=JJ28G*i#I@jx5-s3Vl?p=ZRsdp7j^Td1jpi#0Wb zv*=vGm9TLS`alE^-5G>mkF&fRz1XOs(EV6aL0E4nTW+Zn(8Ect4`&wZ;lytt;cYyM zGZuYJ#TuY`%l5=A+e^x_$H?zMU)t5%-h19T0R#(Yh&%q9w zhf2?GoEO31$2SdQq>o0+f48>zz83M{IFHzIhmr0yydLXm@(;jbUl5k+S&z1H>2%kjJv_ zId(5!O4Zafn5)TwU4Q-hE!TJA9QsoJN-W*W2e!_|Di!Dv$f3V)yL-+6DCLR2ql6yEG_0;YWItNTcpu)JOVw%U`*Dq^8-c7o6Ea=>mD0qAziO zdtt`!DfFZ>a3`p1{XKcNce?{USO`AD??Cq+EP&1Q`K6yt#E5kNcqjSaV$6m6$E;44 z&GxH3Y9u0Eh(j*-Q6-aiickGx@*%Nqw1?T5_372%((<;M)G@E7@k;O$EnKdo!(O>|8H=)Gx@>V80db ziwxo{oVYJ?xrRpGxxO>Ab9q3N*xkvAe)}GpLDU0SzkTty=nQnl>y#J17$>o~Ur4>~ zU0sB2X#M1I+$9k4n?;OIMGL)A$i!mGixig>vF+_-JN&MvAfk@LuvVr&qgXysIvFP@ z*$(0}w->vO_hLJ4FLqDCMw39yr@l0~78AX<4ASw0ofY%2lZ3b zvp1vG+{SCon;++KwUXVh82b@FoG0wNahdl`aGChYj2_#Jl~~W`q0wpTT@(T#%o)C! z{o}(=i&cACo>;=q3st>wOXkMeCCa`OW|WVO_59=C_??l*yo)^L@pg{2tU|^rfG0Q~ zXU=-uKFIkJtW5o>@u$m&?)QRI2$LMUyBq%zmU?6%w}=JTR)6``X;`b@?Cr=*nKpcw_R_KzdasxwBP^B?stgS2(cGo z8Pvtn2mJlizyE)*>S)FAXa(_HQ~5K*QFzVdxm5G0V;&`}YwJZjdpB&x8O_jr-k+Q# zQIl(of6tVwZ|JUFnGX1rFURrej6BwyJ7$m3oglv7^y@RV*JlDj<;xWJU4cc;3+#$c H=9~X7cz*pd literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_hgss b/Resources/byte/personal_hgss new file mode 100644 index 0000000000000000000000000000000000000000..c69332d5028974e14cc882d6bc9f147930d80ac2 GIT binary patch literal 22352 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 literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_pt b/Resources/byte/personal_pt new file mode 100644 index 0000000000000000000000000000000000000000..47154a84f0cc5ab932d8d8246ace4d00db4306e4 GIT binary patch literal 22352 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 F{{q+yH+KL4 literal 0 HcmV?d00001 diff --git a/SAV/SAV_SecretBase.cs b/SAV/SAV_SecretBase.cs index f1a0f5ba4..58db065ff 100644 --- a/SAV/SAV_SecretBase.cs +++ b/SAV/SAV_SecretBase.cs @@ -411,7 +411,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 = Legal.PersonalAO[Legal.PersonalAO[species].FormeIndex(species, formnum)].Abilities; // Build Ability List List ability_list = new List diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index 5356c733f..e28c88812 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 = Legal.PersonalDP; break; + case GameVersion.Pt: Personal = Legal.PersonalPt; break; + case GameVersion.HGSS: Personal = Legal.PersonalHGSS; break; + } if (!Exportable) resetBoxes(); diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index 8b17dc7d9..55f5df0f3 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -52,6 +52,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 = Legal.PersonalBW; break; case GameVersion.B2W2: // B2W2 BattleBox = 0x20900; @@ -71,10 +73,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 = Legal.PersonalB2W2; break; } HeldItems = Legal.HeldItems_BW; - Personal = Legal.PersonalAO; // todo getBlockInfo(); if (!Exportable) diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index 4d8019ba6..12d8f07af 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -18,8 +18,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, From 190382d5b6f38ae8e0c6ddb4e4fd3f0bc529e741 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 2 Jul 2016 20:25:47 -0700 Subject: [PATCH 003/184] Sync remaining Missed the last bugfix --- PersonalInfo/PersonalInfo.cs | 2 +- PersonalInfo/PersonalInfoBW.cs | 1 + PersonalInfo/PersonalInfoXY.cs | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs index d623102c8..f44f09010 100644 --- a/PersonalInfo/PersonalInfo.cs +++ b/PersonalInfo/PersonalInfo.cs @@ -142,7 +142,7 @@ 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] = new byte[size]; + r[i/size] = new byte[size]; Array.Copy(data, i, r[i/size], 0, size); } return r; diff --git a/PersonalInfo/PersonalInfoBW.cs b/PersonalInfo/PersonalInfoBW.cs index 60cffb035..a14469263 100644 --- a/PersonalInfo/PersonalInfoBW.cs +++ b/PersonalInfo/PersonalInfoBW.cs @@ -12,6 +12,7 @@ public PersonalInfoBW(byte[] data) return; Data = data; + // Unpack TMHM & Tutors TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); } diff --git a/PersonalInfo/PersonalInfoXY.cs b/PersonalInfo/PersonalInfoXY.cs index 2857fcfe1..b662245d0 100644 --- a/PersonalInfo/PersonalInfoXY.cs +++ b/PersonalInfo/PersonalInfoXY.cs @@ -1,5 +1,4 @@ -using System; -using System.Linq; +using System.Linq; namespace PKHeX { @@ -12,6 +11,7 @@ public PersonalInfoXY(byte[] data) 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 From 7d767ee60041a8fef257fc965289d720dca33852 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 2 Jul 2016 20:30:20 -0700 Subject: [PATCH 004/184] Re-add Clone-Delete Thanks Wanderer1391! --- PKX/f1-Main.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 22252fb1e..35fe0258d 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -3545,11 +3545,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)); From ce7346957531cdd6d97be8b32d8f725e86dae29b Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 2 Jul 2016 20:38:13 -0700 Subject: [PATCH 005/184] Gen5 bak name use specific version name --- Saves/SAV5.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index 55f5df0f3..840cc5ebc 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) From f1fa64ff111496c92842f1ce81af3303aca42c85 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 2 Jul 2016 20:49:47 -0700 Subject: [PATCH 006/184] Fix gen5 map position coords Lazy c/p & edit from SAV6 --- Saves/SAV5.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index 840cc5ebc..b0748a4ea 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -561,18 +561,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 From 7bff9b781a788957cbb34541c21fc797e38fc53d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 3 Jul 2016 13:04:07 -0700 Subject: [PATCH 007/184] Fix out of range forme index request Break up logic --- PersonalInfo/PersonalInfo.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs index f44f09010..4358d5a21 100644 --- a/PersonalInfo/PersonalInfo.cs +++ b/PersonalInfo/PersonalInfo.cs @@ -48,14 +48,14 @@ public abstract class PersonalInfo public bool[] TypeTutors { get; set; } public bool[][] SpecialTutors { get; set; } = new bool[0][]; - protected bool[] getBits(byte[] data) + 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 byte[] setBits(bool[] bits) + protected static byte[] setBits(bool[] bits) { byte[] data = new byte[bits.Length/8]; for (int i = 0; i < bits.Length; i++) @@ -67,7 +67,14 @@ protected byte[] setBits(bool[] bits) // Data Manipulation public int FormeIndex(int species, int forme) { - return forme == 0 || FormStatsIndex == 0 ? species : FormStatsIndex + forme - 1; + 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 { From 4568bdc5764ce7b135a4844c15843b92d47bd720 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 3 Jul 2016 13:41:50 -0700 Subject: [PATCH 008/184] Add gen3 personal struct Gen4 is the same struct, move to earlier game's class. Still need to unshuffle the personals by natdex ID for gen3 games. Tutors/TMHM aren't referenced so they can be appended if (n)ever desired --- PersonalInfo/PersonalInfo.cs | 1 + PersonalInfo/PersonalInfoG3.cs | 83 ++++++++++++++++++++++++++++++++++ PersonalInfo/PersonalInfoG4.cs | 71 ++--------------------------- 3 files changed, 87 insertions(+), 68 deletions(-) create mode 100644 PersonalInfo/PersonalInfoG3.cs diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs index 4358d5a21..e7f6dd479 100644 --- a/PersonalInfo/PersonalInfo.cs +++ b/PersonalInfo/PersonalInfo.cs @@ -4,6 +4,7 @@ namespace PKHeX { public abstract class PersonalInfo { + protected const int SIZE_G3 = 0x1C; protected const int SIZE_G4 = 0x2C; protected const int SIZE_BW = 0x3C; protected const int SIZE_B2W2 = 0x4C; diff --git a/PersonalInfo/PersonalInfoG3.cs b/PersonalInfo/PersonalInfoG3.cs new file mode 100644 index 000000000..5b8a75169 --- /dev/null +++ b/PersonalInfo/PersonalInfoG3.cs @@ -0,0 +1,83 @@ +using System; + +namespace PKHeX +{ + public class PersonalInfoG3 : PersonalInfo + { + protected PersonalInfoG3() { } + public PersonalInfoG3(byte[] data) + { + if (data.Length != SIZE_G3) + 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[0x18], Data[0x19] }; } + 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 index 6e7d507b0..585690bec 100644 --- a/PersonalInfo/PersonalInfoG4.cs +++ b/PersonalInfo/PersonalInfoG4.cs @@ -1,9 +1,8 @@ -using System; -using System.Linq; +using System.Linq; namespace PKHeX { - public class PersonalInfoG4 : PersonalInfo + public class PersonalInfoG4 : PersonalInfoG3 { public PersonalInfoG4(byte[] data) { @@ -18,72 +17,8 @@ public PersonalInfoG4(byte[] data) public override byte[] Write() { setBits(TMHM).CopyTo(Data, 0x28); - setBits(TypeTutors).CopyTo(Data, 0x38); + // 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 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[0x18], Data[0x19] }; } - 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; } } } } From 1779420af13f729894c43cfac09fa30a5910d013 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 3 Jul 2016 15:05:15 -0700 Subject: [PATCH 009/184] Add gen3 personal info, move object refs All PersonalInfo arrays are referenced from PersonalInfo's class instead of Legal Fixed a few bugs in the process (species translation, gen switch) --- Legality/Checks.cs | 4 ++-- Legality/Core.cs | 27 ++++++++------------- PKHeX.csproj | 5 ++++ PKM/PKX.cs | 8 +++---- PKX/f1-Main.cs | 6 +++-- PersonalInfo/PersonalInfo.cs | 24 +++++++++++++++++++ Properties/Resources.Designer.cs | 40 +++++++++++++++++++++++++++++++ Properties/Resources.resx | 12 ++++++++++ Resources/byte/personal_e | Bin 0 -> 11536 bytes Resources/byte/personal_fr | Bin 0 -> 11536 bytes Resources/byte/personal_lg | Bin 0 -> 11536 bytes Resources/byte/personal_rs | Bin 0 -> 11536 bytes SAV/SAV_HallOfFame.cs | 2 +- SAV/SAV_SecretBase.cs | 4 ++-- Saves/SAV3.cs | 4 +++- Saves/SAV4.cs | 6 ++--- Saves/SAV5.cs | 4 ++-- Saves/SAV6.cs | 2 +- 18 files changed, 113 insertions(+), 35 deletions(-) create mode 100644 Resources/byte/personal_e create mode 100644 Resources/byte/personal_fr create mode 100644 Resources/byte/personal_lg create mode 100644 Resources/byte/personal_rs diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 1586c0ae6..641a6bff2 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -423,8 +423,8 @@ private LegalityCheck verifyRibbons() } private LegalityCheck verifyAbility() { - int index = Legal.PersonalAO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); - int[] abilities = Legal.PersonalAO[index].Abilities; + int index = PersonalInfo.AO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); + int[] abilities = PersonalInfo.AO[index].Abilities; int abilval = Array.IndexOf(abilities, pk6.Ability); if (abilval < 0) return new LegalityCheck(Severity.Invalid, "Ability is not valid for species/form."); diff --git a/Legality/Core.cs b/Legality/Core.cs index 05da7a600..5075ce9d3 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -8,13 +8,6 @@ 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, GameVersion.ORAS); - internal static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, GameVersion.XY); - internal static readonly PersonalInfo[] PersonalB2W2 = PersonalInfo.getArray(Properties.Resources.personal_b2w2, GameVersion.B2W2); - internal static readonly PersonalInfo[] PersonalBW = PersonalInfo.getArray(Properties.Resources.personal_bw, GameVersion.BW); - internal static readonly PersonalInfo[] PersonalHGSS = PersonalInfo.getArray(Properties.Resources.personal_hgss, GameVersion.HGSS); - internal static readonly PersonalInfo[] PersonalPt = PersonalInfo.getArray(Properties.Resources.personal_pt, GameVersion.Pt); - internal static readonly PersonalInfo[] PersonalDP = PersonalInfo.getArray(Properties.Resources.personal_dp, GameVersion.DP); 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")); @@ -412,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 = PersonalInfo.XY[species].FormeIndex(species, formnum); + int ind_AO = PersonalInfo.AO[species].FormeIndex(species, formnum); return LevelUpXY[ind_XY].getMoves(lvl).Concat(LevelUpAO[ind_AO].getMoves(lvl)); } private static IEnumerable getEncounterSlots(PK6 pk6) @@ -550,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 = PersonalInfo.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); @@ -575,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 = PersonalInfo.XY[species].FormeIndex(species, form); + PersonalInfo pi = PersonalInfo.XY[index]; if (LVL) r.AddRange(LevelUpXY[index].getMoves(lvl)); if (Tutor) r.AddRange(getTutorMoves(species, form, ORASTutors)); @@ -584,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 = PersonalInfo.AO[species].FormeIndex(species, form); + PersonalInfo pi = PersonalInfo.AO[index]; if (LVL) r.AddRange(LevelUpAO[index].getMoves(lvl)); if (Tutor) r.AddRange(getTutorMoves(species, form, ORASTutors)); @@ -595,13 +588,13 @@ 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 = PersonalInfo.XY[species].FormeIndex(species, formnum); + int ind_AO = PersonalInfo.AO[species].FormeIndex(species, formnum); return EggMoveAO[ind_AO].Moves.Concat(EggMoveXY[ind_XY].Moves); } private static IEnumerable getTutorMoves(int species, int formnum, bool ORASTutors) { - PersonalInfoORAS pkAO = (PersonalInfoORAS)PersonalAO[PersonalAO[species].FormeIndex(species, formnum)]; + PersonalInfoORAS pkAO = (PersonalInfoORAS) PersonalInfo.AO[PersonalInfo.AO[species].FormeIndex(species, formnum)]; // Type Tutor List moves = TypeTutor.Where((t, i) => pkAO.TypeTutors[i]).ToList(); diff --git a/PKHeX.csproj b/PKHeX.csproj index b93da15f7..3205f9848 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -78,6 +78,7 @@ + @@ -389,8 +390,12 @@ + + + + diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 8967c5f94..c59fd541f 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -181,7 +181,7 @@ internal 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; + internal static PersonalInfo[] Personal = PersonalInfo.AO; // Stat Fetching internal static int getMovePP(int move, int ppup) @@ -1199,11 +1199,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 +1221,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, diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 35fe0258d..a3e40e3b3 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -763,11 +763,13 @@ private void openSAV(byte[] input, string path) TB_Secure2.Text = (SAV as SAV6).Secure2.ToString("X16"); break; } - PKX.Personal = SAV.Personal; - PKM pk = preparePKM(); + PKX.Personal = SAV.Personal; + bool init = fieldsInitialized; + fieldsInitialized = false; populateFilteredDataSources(); populateFields(pkm.Format != SAV.Generation ? SAV.BlankPKM : pk); + fieldsInitialized |= init; // SAV Specific Limits TB_OT.MaxLength = SAV.OTLength; diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs index e7f6dd479..1584795d0 100644 --- a/PersonalInfo/PersonalInfo.cs +++ b/PersonalInfo/PersonalInfo.cs @@ -4,6 +4,18 @@ namespace PKHeX { public abstract class PersonalInfo { + internal static readonly PersonalInfo[] AO = getArray(Properties.Resources.personal_ao, GameVersion.ORAS); + internal static readonly PersonalInfo[] XY = getArray(Properties.Resources.personal_xy, GameVersion.XY); + internal static readonly PersonalInfo[] B2W2 = getArray(Properties.Resources.personal_b2w2, GameVersion.B2W2); + internal static readonly PersonalInfo[] BW = getArray(Properties.Resources.personal_bw, GameVersion.BW); + internal static readonly PersonalInfo[] HGSS = getArray(Properties.Resources.personal_hgss, GameVersion.HGSS); + internal static readonly PersonalInfo[] Pt = getArray(Properties.Resources.personal_pt, GameVersion.Pt); + internal static readonly PersonalInfo[] DP = getArray(Properties.Resources.personal_dp, GameVersion.DP); + internal static readonly PersonalInfo[] LG = getArray(Properties.Resources.personal_lg, GameVersion.LG); + internal static readonly PersonalInfo[] FR = getArray(Properties.Resources.personal_fr, GameVersion.FR); + internal static readonly PersonalInfo[] E = getArray(Properties.Resources.personal_e, GameVersion.E); + internal static readonly PersonalInfo[] RS = getArray(Properties.Resources.personal_rs, GameVersion.RS); + protected const int SIZE_G3 = 0x1C; protected const int SIZE_G4 = 0x2C; protected const int SIZE_BW = 0x3C; @@ -103,6 +115,10 @@ internal static PersonalInfo[] getArray(byte[] data, GameVersion format) int size = 0; switch (format) { + case GameVersion.RS: + case GameVersion.E: + case GameVersion.FR: + case GameVersion.LG: size = SIZE_G3; break; case GameVersion.DP: case GameVersion.Pt: case GameVersion.HGSS: size = SIZE_G4; break; @@ -120,6 +136,14 @@ internal static PersonalInfo[] getArray(byte[] data, GameVersion format) 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: diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 9056c20f0..5466b1204 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -14665,6 +14665,26 @@ internal class Resources { } } + ///

+ /// 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[]. /// @@ -14675,6 +14695,16 @@ internal class Resources { } } + /// + /// 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[]. /// @@ -14685,6 +14715,16 @@ internal class Resources { } } + /// + /// 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[]. /// diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 531ab0d6a..2ede933af 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -5884,4 +5884,16 @@ ..\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 + \ No newline at end of file diff --git a/Resources/byte/personal_e b/Resources/byte/personal_e new file mode 100644 index 0000000000000000000000000000000000000000..798e0e35787ef50df652589d7421c471d57a51cf GIT binary patch literal 11536 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 literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_fr b/Resources/byte/personal_fr new file mode 100644 index 0000000000000000000000000000000000000000..1ceb3d41dbdfb90795f63f0696e50d984b6acd18 GIT binary patch literal 11536 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 literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_lg b/Resources/byte/personal_lg new file mode 100644 index 0000000000000000000000000000000000000000..1ceb3d41dbdfb90795f63f0696e50d984b6acd18 GIT binary patch literal 11536 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 literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_rs b/Resources/byte/personal_rs new file mode 100644 index 0000000000000000000000000000000000000000..798e0e35787ef50df652589d7421c471d57a51cf GIT binary patch literal 11536 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 literal 0 HcmV?d00001 diff --git a/SAV/SAV_HallOfFame.cs b/SAV/SAV_HallOfFame.cs index ea81bcde4..f14d043d3 100644 --- a/SAV/SAV_HallOfFame.cs +++ b/SAV/SAV_HallOfFame.cs @@ -363,7 +363,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 = PersonalInfo.AO[species].HasFormes || new[] { 664, 665, 414 }.Contains(species); CB_Form.Enabled = CB_Form.Visible = hasForms; CB_Form.DisplayMember = "Text"; diff --git a/SAV/SAV_SecretBase.cs b/SAV/SAV_SecretBase.cs index 58db065ff..d1ab54463 100644 --- a/SAV/SAV_SecretBase.cs +++ b/SAV/SAV_SecretBase.cs @@ -411,7 +411,7 @@ private void setAbilityList() int newabil = Convert.ToInt16(MT_AbilNo.Text) >> 1; int species = Util.getIndex(CB_Species); int formnum = CB_Form.SelectedIndex; - int[] abils = Legal.PersonalAO[Legal.PersonalAO[species].FormeIndex(species, formnum)].Abilities; + int[] abils = PersonalInfo.AO[PersonalInfo.AO[species].FormeIndex(species, formnum)].Abilities; // Build Ability List List ability_list = new List @@ -428,7 +428,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 = PersonalInfo.AO[species].HasFormes || new[] { 664, 665, 414 }.Contains(species); CB_Form.Enabled = CB_Form.Visible = hasForms; CB_Form.DisplayMember = "Text"; diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index 41e736812..c895bb21a 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -82,6 +82,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = Party + 0x0600; OFS_PouchTMHM = Party + 0x0640; OFS_PouchBerry = Party + 0x0740; + Personal = PersonalInfo.RS; break; case GameVersion.FRLG: LegalKeyItems = Legal.Pouch_Key_FRLG; @@ -90,6 +91,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = Party + 0x0430; OFS_PouchTMHM = Party + 0x0464; OFS_PouchBerry = Party + 0x054C; + Personal = PersonalInfo.FR; // todo break; case GameVersion.E: LegalKeyItems = Legal.Pouch_Key_E; @@ -98,6 +100,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = Party + 0x0650; OFS_PouchTMHM = Party + 0x0690; OFS_PouchBerry = Party + 0x0790; + Personal = PersonalInfo.E; break; } LegalItems = Legal.Pouch_Items_RS; @@ -106,7 +109,6 @@ 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(); diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index e28c88812..fedfde3d4 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -28,9 +28,9 @@ public SAV4(byte[] data = null, GameVersion versionOverride = GameVersion.Any) switch (Version) { - case GameVersion.DP: Personal = Legal.PersonalDP; break; - case GameVersion.Pt: Personal = Legal.PersonalPt; break; - case GameVersion.HGSS: Personal = Legal.PersonalHGSS; break; + case GameVersion.DP: Personal = PersonalInfo.DP; break; + case GameVersion.Pt: Personal = PersonalInfo.Pt; break; + case GameVersion.HGSS: Personal = PersonalInfo.HGSS; break; } if (!Exportable) diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index b0748a4ea..06459553e 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -53,7 +53,7 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; - Personal = Legal.PersonalBW; + Personal = PersonalInfo.BW; break; case GameVersion.B2W2: // B2W2 BattleBox = 0x20900; @@ -74,7 +74,7 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; - Personal = Legal.PersonalB2W2; + Personal = PersonalInfo.B2W2; break; } HeldItems = Legal.HeldItems_BW; diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index 18aa812ae..65a472183 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 ? PersonalInfo.AO : PersonalInfo.XY; if (!Exportable) resetBoxes(); } From 1e2ef19d9a565a77b490621eed32431171903ee3 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 3 Jul 2016 18:27:12 -0700 Subject: [PATCH 010/184] Tweak detection of pk6 party file --- PKM/PKMConverter.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/PKM/PKMConverter.cs b/PKM/PKMConverter.cs index 12115760b..fc8768ba8 100644 --- a/PKM/PKMConverter.cs +++ b/PKM/PKMConverter.cs @@ -40,15 +40,16 @@ 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; } From 1f1f3b872077a0b91cf76913bad826c12d3c6bfd Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 3 Jul 2016 18:36:04 -0700 Subject: [PATCH 011/184] Add gender legality check dirty cheaters Tweaked ECPID to not bypass illegal flag checking if EC/PID were 0. --- Legality/Analysis.cs | 5 +++-- Legality/Checks.cs | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Legality/Analysis.cs b/Legality/Analysis.cs index 04695106b..5a84820fe 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; @@ -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 641a6bff2..edda3e9f7 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 (PersonalInfo.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() { From bd2a1af0f84666e27374db03a52faa9a8c5213d3 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 3 Jul 2016 22:21:45 -0700 Subject: [PATCH 012/184] Add Gen3 dex set captured/seen --- Saves/SAV3.cs | 190 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 136 insertions(+), 54 deletions(-) diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index c895bb21a..0d1eef9a9 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -48,16 +48,15 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) return; BlockOrder = new int[14]; + BlockOfs = new int[14]; ActiveSAV = SaveUtil.SIZE_G3RAWHALF == data.Length || BitConverter.ToUInt32(Data, 0xFFC) > BitConverter.ToUInt32(Data, 0xEFFC) ? 0 : 1; for (int i = 0; i < 14; i++) BlockOrder[i] = BitConverter.ToInt16(Data, ABO + i*0x1000 + 0xFF4); + for (int i = 0; i < 14; i++) + BlockOfs[i] = Array.IndexOf(BlockOrder, i) + ABO; // 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; // Set up PC data buffer beyond end of save file. @@ -77,29 +76,29 @@ 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 = PersonalInfo.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; - Personal = PersonalInfo.FR; // todo + 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 = PersonalInfo.FR; // todo split FR & LG 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 = PersonalInfo.E; break; } @@ -113,6 +112,8 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) if (!Exportable) resetBoxes(); } + + private readonly int[] BlockOfs; private readonly int ActiveSAV; private int ABO => ActiveSAV*0xE000; @@ -139,9 +140,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) protected override int GiftCountMax => 1; public override int OTLength => 8; public override int NickLength => 10; - - private int Block2, Block3; - + // Checksums protected override void setChecksums() { @@ -192,8 +191,8 @@ private uint SecurityKey { 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; } } @@ -202,7 +201,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 @@ -215,43 +214,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 @@ -261,8 +260,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; } } @@ -271,8 +270,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; } } } @@ -283,8 +282,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; } } @@ -293,15 +292,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; @@ -366,7 +365,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 @@ -374,7 +373,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) @@ -386,7 +385,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 { @@ -420,5 +419,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; + } + } + } } } From 64632012867a3501ee901846bb8b42ab18a3cd33 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 11:56:30 -0700 Subject: [PATCH 013/184] Add SAV5 dex flag setting No formes flag setting tho --- Saves/SAV5.cs | 49 +++++++++++++++++++++++++++++++++++++++++++++-- Saves/SaveFile.cs | 2 +- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index 06459553e..d383b6f1f 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -40,6 +40,8 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) BattleBox = 0x20A00; Trainer2 = 0x21200; Daycare = 0x20E00; + PokeDex = 0x21600; + PokeDexLanguageFlags = PokeDex + 0x320; // Inventory offsets are the same for each game. OFS_PouchHeldItem = 0x18400; // 0x188D7 @@ -61,6 +63,8 @@ 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) // Inventory offsets are the same for each game. OFS_PouchHeldItem = 0x18400; // 0x188D7 @@ -349,9 +353,10 @@ public override string ChecksumInfo private const int wcSeed = 0x1D290; - private readonly int Trainer2, AdventureInfo; + 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) @@ -592,5 +597,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/SaveFile.cs b/Saves/SaveFile.cs index 23985ca44..579e45c81 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -73,7 +73,7 @@ public byte[] Write(bool DSV) 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; From 8276c6fcc19450ce9f41d447310edd7c97965e5b Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 13:06:01 -0700 Subject: [PATCH 014/184] Add SAV4 dex flag setting --- Saves/SAV4.cs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index fedfde3d4..e7f308979 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -191,6 +191,7 @@ private void getSAVOffsets() AdventureInfo = 0 + GBO; Trainer1 = 0x64 + GBO; Party = 0x98 + GBO; + PokeDex = 0x12DC + GBO; WondercardFlags = 0xA6D0 + GBO; WondercardData = 0xA7fC + GBO; @@ -220,6 +221,7 @@ private void getSAVOffsets() AdventureInfo = 0 + GBO; Trainer1 = 0x68 + GBO; Party = 0xA0 + GBO; + PokeDex = 0x1328 + GBO; WondercardFlags = 0xB4C0 + GBO; WondercardData = 0xB5C0 + GBO; @@ -249,6 +251,7 @@ private void getSAVOffsets() AdventureInfo = 0 + GBO; Trainer1 = 0x64 + GBO; Party = 0x98 + GBO; + PokeDex = 0x12B8 + GBO; WondercardFlags = 0x9D3C + GBO; WondercardData = 0x9E3C + GBO; @@ -279,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; @@ -667,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 + } } } From 8dd5c40a93178dabb7cd81bea28f5a8ec8da7daf Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 16:06:07 -0700 Subject: [PATCH 015/184] Fix multiple matched cards Charizardite Y with Inferno fixed, just add a break to get out of the loop. --- Legality/Checks.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Legality/Checks.cs b/Legality/Checks.cs index edda3e9f7..745e6de47 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -865,8 +865,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 @@ -891,7 +895,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."); From e21037c57ef82b99484749fa8139353bbda67b45 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 16:11:03 -0700 Subject: [PATCH 016/184] Change converter country 31 should have been 0x31 == 49 (USA). Ha. --- PKM/PKMConverter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PKM/PKMConverter.cs b/PKM/PKMConverter.cs index fc8768ba8..9720dae33 100644 --- a/PKM/PKMConverter.cs +++ b/PKM/PKMConverter.cs @@ -4,7 +4,7 @@ namespace PKHeX { internal 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"; From 005d1abfa618ece9618b5d4d3fc1cf2371b4f864 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 16:16:34 -0700 Subject: [PATCH 017/184] Fix main blank save init parameters --- PKX/f1-Main.Designer.cs | 13 +++++++------ PKX/f1-Main.cs | 7 +++++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/PKX/f1-Main.Designer.cs b/PKX/f1-Main.Designer.cs index 53014fead..910dbdc07 100644 --- a/PKX/f1-Main.Designer.cs +++ b/PKX/f1-Main.Designer.cs @@ -2635,7 +2635,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 +2645,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 +2657,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 +2666,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 +2676,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 +2686,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); // @@ -2966,6 +2966,7 @@ public void InitializeComponent() // // PAN_Box // + this.PAN_Box.BackgroundImage = global::PKHeX.Properties.Resources.box_wp16; this.PAN_Box.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; this.PAN_Box.Controls.Add(this.bpkx30); this.PAN_Box.Controls.Add(this.bpkx29); diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index a3e40e3b3..e4a3e0d1f 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -108,11 +108,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) openQuick(path, force: true); + else + GB_SAVtools.Visible = false; } // Splash Screen closes on its own. @@ -126,7 +128,7 @@ 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"; @@ -697,6 +699,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; From c09a541b252c402a9549d55f971070428e34eb90 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 20:04:43 -0700 Subject: [PATCH 018/184] Fix Party slot Set/Delete PartyCount now updates, added new logic to SaveFile class to perform the deletion. Should behave cleaner than the working solution from months previous. Resolves #129 , thanks Favna! --- PKX/f1-Main.cs | 37 ++++++++++++++++++++++++++----------- Saves/SaveFile.cs | 24 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index e4a3e0d1f..0b08512cd 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -3514,17 +3514,19 @@ private void clickSet(object sender, EventArgs e) return; if (slot >= 30 && slot < 36) // Party + { + 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 || (slot >= 36 && slot < 42 && DEV_Ability.Enabled)) + { + 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) { @@ -3538,7 +3540,12 @@ private void clickDelete(object sender, EventArgs e) return; } if (slot >= 30 && slot < 36) // Party - { SAV.setPartySlot(SAV.BlankPKM, offset); setParty(); return; } + { + SAV.deletePartySlot(slot-30); + setParty(); + getSlotColor(slot, Properties.Resources.slotDel); + return; + } if (slot < 30 || (slot >= 36 && slot < 42 && DEV_Ability.Enabled)) { SAV.setStoredSlot(SAV.BlankPKM, getPKXOffset(slot)); } else return; @@ -3663,11 +3670,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 + 30].Image = null; + } } private int getPKXOffset(int slot) { diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index 579e45c81..62e4dcf57 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -334,6 +334,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 +365,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 +385,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) { From 55d89952ddcc772857169a4fa3d6f32b5861c13b Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 20:11:28 -0700 Subject: [PATCH 019/184] Simplification of set/delete/view Add comments. DEV_Ability is now used for past gen pkm abilities (for the moment). DEV_Ability was obfuscation, can modify slots (such as the battle box) while in HaX mode. Behave. --- PKX/f1-Main.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 0b08512cd..dbc9381e2 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -3515,13 +3515,14 @@ private void clickSet(object sender, EventArgs e) 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); setParty(); getSlotColor(slot, Properties.Resources.slotSet); } - else if (slot < 30 || (slot >= 36 && slot < 42 && DEV_Ability.Enabled)) + else if (slot < 30 || HaX && slot >= 36 && slot < 42) { SAV.setStoredSlot(pk, offset); getQuickFiller(SlotPictureBoxes[slot], pk); @@ -3531,7 +3532,7 @@ private void clickSet(object sender, EventArgs e) 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) @@ -3546,7 +3547,7 @@ private void clickDelete(object sender, EventArgs e) getSlotColor(slot, Properties.Resources.slotDel); return; } - if (slot < 30 || (slot >= 36 && slot < 42 && DEV_Ability.Enabled)) + if (slot < 30 || HaX && slot >= 36 && slot < 42) { SAV.setStoredSlot(SAV.BlankPKM, getPKXOffset(slot)); } else return; From edc9bb7046e1a5fb0b9f665ee1e10e06eb8c77d7 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 23:52:37 -0700 Subject: [PATCH 020/184] Fix SAV3 party & info loading forgot 0x1000 --- Saves/SAV3.cs | 13 +++++-------- Saves/SaveFile.cs | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index 0d1eef9a9..c1b2ee61b 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -53,11 +53,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) for (int i = 0; i < 14; i++) BlockOrder[i] = BitConverter.ToInt16(Data, ABO + i*0x1000 + 0xFF4); for (int i = 0; i < 14; i++) - BlockOfs[i] = Array.IndexOf(BlockOrder, i) + ABO; - - // Detect RS/E/FRLG - // Section 0 stores Game Code @ 0x00AC; 0 for RS, 1 for FRLG, else for Emerald - + BlockOfs[i] = Array.IndexOf(BlockOrder, i)*0x1000 + ABO; // Set up PC data buffer beyond end of save file. Box = Data.Length; @@ -113,11 +109,10 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) resetBoxes(); } - private readonly int[] BlockOfs; - 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); } @@ -140,7 +135,9 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) protected override int GiftCountMax => 1; public override int OTLength => 8; public override int NickLength => 10; - + + public override bool HasParty => true; + // Checksums protected override void setChecksums() { diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index 62e4dcf57..8f0d36abe 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -68,7 +68,7 @@ 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; From 52c87c8c5f14a7c1c6e7db08ec7d484d2ea1c945 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 23:52:50 -0700 Subject: [PATCH 021/184] Fix ability retrieval incorrect offset --- PersonalInfo/PersonalInfoG3.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PersonalInfo/PersonalInfoG3.cs b/PersonalInfo/PersonalInfoG3.cs index 5b8a75169..fdcdd4980 100644 --- a/PersonalInfo/PersonalInfoG3.cs +++ b/PersonalInfo/PersonalInfoG3.cs @@ -69,7 +69,7 @@ public override int[] EggGroups } public override int[] Abilities { - get { return new int[] { Data[0x18], Data[0x19] }; } + get { return new int[] { Data[0x16], Data[0x17] }; } set { if (value?.Length != 2) return; From f0503540a08073f405fdf5328ba0808f84674202 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 23:53:15 -0700 Subject: [PATCH 022/184] Safety check negative species/formestatsindex returns species --- PersonalInfo/PersonalInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs index 1584795d0..e211c44eb 100644 --- a/PersonalInfo/PersonalInfo.cs +++ b/PersonalInfo/PersonalInfo.cs @@ -80,9 +80,9 @@ protected static byte[] setBits(bool[] bits) // Data Manipulation public int FormeIndex(int species, int forme) { - if (forme == 0) // no forme requested + if (forme <= 0) // no forme requested return species; - if (FormStatsIndex == 0) // no formes present + if (FormStatsIndex <= 0) // no formes present return species; if (forme > FormeCount) // beyond range of species' formes return species; From 21621bb9880c60137331222afecd6119cffd6945 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 4 Jul 2016 23:53:35 -0700 Subject: [PATCH 023/184] Display legal ability list gen3-5 --- PKX/f1-Main.cs | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index dbc9381e2..da9fa5749 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -752,7 +752,6 @@ private void openSAV(byte[] input, string path) extraBytes = PK3.ExtraBytes; break; case 4: - extraBytes = PK4.ExtraBytes; break; case 5: @@ -1097,7 +1096,9 @@ private void populateFieldsPK3(PK3 pk3) TB_PID.Text = pk3.PID.ToString("X8"); CB_HeldItem.SelectedValue = pk3.HeldItem; setAbilityList(); - DEV_Ability.SelectedValue = pk3.Ability; + int[] abils = PKX.getAbilities(pk3.Species, 0); + int abil = Array.IndexOf(abils, pk3.Ability); + CB_Ability.SelectedIndex = abil < 0 ? 0 : abil; CB_Nature.SelectedValue = pk3.Nature; TB_TID.Text = pk3.TID.ToString("00000"); TB_SID.Text = pk3.SID.ToString("00000"); @@ -1188,7 +1189,6 @@ private void populateFieldsPK4(PK4 pk4) 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"); @@ -1281,6 +1281,12 @@ private void populateFieldsPK4(PK4 pk4) if (HaX) DEV_Ability.SelectedValue = pk4.Ability; + else + { + int[] abils = PKX.getAbilities(pk4.Species, pk4.AltForm); + int abil = Array.IndexOf(abils, pk4.Ability); + CB_Ability.SelectedIndex = abil < 0 ? 0 : abil; + } } private void populateFieldsPK5(PK5 pk5) { @@ -1302,7 +1308,6 @@ private void populateFieldsPK5(PK5 pk5) 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"); @@ -1404,6 +1409,14 @@ private void populateFieldsPK5(PK5 pk5) if (HaX) DEV_Ability.SelectedValue = pk5.Ability; + else if (pk5.HiddenAbility) + CB_Ability.SelectedIndex = CB_Ability.Items.Count - 1; + else + { + int[] abils = PKX.getAbilities(pk5.Species, pk5.AltForm); + int abil = Array.IndexOf(abils, pk5.Ability); + CB_Ability.SelectedIndex = abil < 0 ? 0 : abil; + } } private void populateFieldsPK6(PK6 pk6) { @@ -1588,7 +1601,9 @@ private void setAbilityList() int[] abils = SAV.Personal[SAV.Personal[species].FormeIndex(species, formnum)].Abilities; string[] abilIdentifier = {" (1)", " (2)", " (H)"}; - List ability_list = abils.Select((t, i) => abilitylist[t] + abilIdentifier[i]).ToList(); + List ability_list = abils.Where(abil => abil != 0).Select((t, i) => abilitylist[t] + abilIdentifier[i]).ToList(); + if (!ability_list.Any()) + ability_list.Add(abilitylist[0] + abilIdentifier[0]); int curAbil = CB_Ability.SelectedIndex; CB_Ability.DataSource = ability_list; @@ -2796,8 +2811,7 @@ private PK3 preparePK3() 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.Ability = CB_Ability.SelectedIndex; // 0/1 (stored in IVbits) pk3.FatefulEncounter = CHK_Fateful.Checked; pk3.Gender = PKX.getGender(Label_Gender.Text); @@ -2885,8 +2899,7 @@ private PK4 preparePK4() 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.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); @@ -2979,6 +2992,7 @@ private PK4 preparePK4() if (HaX) { + pk4.Ability = (byte)Util.getIndex(DEV_Ability); pk4.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); } @@ -3001,7 +3015,7 @@ private PK5 preparePK5() 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.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; @@ -3095,6 +3109,7 @@ private PK5 preparePK5() if (HaX) { + pk5.Ability = (byte)Util.getIndex(DEV_Ability); pk5.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); } @@ -3279,7 +3294,7 @@ private PK6 preparePK6() 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(); From 7fe2a56d21c6c548ae808caf0c4948f963eef4c7 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Tue, 5 Jul 2016 19:12:18 -0700 Subject: [PATCH 024/184] Visually separate PCD from PGT Cards 19-21 are not visible, move the 3 PCD cards to that location. Resolves #130 , thanks @sora10pls ! --- SAV/SAV_Wondercard.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/SAV/SAV_Wondercard.cs b/SAV/SAV_Wondercard.cs index 2bac31c6d..d5a17bcac 100644 --- a/SAV/SAV_Wondercard.cs +++ b/SAV/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(); From ba6eec70ba0003279c8184412e1988154ee9c531 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 7 Jul 2016 05:44:43 -0700 Subject: [PATCH 025/184] Code formatting Some stuff can be abstract / sealed. --- MysteryGifts/PGF.cs | 2 +- MysteryGifts/PGT.cs | 5 +++-- MysteryGifts/WC6.cs | 2 +- PersonalInfo/PersonalInfo.cs | 2 +- Saves/SaveFile.cs | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/MysteryGifts/PGF.cs b/MysteryGifts/PGF.cs index 22892e310..775d074b6 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"; diff --git a/MysteryGifts/PGT.cs b/MysteryGifts/PGT.cs index d3fb13a51..5f76946c5 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); diff --git a/MysteryGifts/WC6.cs b/MysteryGifts/WC6.cs index 3e3eb7af3..696982c6f 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; diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs index e211c44eb..290125dfd 100644 --- a/PersonalInfo/PersonalInfo.cs +++ b/PersonalInfo/PersonalInfo.cs @@ -24,6 +24,7 @@ public abstract class PersonalInfo protected const int SIZE_AO = 0x50; 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; } @@ -75,7 +76,6 @@ protected static byte[] setBits(bool[] bits) data[i / 8] |= (byte)(bits[i] ? 1 << (i&0x7) : 0); return data; } - public virtual byte[] Write() { return Data; } // Data Manipulation public int FormeIndex(int species, int forme) diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index 8f0d36abe..daf05547c 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -291,7 +291,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 From 5a73217c2311f703f5dfd11bd0385a88cd3b97e9 Mon Sep 17 00:00:00 2001 From: Tyler Dunn Date: Fri, 8 Jul 2016 21:11:21 -0400 Subject: [PATCH 026/184] Remove safe cast in favor of direct cast --- Legality/Analysis.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Legality/Analysis.cs b/Legality/Analysis.cs index 5a84820fe..a956cf503 100644 --- a/Legality/Analysis.cs +++ b/Legality/Analysis.cs @@ -25,7 +25,7 @@ public LegalityAnalysis(PKM pk) { if (!(pk is PK6)) return; - pk6 = pk as PK6; + pk6 = (PK6) pk; try { updateRelearnLegality(); From 6b92806d70ac8cfa85086eb9638b25be898e97c9 Mon Sep 17 00:00:00 2001 From: Tyler Dunn Date: Fri, 8 Jul 2016 21:14:15 -0400 Subject: [PATCH 027/184] Small code improvement in Program.cs Give them their proper types --- Program.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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); From edbd1a71d7de20dda9c3021b82f94c94fe9f7811 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 8 Jul 2016 18:37:09 -0700 Subject: [PATCH 028/184] Revise assemblyinfo Long forgotten --- Properties/AssemblyInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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")] From 0a8dc20de159372151e9875cf62aebc8e978c1b6 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 8 Jul 2016 18:38:40 -0700 Subject: [PATCH 029/184] Add gen3 items list english only --- PKHeX.csproj | 1 + PKM/PK3.cs | 4 ++++ PKM/PKM.cs | 4 ++++ PKX/f1-Main.cs | 16 ++++++++++++---- Properties/Resources.resx | 3 +++ Resources/text/gen3/text_ItemsG3_en.txt | Bin 0 -> 6636 bytes 6 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 Resources/text/gen3/text_ItemsG3_en.txt diff --git a/PKHeX.csproj b/PKHeX.csproj index 3205f9848..5bcb76a18 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -434,6 +434,7 @@ + diff --git a/PKM/PK3.cs b/PKM/PK3.cs index ca3a575ae..3774e8887 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -180,6 +180,10 @@ public override bool getGenderIsValid() return false; } + public override bool CanHoldItem(ushort[] ValidArray) + { + return ValidArray.Contains((ushort)G3Item); + } public PK4 convertToPK4() { diff --git a/PKM/PKM.cs b/PKM/PKM.cs index eabb37437..29ac20380 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -279,6 +279,10 @@ 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(); } diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index da9fa5749..6404f4312 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -138,7 +138,7 @@ public Main() 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[] 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 = { }; @@ -837,6 +837,10 @@ private void InitializeStrings() if (CB_MainLanguage.SelectedIndex < 8) curlanguage = lang_val[CB_MainLanguage.SelectedIndex]; + // Past Generation strings + g3items = Util.getStringList("ItemsG3", "en"); + + // Current Generation strings string l = curlanguage; natures = Util.getStringList("natures", l); types = Util.getStringList("types", l); @@ -1004,7 +1008,11 @@ private void InitializeLanguage() } private void populateFilteredDataSources() { - ItemDataSource = Util.getCBList(itemlist, (HaX ? Enumerable.Range(0, SAV.MaxItemID) : SAV.HeldItems.Select(i => (int)i)).ToArray()); + string[] items = itemlist; + if (SAV.Generation == 3) + items = g3items; + + 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), null); CB_Ball.DataSource = new BindingSource(BallDataSource.Where(b => b.Value <= SAV.MaxBallID), null); @@ -1094,7 +1102,7 @@ private void populateFieldsPK3(PK3 pk3) 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; + CB_HeldItem.SelectedValue = pk3.G3Item; setAbilityList(); int[] abils = PKX.getAbilities(pk3.Species, 0); int abil = Array.IndexOf(abils, pk3.Ability); @@ -2755,7 +2763,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]}"); } diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 2ede933af..7e2cd0ed2 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -5896,4 +5896,7 @@ ..\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 + \ No newline at end of file diff --git a/Resources/text/gen3/text_ItemsG3_en.txt b/Resources/text/gen3/text_ItemsG3_en.txt new file mode 100644 index 0000000000000000000000000000000000000000..99af648635e7dd1d74f70c629ac98718fb4cc05e GIT binary patch literal 6636 zcmdUzS#w)O5QXPizd~=o0~A`q@PsBFnDc}bjq%%1?xH^;MGIYm+M zLb)W5dir+v^m4lA{`tq}VJ}>Vc{mGSgkIPUN8vWy>DMCk!>WE=>8}@l*7u!gM-6pL zlrz!p8tT5}U54Kq+C*IE`Ygh%yQqM$Ljnd|lwjHg&OFQ92>zc9>-pj&E zQRjMk9xlYSAN_D8OFlNdo05pP`+>7@-s@(Q8NAvBYcrhITE!U1_?KM|xpH z{y@rw&Vl{!BR^8>9lXJlccLeot*!7ETgg}Ze-VzOq&wMcTgh#_xFK1IwjuthsMC0w z!ckLS>A8n^#@iMF<(-7D#0{1a6Ec!$_QEe(uV{5A zexh#5x_Hj@LANQELcXMDPQ(v>@f`LcDe0Pu3jR<GdTEv@-aPDkJTd5~JUg%rWPoAgw zq3rBR!ijuVb00?kfry2Vh`IY08kk2fsrig8bYoDq@E*jd+{lWPhQ2O3Qf3WxQc8O)ZfF?GCwmqra}C z6q}YCy$i`=25NVhfV#9vjMgG%ZOcuq(U)85p{R7fmWuZ;mOQW`8mRct;ocFA(=49| z-+YWSQSC{0Ao^oX-4pLzAEH;&52Lr9^CMNn6E~eFz)a>v>bI8kQnV{^-!6IKr+6+p zyeHBU-EGl~L}XudyC|FBM-X`nX9sGAJ+rW)>hY6oEG6&SM z+&?%;SId61i%OvK>t~Fq&q-UCZfc|}i>K2RQA>IyUROysqqd}du4k6*@)Sc4Y^@^i zIrpPJ?aqo~2pTL$i@9#D_@)~~iDN=zIz(+Tb18K}#M+%tA?<4P$c1p?E_UZKv(^*d zwygKON_4?VZSR^%D(FvJ3jkm~shn!Sw?feJtCXxR@`#uS?RJ~JoyNR?i_ay6m+Knd*jn1AcHpRyj#d)~fdfoyVIT>iT zA-ilD83Q8sl&VKJv8bA01D*XlZJ#9CqpDpC!#wPd~X!8X`hJb?^&lU?qz z^gZ$sNuG_EDajIi${v16vpV$4Kp*BFf2$qru5THxM(j3{Al1Jf#mgP{L{iJ-PTT?IE@^h{M=iSNgO=g zwmzkI`#$Y_qz3Hgg*?d{i<|JJJb|y64Sf!fD4}5TJek>-mGfvPk%k*|;I_C-FWIuM z%;72ST6J!;w^=6Cx=Qb(pNOfcWfuPwiu~W{OjXWfW>m+gzF8KkyL2~}?X9wKckiKP zC*deH#>_%Q6CU}V=P2*Q%$q4=Kq~Tt_Ybd?BiPHE2P$hz|5+7EduuY+MEJ~y>~>^b zS?C3KJt;EJyEaSQsWvc`uIjfrY4Qa19^&);Yy}k!Ubv%y7sh1}jZ+~7eSIPLnNW?l zSG*f=Pf6ZLcg17r1r^;xEWwzT=6Je~tGqo|iYk*Rm0u#7D6U6l82c4JQj^yaWx=n4 zs%N4yJ>Vy9l(Xo`L3N5m8$LrDKSTSbq8UMr$)INP3=y^;=?x&JZ#b!&^7f^s*YV(V z?h!pjd^da@2D03%VP1{$YMfUu^6Hzs`Zlk=%d797Rs+ellkJo!>nVNbquqPVb(FsI)+)tDC-zy9iyycly!`< zj#1Vz$~s0_$0+LhtYe&YyofrsbIiRW9$pa- zuZV|N#KSA%;T7@lig`uOtfdB)5NhX18X1`{>f$w{N7?ojcVM z7W0nF6ApRLEuT3GROe0KTh*y&VeGzqvXY4a>;vC9BbersQj<06mzmyglI;~VF$>@! zzbktyUA$443bhJqzY!1Jg7+WX^U98&XBH^4REwD_iU3Fq616+^%)q-{;tdWmEr8+R fJnsRRCAgKP`E4dTb1TsTQF$MgVn{}?Yrp*kLZ2Lf literal 0 HcmV?d00001 From 689e7cec4b98727b2b3fe50a4e00c1406435d381 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 9 Jul 2016 13:54:49 -0700 Subject: [PATCH 030/184] SAV4 Fix trainer coordinates --- Saves/SAV4.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index e7f308979..d9d2b07e0 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -426,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 { @@ -437,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 @@ -451,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 { @@ -462,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; } } @@ -483,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 { @@ -494,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 @@ -508,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 { @@ -519,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; } } From 818a45cf28888f9f99d56eebce98737b30d6d195 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 9 Jul 2016 14:01:31 -0700 Subject: [PATCH 031/184] Use func/action for pkm field manipulation Gonna move the generation-specific methods to a separate file eventually. --- PKX/f1-Main.cs | 88 ++++++++++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 39 deletions(-) diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 6404f4312..8c1aaae47 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -22,6 +22,8 @@ public Main() CB_ExtraBytes.SelectedIndex = 0; SaveFile.SetUpdateDex = Menu_ModifyDex.Checked; SaveFile.SetUpdatePKM = Menu_ModifyPK6.Checked; + getFieldsfromPKM = populateFieldsPK6; + getPKMfromFields = preparePK6; // Set up form properties and arrays. SlotPictureBoxes = new[] { @@ -749,15 +751,23 @@ private void openSAV(byte[] input, string path) 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"); @@ -1027,6 +1037,8 @@ private void populateFilteredDataSources() cb.DataSource = new BindingSource(MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID), 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; } @@ -1040,24 +1052,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) // converted + Util.Alert("Converted File."); } + getFieldsfromPKM(); + CB_EncounterType.Visible = Label_EncounterType.Visible = pkm.Gen4; fieldsInitialized = oldInit; updateIVs(null, null); @@ -1084,8 +1092,12 @@ public void populateFields(PKM pk, bool focus = true) dragout.Image = pk.Sprite; updateLegality(); } - private void populateFieldsPK3(PK3 pk3) + 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) @@ -1177,8 +1189,12 @@ private void populateFieldsPK3(PK3 pk3) 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) + 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) @@ -1293,11 +1309,15 @@ private void populateFieldsPK4(PK4 pk4) { int[] abils = PKX.getAbilities(pk4.Species, pk4.AltForm); int abil = Array.IndexOf(abils, pk4.Ability); - CB_Ability.SelectedIndex = abil < 0 ? 0 : abil; + CB_Ability.SelectedIndex = abil < 0 ? 0 : abil < CB_Ability.Items.Count ? abil : 0; } } - private void populateFieldsPK5(PK5 pk5) + 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) @@ -1426,8 +1446,12 @@ private void populateFieldsPK5(PK5 pk5) CB_Ability.SelectedIndex = abil < 0 ? 0 : abil; } } - private void populateFieldsPK6(PK6 pk6) + 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) @@ -1615,7 +1639,7 @@ private void setAbilityList() int curAbil = CB_Ability.SelectedIndex; CB_Ability.DataSource = ability_list; - CB_Ability.SelectedIndex = curAbil; + CB_Ability.SelectedIndex = curAbil < CB_Ability.Items.Count ? curAbil : CB_Ability.Items.Count -1; } // PKX Data Calculation Functions // private void setIsShiny() @@ -2789,25 +2813,10 @@ 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() + private PKM preparePK3() { PK3 pk3 = pkm as PK3; if (pk3 == null) @@ -2895,7 +2904,7 @@ private PK3 preparePK3() pk3.RefreshChecksum(); return pk3; } - private PK4 preparePK4() + private PKM preparePK4() { PK4 pk4 = pkm as PK4; if (pk4 == null) @@ -3010,7 +3019,7 @@ private PK4 preparePK4() pk4.RefreshChecksum(); return pk4; } - private PK5 preparePK5() + private PKM preparePK5() { PK5 pk5 = pkm as PK5; if (pk5 == null) @@ -3127,11 +3136,12 @@ private PK5 preparePK5() pk5.RefreshChecksum(); return pk5; } - private PK6 preparePK6() + private PKM preparePK6() { PK6 pk6 = pkm as PK6; if (pk6 == null) return null; + // Repopulate PK6 with Edited Stuff if (Util.getIndex(CB_GameOrigin) < 24) { From 9f554fe76ea73afbce35d510eb4790ae06f108f6 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 9 Jul 2016 14:21:28 -0700 Subject: [PATCH 032/184] Ability out of range check badly hacked pokemon with no abiltiy --- PKX/f1-Main.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 6404f4312..ae7afda2e 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -1106,7 +1106,7 @@ private void populateFieldsPK3(PK3 pk3) setAbilityList(); int[] abils = PKX.getAbilities(pk3.Species, 0); int abil = Array.IndexOf(abils, pk3.Ability); - CB_Ability.SelectedIndex = abil < 0 ? 0 : abil; + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; CB_Nature.SelectedValue = pk3.Nature; TB_TID.Text = pk3.TID.ToString("00000"); TB_SID.Text = pk3.SID.ToString("00000"); @@ -1293,7 +1293,7 @@ private void populateFieldsPK4(PK4 pk4) { int[] abils = PKX.getAbilities(pk4.Species, pk4.AltForm); int abil = Array.IndexOf(abils, pk4.Ability); - CB_Ability.SelectedIndex = abil < 0 ? 0 : abil; + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; } } private void populateFieldsPK5(PK5 pk5) @@ -1423,7 +1423,7 @@ private void populateFieldsPK5(PK5 pk5) { int[] abils = PKX.getAbilities(pk5.Species, pk5.AltForm); int abil = Array.IndexOf(abils, pk5.Ability); - CB_Ability.SelectedIndex = abil < 0 ? 0 : abil; + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; } } private void populateFieldsPK6(PK6 pk6) @@ -1609,13 +1609,13 @@ private void setAbilityList() int[] abils = SAV.Personal[SAV.Personal[species].FormeIndex(species, formnum)].Abilities; string[] abilIdentifier = {" (1)", " (2)", " (H)"}; - List ability_list = abils.Where(abil => abil != 0).Select((t, i) => abilitylist[t] + abilIdentifier[i]).ToList(); + 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]); - 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() From 08d751d54b84c869703cce6da8f9f27fa8155351 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 9 Jul 2016 14:30:49 -0700 Subject: [PATCH 033/184] Move files Getting a little crowded and misleading (PKX/SAV folders), let's relocate. --- {PKX => MainWindow}/f1-Main.Designer.cs | 0 {PKX => MainWindow}/f1-Main.cs | 0 {PKX => MainWindow}/f1-Main.resx | 0 PKHeX.csproj | 130 +++++++++--------- .../PKM Editors}/f2-Text.Designer.cs | 0 {PKX => Subforms/PKM Editors}/f2-Text.cs | 0 {PKX => Subforms/PKM Editors}/f2-Text.resx | 0 .../PKM Editors}/f3-MemoryAmie.Designer.cs | 0 .../PKM Editors}/f3-MemoryAmie.cs | 0 .../PKM Editors}/f3-MemoryAmie.resx | 0 .../PKM Editors}/f4-RibbMedal.Designer.cs | 0 {PKX => Subforms/PKM Editors}/f4-RibbMedal.cs | 0 .../PKM Editors}/f4-RibbMedal.resx | 0 {SAV => Subforms}/SAV_Database.Designer.cs | 0 {SAV => Subforms}/SAV_Database.cs | 0 {SAV => Subforms}/SAV_Database.resx | 0 .../Gen6}/SAV_BerryFieldXY.Designer.cs | 0 .../Save Editors/Gen6}/SAV_BerryFieldXY.cs | 0 .../Save Editors/Gen6}/SAV_BerryFieldXY.resx | 0 .../Gen6}/SAV_BoxLayout.Designer.cs | 0 .../Save Editors/Gen6}/SAV_BoxLayout.cs | 0 .../Save Editors/Gen6}/SAV_BoxLayout.resx | 0 .../Gen6}/SAV_HallOfFame.Designer.cs | 0 .../Save Editors/Gen6}/SAV_HallOfFame.cs | 0 .../Save Editors/Gen6}/SAV_HallOfFame.resx | 0 .../Save Editors/Gen6}/SAV_OPower.Designer.cs | 0 .../Save Editors/Gen6}/SAV_OPower.cs | 0 .../Save Editors/Gen6}/SAV_OPower.resx | 0 .../Gen6}/SAV_PokeBlockORAS.Designer.cs | 0 .../Save Editors/Gen6}/SAV_PokeBlockORAS.cs | 0 .../Save Editors/Gen6}/SAV_PokeBlockORAS.resx | 0 .../Gen6}/SAV_PokedexORAS.Designer.cs | 0 .../Save Editors/Gen6}/SAV_PokedexORAS.cs | 0 .../Save Editors/Gen6}/SAV_PokedexORAS.resx | 0 .../Gen6}/SAV_PokedexXY.Designer.cs | 0 .../Save Editors/Gen6}/SAV_PokedexXY.cs | 0 .../Save Editors/Gen6}/SAV_PokedexXY.resx | 0 .../Gen6}/SAV_Pokepuff.Designer.cs | 0 .../Save Editors/Gen6}/SAV_Pokepuff.cs | 0 .../Save Editors/Gen6}/SAV_Pokepuff.resx | 0 .../Gen6}/SAV_SecretBase.Designer.cs | 0 .../Save Editors/Gen6}/SAV_SecretBase.cs | 0 .../Save Editors/Gen6}/SAV_SecretBase.resx | 0 .../Gen6}/SAV_SuperTrain.Designer.cs | 0 .../Save Editors/Gen6}/SAV_SuperTrain.cs | 0 .../Save Editors/Gen6}/SAV_SuperTrain.resx | 0 .../Gen6}/SAV_Trainer.Designer.cs | 0 .../Save Editors/Gen6}/SAV_Trainer.cs | 0 .../Save Editors/Gen6}/SAV_Trainer.resx | 0 .../Save Editors}/SAV_EventFlags.Designer.cs | 0 .../Save Editors}/SAV_EventFlags.cs | 0 .../Save Editors}/SAV_EventFlags.resx | 0 .../Save Editors}/SAV_Inventory.Designer.cs | 0 .../Save Editors}/SAV_Inventory.cs | 0 .../Save Editors}/SAV_Inventory.resx | 0 .../SAV_SimpleTrainer.Designer.cs | 0 .../Save Editors}/SAV_SimpleTrainer.cs | 0 .../Save Editors}/SAV_SimpleTrainer.resx | 0 .../Save Editors}/SAV_Wondercard.Designer.cs | 0 .../Save Editors}/SAV_Wondercard.cs | 0 .../Save Editors}/SAV_Wondercard.resx | 0 {SAV => Subforms}/frmReport.Designer.cs | 0 {SAV => Subforms}/frmReport.cs | 0 {SAV => Subforms}/frmReport.resx | 0 64 files changed, 66 insertions(+), 64 deletions(-) rename {PKX => MainWindow}/f1-Main.Designer.cs (100%) rename {PKX => MainWindow}/f1-Main.cs (100%) rename {PKX => MainWindow}/f1-Main.resx (100%) rename {PKX => Subforms/PKM Editors}/f2-Text.Designer.cs (100%) rename {PKX => Subforms/PKM Editors}/f2-Text.cs (100%) rename {PKX => Subforms/PKM Editors}/f2-Text.resx (100%) rename {PKX => Subforms/PKM Editors}/f3-MemoryAmie.Designer.cs (100%) rename {PKX => Subforms/PKM Editors}/f3-MemoryAmie.cs (100%) rename {PKX => Subforms/PKM Editors}/f3-MemoryAmie.resx (100%) rename {PKX => Subforms/PKM Editors}/f4-RibbMedal.Designer.cs (100%) rename {PKX => Subforms/PKM Editors}/f4-RibbMedal.cs (100%) rename {PKX => Subforms/PKM Editors}/f4-RibbMedal.resx (100%) rename {SAV => Subforms}/SAV_Database.Designer.cs (100%) rename {SAV => Subforms}/SAV_Database.cs (100%) rename {SAV => Subforms}/SAV_Database.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_BerryFieldXY.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_BerryFieldXY.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_BerryFieldXY.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_BoxLayout.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_BoxLayout.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_BoxLayout.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_HallOfFame.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_HallOfFame.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_HallOfFame.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_OPower.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_OPower.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_OPower.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokeBlockORAS.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokeBlockORAS.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokeBlockORAS.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokedexORAS.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokedexORAS.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokedexORAS.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokedexXY.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokedexXY.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_PokedexXY.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_Pokepuff.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_Pokepuff.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_Pokepuff.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_SecretBase.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_SecretBase.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_SecretBase.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_SuperTrain.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_SuperTrain.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_SuperTrain.resx (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_Trainer.Designer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_Trainer.cs (100%) rename {SAV => Subforms/Save Editors/Gen6}/SAV_Trainer.resx (100%) rename {SAV => Subforms/Save Editors}/SAV_EventFlags.Designer.cs (100%) rename {SAV => Subforms/Save Editors}/SAV_EventFlags.cs (100%) rename {SAV => Subforms/Save Editors}/SAV_EventFlags.resx (100%) rename {SAV => Subforms/Save Editors}/SAV_Inventory.Designer.cs (100%) rename {SAV => Subforms/Save Editors}/SAV_Inventory.cs (100%) rename {SAV => Subforms/Save Editors}/SAV_Inventory.resx (100%) rename {SAV => Subforms/Save Editors}/SAV_SimpleTrainer.Designer.cs (100%) rename {SAV => Subforms/Save Editors}/SAV_SimpleTrainer.cs (100%) rename {SAV => Subforms/Save Editors}/SAV_SimpleTrainer.resx (100%) rename {SAV => Subforms/Save Editors}/SAV_Wondercard.Designer.cs (100%) rename {SAV => Subforms/Save Editors}/SAV_Wondercard.cs (100%) rename {SAV => Subforms/Save Editors}/SAV_Wondercard.resx (100%) rename {SAV => Subforms}/frmReport.Designer.cs (100%) rename {SAV => Subforms}/frmReport.cs (100%) rename {SAV => Subforms}/frmReport.resx (100%) diff --git a/PKX/f1-Main.Designer.cs b/MainWindow/f1-Main.Designer.cs similarity index 100% rename from PKX/f1-Main.Designer.cs rename to MainWindow/f1-Main.Designer.cs diff --git a/PKX/f1-Main.cs b/MainWindow/f1-Main.cs similarity index 100% rename from PKX/f1-Main.cs rename to MainWindow/f1-Main.cs diff --git a/PKX/f1-Main.resx b/MainWindow/f1-Main.resx similarity index 100% rename from PKX/f1-Main.resx rename to MainWindow/f1-Main.resx diff --git a/PKHeX.csproj b/PKHeX.csproj index 5bcb76a18..f8ff7777e 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -106,10 +106,10 @@ - + Form - + f2-Text.cs @@ -119,22 +119,22 @@ About.cs - + Form - + f1-Main.cs - + Form - + f4-RibbMedal.cs - + Form - + f3-MemoryAmie.cs @@ -144,108 +144,108 @@ - + 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 @@ -259,39 +259,39 @@ QR.cs Designer - + f2-Text.cs About.cs Designer - + f1-Main.cs Designer - + f4-RibbMedal.cs - + f3-MemoryAmie.cs - + SAV_PokeBlockORAS.cs - + SAV_Database.cs - + SAV_PokedexORAS.cs - + SAV_SecretBase.cs - + SAV_EventFlags.cs - + frmReport.cs @@ -299,37 +299,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 @@ -2410,7 +2410,9 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 From 260c80a3d0e7e4930b9fb25c1f8f650087a849f2 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Tue, 12 Jul 2016 22:20:18 -0700 Subject: [PATCH 045/184] Sync why. does. this. not. commit. --- Subforms/PKM Editors/BatchEditor.Designer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Subforms/PKM Editors/BatchEditor.Designer.cs b/Subforms/PKM Editors/BatchEditor.Designer.cs index ed8ab349a..12b69494b 100644 --- a/Subforms/PKM Editors/BatchEditor.Designer.cs +++ b/Subforms/PKM Editors/BatchEditor.Designer.cs @@ -153,4 +153,4 @@ private void InitializeComponent() private System.Windows.Forms.Button B_Go; private System.Windows.Forms.ProgressBar PB_Show; } -} +} \ No newline at end of file From b6e92021583446c5881905fbdf95f886a1121962 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 14 Jul 2016 20:15:05 -0700 Subject: [PATCH 046/184] Allow batch editor without HaX May be a mistake :) Tweak ability display to behave properly regarding gen1/2 saves if ever implemented --- MainWindow/Main.Designer.cs | 9 +- MainWindow/Main.cs | 8 +- MainWindow/Main.resx | 783 ------------------------------------ 3 files changed, 6 insertions(+), 794 deletions(-) diff --git a/MainWindow/Main.Designer.cs b/MainWindow/Main.Designer.cs index 2230c4b16..d368d58ab 100644 --- a/MainWindow/Main.Designer.cs +++ b/MainWindow/Main.Designer.cs @@ -2834,7 +2834,6 @@ public void InitializeComponent() this.Menu_BatchEditor.ShowShortcutKeys = false; this.Menu_BatchEditor.Size = new System.Drawing.Size(152, 22); this.Menu_BatchEditor.Text = "Batch Editor"; - this.Menu_BatchEditor.Visible = false; this.Menu_BatchEditor.Click += new System.EventHandler(this.manMenuBatchEditor); // // Menu_Other @@ -2880,7 +2879,7 @@ public void InitializeComponent() this.CB_MainLanguage}); this.Menu_Language.Image = global::PKHeX.Properties.Resources.language; this.Menu_Language.Name = "Menu_Language"; - this.Menu_Language.Size = new System.Drawing.Size(152, 22); + this.Menu_Language.Size = new System.Drawing.Size(139, 22); this.Menu_Language.Text = "Language"; // // CB_MainLanguage @@ -2897,7 +2896,7 @@ public void InitializeComponent() 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(152, 22); + this.Menu_Modify.Size = new System.Drawing.Size(139, 22); this.Menu_Modify.Text = "Set to SAV"; // // Menu_ModifyDex @@ -2926,7 +2925,7 @@ public void InitializeComponent() this.Menu_Unicode.CheckOnClick = true; this.Menu_Unicode.CheckState = System.Windows.Forms.CheckState.Checked; this.Menu_Unicode.Name = "Menu_Unicode"; - this.Menu_Unicode.Size = new System.Drawing.Size(152, 22); + this.Menu_Unicode.Size = new System.Drawing.Size(139, 22); this.Menu_Unicode.Text = "Unicode"; this.Menu_Unicode.Click += new System.EventHandler(this.mainMenuUnicode); // @@ -2936,7 +2935,7 @@ public void InitializeComponent() this.Menu_About.Name = "Menu_About"; this.Menu_About.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P))); this.Menu_About.ShowShortcutKeys = false; - this.Menu_About.Size = new System.Drawing.Size(152, 22); + this.Menu_About.Size = new System.Drawing.Size(139, 22); this.Menu_About.Text = "About &PKHeX"; this.Menu_About.Click += new System.EventHandler(this.mainMenuAbout); // diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index f9d1eabc3..7ca07ea60 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -94,7 +94,6 @@ public Main() string[] args = Environment.GetCommandLineArgs(); string filename = args.Length > 0 ? Path.GetFileNameWithoutExtension(args[0]).ToLower() : ""; HaX = filename.IndexOf("hax", StringComparison.Ordinal) >= 0; - Menu_BatchEditor.Visible = HaX; // Try and detect the language string lastTwoChars = filename.Length > 2 ? filename.Substring(filename.Length - 2) : ""; @@ -343,8 +342,6 @@ private void mainMenuBoxDump(object sender, EventArgs e) } private void manMenuBatchEditor(object sender, EventArgs e) { - if (!HaX) // no hotkey cheatin - return; new BatchEditor().ShowDialog(); setPKXBoxes(); // refresh } @@ -740,7 +737,6 @@ 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; PB_Legal.Visible = PB_WarnMove1.Visible = PB_WarnMove2.Visible = PB_WarnMove3.Visible = PB_WarnMove4.Visible = SAV.Generation >= 6; @@ -752,9 +748,9 @@ 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; + 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; switch (SAV.Generation) { diff --git a/MainWindow/Main.resx b/MainWindow/Main.resx index d2cb16a0f..45a4409d3 100644 --- a/MainWindow/Main.resx +++ b/MainWindow/Main.resx @@ -237,138 +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 - @@ -410,63 +278,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -668,177 +479,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 @@ -913,30 +553,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAeZJREFUOE+1 @@ -1059,90 +675,12 @@ 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 @@ -1164,15 +702,6 @@ True - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1333,12 +862,6 @@ True - - True - - - True - True @@ -1363,27 +886,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -1402,108 +904,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 @@ -1609,42 +1009,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAG8AAACgCAYAAAACezIBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1758,24 +1122,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAG8AAACgCAYAAAACezIBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1846,54 +1192,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -1933,18 +1231,12 @@ True - - True - True True - - True - True @@ -1954,36 +1246,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -2017,51 +1279,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True From 69e7f19101b5a23344264b2c476805eead331753 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 14 Jul 2016 20:22:24 -0700 Subject: [PATCH 047/184] Add Japanese prompt for <=Gen3 games --- MainWindow/Main.cs | 7 +++++++ Saves/SAV3.cs | 1 - Saves/SaveFile.cs | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 7ca07ea60..b9a9a16c2 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -686,6 +686,13 @@ 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 + { + var dr = Util.Prompt(MessageBoxButtons.YesNoCancel, $"Generation {sav.Generation} Save File detected.", "Does this file originate from a Japanese game?"); + if (dr == DialogResult.Cancel) + return; + sav.Japanese = dr == DialogResult.Yes; + } SAV = sav; SAV.FilePath = Path.GetDirectoryName(path); diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index c1b2ee61b..fb49f35c4 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -181,7 +181,6 @@ public override string ChecksumInfo // Trainer Info public override GameVersion Version { get; protected set; } - private bool Japanese; private uint SecurityKey { get diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index daf05547c..e7c837e23 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; } From a1c0db27c3c76b0bf938ac21d0477d6bba44fb15 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 14 Jul 2016 20:37:11 -0700 Subject: [PATCH 048/184] Sync current changelog Decent summary I guess... --- Resources/text/changelog.txt | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Resources/text/changelog.txt b/Resources/text/changelog.txt index e1fc131b2..0bca338cb 100644 --- a/Resources/text/changelog.txt +++ b/Resources/text/changelog.txt @@ -724,4 +724,27 @@ 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/XX/16 - New Update: + - 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: 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. + - - An example script is provided when the window opens. Filters can be used so that only desired PKM are modified. + - - "=": 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. \ No newline at end of file From cb353e00651534c3a05afb9047990d3a3b61a20d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 14 Jul 2016 20:37:18 -0700 Subject: [PATCH 049/184] Disallow box sorting if no boxes --- MainWindow/Main.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index b9a9a16c2..adf3f89d3 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -2458,6 +2458,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?!")) From 7ed0f1adf8f6a9c6f33e9fed3126ba5418c1bcd8 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 10:00:50 -0700 Subject: [PATCH 050/184] Move property reflection to util --- Subforms/PKM Editors/BatchEditor.cs | 17 ----------------- Util/ReflectUtil.cs | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 17 deletions(-) create mode 100644 Util/ReflectUtil.cs diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index d91d27526..a05ed20ae 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -3,7 +3,6 @@ using System.ComponentModel; using System.IO; using System.Linq; -using System.Reflection; using System.Windows.Forms; namespace PKHeX @@ -209,21 +208,5 @@ private static bool ProcessPKM(PKM PKM, IEnumerable Filters, } return true; } - - private static class ReflectUtil - { - public static bool GetValueEquals(T obj, string propertyName, object value) - { - PropertyInfo pi = typeof(T).GetProperty(propertyName); - var v = pi.GetValue(obj, null); - var c = Convert.ChangeType(value, pi.PropertyType); - return v.Equals(c); - } - public static void SetValue(T obj, string propertyName, object value) - { - PropertyInfo pi = typeof(T).GetProperty(propertyName); - pi.SetValue(obj, Convert.ChangeType(value, pi.PropertyType), null); - } - } } } diff --git a/Util/ReflectUtil.cs b/Util/ReflectUtil.cs new file mode 100644 index 000000000..737474346 --- /dev/null +++ b/Util/ReflectUtil.cs @@ -0,0 +1,21 @@ +using System; +using System.Reflection; + +namespace PKHeX +{ + public static class ReflectUtil + { + internal static bool GetValueEquals(T obj, string propertyName, object value) + { + PropertyInfo pi = typeof(T).GetProperty(propertyName); + var v = pi.GetValue(obj, null); + var c = Convert.ChangeType(value, pi.PropertyType); + return v.Equals(c); + } + internal static void SetValue(T obj, string propertyName, object value) + { + PropertyInfo pi = typeof(T).GetProperty(propertyName); + pi.SetValue(obj, Convert.ChangeType(value, pi.PropertyType), null); + } + } +} From b47b26222f723583f0fe2d1684427d53f8bdce73 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 15:52:33 -0700 Subject: [PATCH 051/184] More descriptive pkm properties (ribbon/training) Adding new update for editors --- Legality/Checks.cs | 26 +-- MysteryGifts/PGF.cs | 60 ++--- MysteryGifts/WC6.cs | 60 ++--- PKM/PK3.cs | 99 ++++---- PKM/PK4.cs | 172 +++++++------- PKM/PK5.cs | 180 +++++++-------- PKM/PK6.cs | 172 +++++++------- Subforms/PKM Editors/RibbMedal.cs | 328 +++++++++++++-------------- Subforms/PKM Editors/RibbonEditor.cs | 164 ++++++++++++++ 9 files changed, 713 insertions(+), 548 deletions(-) create mode 100644 Subforms/PKM Editors/RibbonEditor.cs diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 52f97c134..4d55eda33 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -369,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 @@ -404,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) diff --git a/MysteryGifts/PGF.cs b/MysteryGifts/PGF.cs index 775d074b6..a036a6bb9 100644 --- a/MysteryGifts/PGF.cs +++ b/MysteryGifts/PGF.cs @@ -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; } } @@ -169,22 +169,22 @@ 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), FatefulEncounter = true, diff --git a/MysteryGifts/WC6.cs b/MysteryGifts/WC6.cs index 696982c6f..f2b969a1a 100644 --- a/MysteryGifts/WC6.cs +++ b/MysteryGifts/WC6.cs @@ -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 @@ -255,23 +255,23 @@ 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_Intensity = OT_Intensity, diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 3774e8887..af33b53e1 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -121,23 +121,23 @@ 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 int RibbonCountG3Cool { get { return (int)(RIB0 >> 00) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 00)) | (uint)(value & 7)); } } + public int RibbonCountG3Beauty { get { return (int)(RIB0 >> 03) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 03)) | (uint)(value & 7)); } } + public int RibbonCountG3Cute { get { return (int)(RIB0 >> 06) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 06)) | (uint)(value & 7)); } } + public int RibbonCountG3Smart { get { return (int)(RIB0 >> 09) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 09)) | (uint)(value & 7)); } } + public int RibbonCountG3Tough { get { return (int)(RIB0 >> 12) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 12)) | (uint)(value & 7)); } } + public bool RibbonChampionG3Hoenn { get { return (RIB0 & (1 << 15)) == 1 << 15; } set { RIB0 = (uint)(RIB0 & ~(1 << 15) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonWinning { get { return (RIB0 & (1 << 16)) == 1 << 16; } set { RIB0 = (uint)(RIB0 & ~(1 << 16) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonVictory { get { return (RIB0 & (1 << 17)) == 1 << 17; } set { RIB0 = (uint)(RIB0 & ~(1 << 17) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonArtist { get { return (RIB0 & (1 << 18)) == 1 << 18; } set { RIB0 = (uint)(RIB0 & ~(1 << 18) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonEffort { get { return (RIB0 & (1 << 19)) == 1 << 19; } set { RIB0 = (uint)(RIB0 & ~(1 << 19) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonChampionBattle { get { return (RIB0 & (1 << 20)) == 1 << 20; } set { RIB0 = (uint)(RIB0 & ~(1 << 20) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonChampionRegional { get { return (RIB0 & (1 << 21)) == 1 << 21; } set { RIB0 = (uint)(RIB0 & ~(1 << 21) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonChampionNational { get { return (RIB0 & (1 << 22)) == 1 << 22; } set { RIB0 = (uint)(RIB0 & ~(1 << 22) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonCountry { get { return (RIB0 & (1 << 23)) == 1 << 23; } set { RIB0 = (uint)(RIB0 & ~(1 << 23) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonNational { get { return (RIB0 & (1 << 24)) == 1 << 24; } set { RIB0 = (uint)(RIB0 & ~(1 << 24) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonEarth { get { return (RIB0 & (1 << 25)) == 1 << 25; } set { RIB0 = (uint)(RIB0 & ~(1 << 25) | (uint)(value ? 1 << 0 : 0)); } } + public bool RibbonWorld { 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)); } } @@ -243,41 +243,42 @@ 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, }; // 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); diff --git a/PKM/PK4.cs b/PKM/PK4.cs index 007cb2b38..568e97160 100644 --- a/PKM/PK4.cs +++ b/PKM/PK4.cs @@ -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 RibbonSinnohChampion { 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 diff --git a/PKM/PK5.cs b/PKM/PK5.cs index 89c5c389a..2be3fc1bf 100644 --- a/PKM/PK5.cs +++ b/PKM/PK5.cs @@ -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 RibbonSinnohChampion { 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 @@ -426,7 +426,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 +446,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; diff --git a/PKM/PK6.cs b/PKM/PK6.cs index 329bc1960..83d2e711f 100644 --- a/PKM/PK6.cs +++ b/PKM/PK6.cs @@ -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; } } diff --git a/Subforms/PKM Editors/RibbMedal.cs b/Subforms/PKM Editors/RibbMedal.cs index 318880dc2..c33c5ddb3 100644 --- a/Subforms/PKM Editors/RibbMedal.cs +++ b/Subforms/PKM Editors/RibbMedal.cs @@ -65,101 +65,101 @@ private void getData() 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; + TMedal1_2.Checked = pk6.SuperTrain1_SPA; + TMedal1_3.Checked = pk6.SuperTrain1_HP; + TMedal1_4.Checked = pk6.SuperTrain1_ATK; + TMedal1_5.Checked = pk6.SuperTrain1_SPD; + TMedal1_6.Checked = pk6.SuperTrain1_SPE; + TMedal1_7.Checked = pk6.SuperTrain1_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; + TMedal2_0.Checked = pk6.SuperTrain2_SPA; + TMedal2_1.Checked = pk6.SuperTrain2_HP; + TMedal2_2.Checked = pk6.SuperTrain2_ATK; + TMedal2_3.Checked = pk6.SuperTrain2_SPD; + TMedal2_4.Checked = pk6.SuperTrain2_SPE; + TMedal2_5.Checked = pk6.SuperTrain2_DEF; + TMedal2_6.Checked = pk6.SuperTrain3_SPA; + TMedal2_7.Checked = pk6.SuperTrain3_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; + TMedal3_0.Checked = pk6.SuperTrain3_ATK; + TMedal3_1.Checked = pk6.SuperTrain3_SPD; + TMedal3_2.Checked = pk6.SuperTrain3_SPE; + TMedal3_3.Checked = pk6.SuperTrain3_DEF; + TMedal3_4.Checked = pk6.SuperTrain4_1; + TMedal3_5.Checked = pk6.SuperTrain5_1; + TMedal3_6.Checked = pk6.SuperTrain5_2; + TMedal3_7.Checked = pk6.SuperTrain5_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; + TMedal4_0.Checked = pk6.SuperTrain5_4; + TMedal4_1.Checked = pk6.SuperTrain6_1; + TMedal4_2.Checked = pk6.SuperTrain6_2; + TMedal4_3.Checked = pk6.SuperTrain6_3; + TMedal4_4.Checked = pk6.SuperTrain7_1; + TMedal4_5.Checked = pk6.SuperTrain7_2; + TMedal4_6.Checked = pk6.SuperTrain7_3; + TMedal4_7.Checked = pk6.SuperTrain8_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; + CHK_D0.Checked = pk6.DistSuperTrain1; + CHK_D1.Checked = pk6.DistSuperTrain2; + CHK_D2.Checked = pk6.DistSuperTrain3; + CHK_D3.Checked = pk6.DistSuperTrain4; + CHK_D4.Checked = pk6.DistSuperTrain5; + CHK_D5.Checked = pk6.DistSuperTrain6; - 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; + Kalos1a_0.Checked = pk6.RibbonChampionKalos; + Kalos1a_1.Checked = pk6.RibbonChampionG3Hoenn; + Kalos1a_2.Checked = pk6.RibbonChampionSinnoh; + Kalos1a_3.Checked = pk6.RibbonBestFriends; + Kalos1a_4.Checked = pk6.RibbonTraining; + Kalos1a_5.Checked = pk6.RibbonBattlerSkillful; + Kalos1a_6.Checked = pk6.RibbonBattlerExpert; + Kalos1a_7.Checked = pk6.RibbonEffort; - 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; + Kalos1b_0.Checked = pk6.RibbonAlert; + Kalos1b_1.Checked = pk6.RibbonShock; + Kalos1b_2.Checked = pk6.RibbonDowncast; + Kalos1b_3.Checked = pk6.RibbonCareless; + Kalos1b_4.Checked = pk6.RibbonRelax; + Kalos1b_5.Checked = pk6.RibbonSnooze; + Kalos1b_6.Checked = pk6.RibbonSmile; + Kalos1b_7.Checked = pk6.RibbonGorgeous; - 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; + Kalos2a_0.Checked = pk6.RibbonRoyal; + Kalos2a_1.Checked = pk6.RibbonGorgeousRoyal; + Kalos2a_2.Checked = pk6.RibbonArtist; + Kalos2a_3.Checked = pk6.RibbonFootprint; + Kalos2a_4.Checked = pk6.RibbonRecord; + Kalos2a_5.Checked = pk6.RibbonLegend; + Kalos2a_6.Checked = pk6.RibbonCountry; + Kalos2a_7.Checked = pk6.RibbonNational; - 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; + Kalos2b_0.Checked = pk6.RibbonEarth; + Kalos2b_1.Checked = pk6.RibbonWorld; + Kalos2b_2.Checked = pk6.RibbonClassic; + Kalos2b_3.Checked = pk6.RibbonPremier; + Kalos2b_4.Checked = pk6.RibbonEvent; + Kalos2b_5.Checked = pk6.RibbonBirthday; + Kalos2b_6.Checked = pk6.RibbonSpecial; + Kalos2b_7.Checked = pk6.RibbonSouvenir; - 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; + Extra1_0.Checked = pk6.RibbonWishing; + Extra1_1.Checked = pk6.RibbonChampionBattle; + Extra1_2.Checked = pk6.RibbonChampionRegional; + Extra1_3.Checked = pk6.RibbonChampionNational; + Extra1_4.Checked = pk6.RibbonChampionWorld; // Introduced in ORAS - Extra1_7.Checked = pk6.RIB4_7; + Extra1_7.Checked = pk6.RibbonChampionG6Hoenn; - 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; + ORAS_0.Checked = pk6.RibbonContestStar; + ORAS_1.Checked = pk6.RibbonMasterCoolness; + ORAS_2.Checked = pk6.RibbonMasterBeauty; + ORAS_3.Checked = pk6.RibbonMasterCuteness; + ORAS_4.Checked = pk6.RibbonMasterCleverness; + ORAS_5.Checked = pk6.RibbonMasterToughness; - TB_PastContest.Text = pk6.Memory_ContestCount.ToString(); - TB_PastBattle.Text = pk6.Memory_BattleCount.ToString(); + TB_PastContest.Text = pk6.RibbonCountMemoryContest.ToString(); + TB_PastBattle.Text = pk6.RibbonCountMemoryBattle.ToString(); CB_Bag.SelectedIndex = pk6.TrainingBag; NUD_BagHits.Value = pk6.TrainingBagHits; @@ -170,101 +170,101 @@ private void setData() 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.SuperTrain1_SPA = TMedal1_2.Checked; + pk6.SuperTrain1_HP = TMedal1_3.Checked; + pk6.SuperTrain1_ATK = TMedal1_4.Checked; + pk6.SuperTrain1_SPD = TMedal1_5.Checked; + pk6.SuperTrain1_SPE = TMedal1_6.Checked; + pk6.SuperTrain1_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.SuperTrain2_SPA = TMedal2_0.Checked; + pk6.SuperTrain2_HP = TMedal2_1.Checked; + pk6.SuperTrain2_ATK = TMedal2_2.Checked; + pk6.SuperTrain2_SPD = TMedal2_3.Checked; + pk6.SuperTrain2_SPE = TMedal2_4.Checked; + pk6.SuperTrain2_DEF = TMedal2_5.Checked; + pk6.SuperTrain3_SPA = TMedal2_6.Checked; + pk6.SuperTrain3_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.SuperTrain3_ATK = TMedal3_0.Checked; + pk6.SuperTrain3_SPD = TMedal3_1.Checked; + pk6.SuperTrain3_SPE = TMedal3_2.Checked; + pk6.SuperTrain3_DEF = TMedal3_3.Checked; + pk6.SuperTrain4_1 = TMedal3_4.Checked; + pk6.SuperTrain5_1 = TMedal3_5.Checked; + pk6.SuperTrain5_2 = TMedal3_6.Checked; + pk6.SuperTrain5_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.SuperTrain5_4 = TMedal4_0.Checked; + pk6.SuperTrain6_1 = TMedal4_1.Checked; + pk6.SuperTrain6_2 = TMedal4_2.Checked; + pk6.SuperTrain6_3 = TMedal4_3.Checked; + pk6.SuperTrain7_1 = TMedal4_4.Checked; + pk6.SuperTrain7_2 = TMedal4_5.Checked; + pk6.SuperTrain7_3 = TMedal4_6.Checked; + pk6.SuperTrain8_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.DistSuperTrain1 = CHK_D0.Checked; + pk6.DistSuperTrain2 = CHK_D1.Checked; + pk6.DistSuperTrain3 = CHK_D2.Checked; + pk6.DistSuperTrain4 = CHK_D3.Checked; + pk6.DistSuperTrain5 = CHK_D4.Checked; + pk6.DistSuperTrain6 = 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.RibbonChampionKalos = Kalos1a_0.Checked; + pk6.RibbonChampionG3Hoenn = Kalos1a_1.Checked; + pk6.RibbonChampionSinnoh = Kalos1a_2.Checked; + pk6.RibbonBestFriends = Kalos1a_3.Checked; + pk6.RibbonTraining = Kalos1a_4.Checked; + pk6.RibbonBattlerSkillful = Kalos1a_5.Checked; + pk6.RibbonBattlerExpert = Kalos1a_6.Checked; + pk6.RibbonEffort = 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.RibbonAlert = Kalos1b_0.Checked; + pk6.RibbonShock = Kalos1b_1.Checked; + pk6.RibbonDowncast = Kalos1b_2.Checked; + pk6.RibbonCareless = Kalos1b_3.Checked; + pk6.RibbonRelax = Kalos1b_4.Checked; + pk6.RibbonSnooze = Kalos1b_5.Checked; + pk6.RibbonSmile = Kalos1b_6.Checked; + pk6.RibbonGorgeous = 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.RibbonRoyal = Kalos2a_0.Checked; + pk6.RibbonGorgeousRoyal = Kalos2a_1.Checked; + pk6.RibbonArtist = Kalos2a_2.Checked; + pk6.RibbonFootprint = Kalos2a_3.Checked; + pk6.RibbonRecord = Kalos2a_4.Checked; + pk6.RibbonLegend = Kalos2a_5.Checked; + pk6.RibbonCountry = Kalos2a_6.Checked; + pk6.RibbonNational = 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.RibbonEarth = Kalos2b_0.Checked; + pk6.RibbonWorld = Kalos2b_1.Checked; + pk6.RibbonClassic = Kalos2b_2.Checked; + pk6.RibbonPremier = Kalos2b_3.Checked; + pk6.RibbonEvent = Kalos2b_4.Checked; + pk6.RibbonBirthday = Kalos2b_5.Checked; + pk6.RibbonSpecial = Kalos2b_6.Checked; + pk6.RibbonSouvenir = 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; + pk6.RibbonWishing = Extra1_0.Checked; + pk6.RibbonChampionBattle = Extra1_1.Checked; + pk6.RibbonChampionRegional = Extra1_2.Checked; + pk6.RibbonChampionNational = Extra1_3.Checked; + pk6.RibbonChampionWorld = Extra1_4.Checked; // Introduced in ORAS - pk6.RIB4_7 = Extra1_7.Checked; + pk6.RibbonChampionG6Hoenn = 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.RibbonContestStar = ORAS_0.Checked; + pk6.RibbonMasterCoolness = ORAS_1.Checked; + pk6.RibbonMasterBeauty = ORAS_2.Checked; + pk6.RibbonMasterCuteness = ORAS_3.Checked; + pk6.RibbonMasterCleverness = ORAS_4.Checked; + pk6.RibbonMasterToughness = ORAS_5.Checked; - pk6.Memory_ContestCount = Util.ToInt32(TB_PastContest.Text); - pk6.Memory_BattleCount = Util.ToInt32(TB_PastBattle.Text); + pk6.RibbonCountMemoryContest = Util.ToInt32(TB_PastContest.Text); + pk6.RibbonCountMemoryBattle = Util.ToInt32(TB_PastBattle.Text); pk6.TrainingBag = CB_Bag.SelectedIndex; pk6.TrainingBagHits = (int)NUD_BagHits.Value; diff --git a/Subforms/PKM Editors/RibbonEditor.cs b/Subforms/PKM Editors/RibbonEditor.cs new file mode 100644 index 000000000..3c3f11a76 --- /dev/null +++ b/Subforms/PKM Editors/RibbonEditor.cs @@ -0,0 +1,164 @@ +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); + + populateRibbons(); + } + + 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 = true, Visible = false, Name = PrefixPB + rib.Name }; + var img = Properties.Resources.ResourceManager.GetObject(rib.Name.ToLower()); + if (img != null) + pb.Image = (Image)img; + + 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, + 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, + }; + 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; }; + 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, + }; + 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); + } + } + 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; + } + } +} From 34fb98179c09240be16af4d046f5658638246392 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 16:13:33 -0700 Subject: [PATCH 052/184] Add Ribbon/Super Training editor Split from the existing form, now can handle multiple generations. Need to rename / add ribbon images so that they show up in the box. WIP. --- PKHeX.csproj | 19 ++ Subforms/PKM Editors/RibbonEditor.Designer.cs | 188 ++++++++++++ Subforms/PKM Editors/RibbonEditor.resx | 216 ++++++++++++++ .../SuperTrainingEditor.Designer.cs | 270 ++++++++++++++++++ Subforms/PKM Editors/SuperTrainingEditor.cs | 154 ++++++++++ Subforms/PKM Editors/SuperTrainingEditor.resx | 216 ++++++++++++++ Util/ReflectUtil.cs | 21 +- 7 files changed, 1080 insertions(+), 4 deletions(-) create mode 100644 Subforms/PKM Editors/RibbonEditor.Designer.cs create mode 100644 Subforms/PKM Editors/RibbonEditor.resx create mode 100644 Subforms/PKM Editors/SuperTrainingEditor.Designer.cs create mode 100644 Subforms/PKM Editors/SuperTrainingEditor.cs create mode 100644 Subforms/PKM Editors/SuperTrainingEditor.resx diff --git a/PKHeX.csproj b/PKHeX.csproj index be5f72408..afa6f51dd 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -125,6 +125,18 @@ BatchEditor.cs + + Form + + + SuperTraining.cs + + + Form + + + RibbMedal2.cs + Form @@ -279,6 +291,7 @@ + QR.cs @@ -287,6 +300,12 @@ BatchEditor.cs + + SuperTraining.cs + + + RibbMedal2.cs + Text.cs diff --git a/Subforms/PKM Editors/RibbonEditor.Designer.cs b/Subforms/PKM Editors/RibbonEditor.Designer.cs new file mode 100644 index 000000000..e44f67fdd --- /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(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_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(396, 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(394, 229); + this.SPLIT_Ribbons.SplitterDistance = 150; + 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(148, 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(241, 227); + this.TLP_Ribbons.TabIndex = 3; + // + // RibbMedal2 + // + 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_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(440, 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.resx b/Subforms/PKM Editors/RibbonEditor.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/PKM Editors/RibbonEditor.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/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs b/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs new file mode 100644 index 000000000..0fe2c9b88 --- /dev/null +++ b/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs @@ -0,0 +1,270 @@ +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(3, 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.ColumnCount = 2; + 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, 101); + 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, 128); + 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..0dc12963e --- /dev/null +++ b/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -0,0 +1,154 @@ +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); + + populateRegimens("SuperTrain", TLP_SuperTrain, reglist); + populateRegimens("DistSuperTrain", TLP_DistSuperTrain, distlist); + + 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; + 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 = 2; + TLP.RowCount = 0; + + // Add Regimens + foreach (var reg in list) + addRegimenChoice(reg); + + // 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) + { + // Get row we add to + int row = TLP_SuperTrain.RowCount; + TLP_SuperTrain.RowCount++; + + var label = new Label + { + Anchor = AnchorStyles.Left, + Name = PrefixLabel + reg.Name, + Text = reg.Name, + Padding = Padding.Empty, + AutoSize = true, + }; + TLP_SuperTrain.Controls.Add(label, 1, row); + + var chk = new CheckBox + { + Anchor = AnchorStyles.Right, + Name = PrefixCHK + reg.Name, + AutoSize = true, + Padding = Padding.Empty, + }; + chk.CheckedChanged += (sender, e) => { reg.CompletedRegimen = chk.Checked; }; + chk.Checked = reg.CompletedRegimen; + TLP_SuperTrain.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 (CB_Bag.Visible) + { + (pkm as PK6).TrainingBag = CB_Bag.SelectedIndex; + (pkm as 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[10]) > 4)) + { + c.Enabled = CHK_Secret.Checked; + if (!CHK_Secret.Checked) + c.Checked = false; + } + } + } +} diff --git a/Subforms/PKM Editors/SuperTrainingEditor.resx b/Subforms/PKM Editors/SuperTrainingEditor.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/PKM Editors/SuperTrainingEditor.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/ReflectUtil.cs b/Util/ReflectUtil.cs index 737474346..31c99e0b0 100644 --- a/Util/ReflectUtil.cs +++ b/Util/ReflectUtil.cs @@ -1,21 +1,34 @@ using System; +using System.Collections.Generic; +using System.Linq; using System.Reflection; namespace PKHeX { public static class ReflectUtil { - internal static bool GetValueEquals(T obj, string propertyName, object value) + internal static bool GetValueEquals(object obj, string propertyName, object value) { - PropertyInfo pi = typeof(T).GetProperty(propertyName); + 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(T obj, string propertyName, object value) + internal static void SetValue(object obj, string propertyName, object value) { - PropertyInfo pi = typeof(T).GetProperty(propertyName); + 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); + } } } From 8a0976e6e35c87be8200ccd2829f216500bb167a Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 17:19:26 -0700 Subject: [PATCH 053/184] Minor updates Expose the buttons for medal/ribbon --- MainWindow/Main.Designer.cs | 122 +++-- MainWindow/Main.cs | 14 +- MainWindow/Main.resx | 784 ++++++++++++++++++++++++++++++- PKHeX.csproj | 20 +- Resources/text/de/lang_de.txt | 5 +- Resources/text/en/lang_en.txt | 5 +- Resources/text/es/lang_es.txt | 5 +- Resources/text/fr/lang_fr.txt | 5 +- Resources/text/it/lang_it.txt | 5 +- Resources/text/ja/lang_ja.txt | 5 +- Resources/text/ko/lang_ko.txt | 3 +- Resources/text/other/lang_pt.txt | 5 +- Resources/text/zh/lang_zh.txt | 3 +- 13 files changed, 893 insertions(+), 88 deletions(-) diff --git a/MainWindow/Main.Designer.cs b/MainWindow/Main.Designer.cs index d368d58ab..e34d12b1d 100644 --- a/MainWindow/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_History = new System.Windows.Forms.Button(); + this.BTN_Medals = 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(); @@ -377,6 +379,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(); @@ -2240,11 +2243,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); @@ -2257,6 +2259,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_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); + // + // 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); + // // TB_EC // this.TB_EC.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -2274,7 +2338,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; @@ -2326,26 +2390,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); @@ -2357,7 +2401,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; @@ -2479,7 +2523,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; @@ -2517,7 +2561,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; @@ -2711,7 +2755,7 @@ public void InitializeComponent() this.Menu_ShowdownExportBattleBox}); this.Menu_Showdown.Image = global::PKHeX.Properties.Resources.showdown; this.Menu_Showdown.Name = "Menu_Showdown"; - this.Menu_Showdown.Size = new System.Drawing.Size(152, 22); + this.Menu_Showdown.Size = new System.Drawing.Size(143, 22); this.Menu_Showdown.Text = "Showdown"; // // Menu_ShowdownImportPKM @@ -2758,7 +2802,7 @@ public void InitializeComponent() this.Menu_OpenCache}); this.Menu_CyberGadget.Image = global::PKHeX.Properties.Resources.other; this.Menu_CyberGadget.Name = "Menu_CyberGadget"; - this.Menu_CyberGadget.Size = new System.Drawing.Size(152, 22); + this.Menu_CyberGadget.Size = new System.Drawing.Size(143, 22); this.Menu_CyberGadget.Text = "CyberGadget"; // // Menu_OpenTemp @@ -2787,14 +2831,14 @@ public void InitializeComponent() 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(152, 22); + this.Menu_Data.Size = new System.Drawing.Size(143, 22); this.Menu_Data.Text = "Data"; // // Menu_LoadBoxes // this.Menu_LoadBoxes.Image = global::PKHeX.Properties.Resources.load; this.Menu_LoadBoxes.Name = "Menu_LoadBoxes"; - this.Menu_LoadBoxes.Size = new System.Drawing.Size(152, 22); + this.Menu_LoadBoxes.Size = new System.Drawing.Size(151, 22); this.Menu_LoadBoxes.Text = "Load Boxes"; this.Menu_LoadBoxes.Click += new System.EventHandler(this.mainMenuBoxLoad); // @@ -2802,7 +2846,7 @@ public void InitializeComponent() // this.Menu_DumpBoxes.Image = global::PKHeX.Properties.Resources.dump; this.Menu_DumpBoxes.Name = "Menu_DumpBoxes"; - this.Menu_DumpBoxes.Size = new System.Drawing.Size(152, 22); + this.Menu_DumpBoxes.Size = new System.Drawing.Size(151, 22); this.Menu_DumpBoxes.Text = "Dump Boxes"; this.Menu_DumpBoxes.Click += new System.EventHandler(this.mainMenuBoxDump); // @@ -2812,7 +2856,7 @@ public void InitializeComponent() this.Menu_Report.Name = "Menu_Report"; this.Menu_Report.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R))); this.Menu_Report.ShowShortcutKeys = false; - this.Menu_Report.Size = new System.Drawing.Size(152, 22); + this.Menu_Report.Size = new System.Drawing.Size(151, 22); this.Menu_Report.Text = "Box Data &Report"; this.Menu_Report.Click += new System.EventHandler(this.mainMenuBoxReport); // @@ -2822,7 +2866,7 @@ public void InitializeComponent() this.Menu_Database.Name = "Menu_Database"; this.Menu_Database.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D))); this.Menu_Database.ShowShortcutKeys = false; - this.Menu_Database.Size = new System.Drawing.Size(152, 22); + this.Menu_Database.Size = new System.Drawing.Size(151, 22); this.Menu_Database.Text = "PK6 &Database"; this.Menu_Database.Click += new System.EventHandler(this.mainMenuDatabase); // @@ -2832,7 +2876,7 @@ public void InitializeComponent() 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(152, 22); + 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); // @@ -2843,7 +2887,7 @@ public void InitializeComponent() this.Menu_OpenSDB}); this.Menu_Other.Image = global::PKHeX.Properties.Resources.other; this.Menu_Other.Name = "Menu_Other"; - this.Menu_Other.Size = new System.Drawing.Size(152, 22); + this.Menu_Other.Size = new System.Drawing.Size(143, 22); this.Menu_Other.Text = "Other"; // // Menu_OpenSDF @@ -4392,6 +4436,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); @@ -4822,6 +4868,8 @@ public void InitializeComponent() 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; } } diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index adf3f89d3..4f90cfd2c 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -745,7 +745,7 @@ 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; 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; @@ -755,10 +755,14 @@ 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; + 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 && 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: @@ -850,6 +854,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; } @@ -2236,7 +2242,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) { diff --git a/MainWindow/Main.resx b/MainWindow/Main.resx index 45a4409d3..adb9b3c4d 100644 --- a/MainWindow/Main.resx +++ b/MainWindow/Main.resx @@ -237,6 +237,408 @@ 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 + + + True + + + True + + + True + @@ -290,6 +692,18 @@ True + + True + + + True + + + True + + + True + True @@ -553,6 +967,30 @@ True + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAeZJREFUOE+1 @@ -675,10 +1113,46 @@ True - + True - + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + True @@ -690,18 +1164,6 @@ True - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -853,18 +1315,12 @@ N5EOGBgAEVY/pv9ltCoAAAAASUVORK5CYII= - - True - True True - - True - True @@ -886,9 +1342,6 @@ True - - True - 17, 17 @@ -904,6 +1357,108 @@ 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 @@ -1009,6 +1564,42 @@ True + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + iVBORw0KGgoAAAANSUhEUgAAAG8AAACgCAYAAAACezIBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1122,6 +1713,24 @@ True + + True + + + True + + + True + + + True + + + True + + + True + iVBORw0KGgoAAAANSUhEUgAAAG8AAACgCAYAAAACezIBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1192,6 +1801,54 @@ True + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + True @@ -1231,12 +1888,18 @@ True + + True + True True + + True + True @@ -1246,6 +1909,36 @@ True + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + True @@ -1279,6 +1972,51 @@ True + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + True diff --git a/PKHeX.csproj b/PKHeX.csproj index afa6f51dd..ed4c30501 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -125,17 +125,17 @@ BatchEditor.cs - + Form - - SuperTraining.cs + + SuperTrainingEditor.cs - + Form - - RibbMedal2.cs + + RibbonEditor.cs Form @@ -300,11 +300,11 @@ BatchEditor.cs - - SuperTraining.cs + + SuperTrainingEditor.cs - - RibbMedal2.cs + + RibbonEditor.cs Text.cs diff --git a/Resources/text/de/lang_de.txt b/Resources/text/de/lang_de.txt index d0da10599..099319046 100644 --- a/Resources/text/de/lang_de.txt +++ b/Resources/text/de/lang_de.txt @@ -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-------------------- diff --git a/Resources/text/en/lang_en.txt b/Resources/text/en/lang_en.txt index 22eb12e0c..742ea201d 100644 --- a/Resources/text/en/lang_en.txt +++ b/Resources/text/en/lang_en.txt @@ -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-------------------- diff --git a/Resources/text/es/lang_es.txt b/Resources/text/es/lang_es.txt index 4a4a7b2d2..c7a6f60f8 100644 --- a/Resources/text/es/lang_es.txt +++ b/Resources/text/es/lang_es.txt @@ -129,8 +129,9 @@ GB_nOT = Ultimo dueño (no OT) Label_PrevOT = OT: GB_ExtraBytes = Bytes Extras GB_Markings = Marcas -BTN_Ribbons = Listones/Medales -BTN_History = Memorias/Recreo +BTN_Ribbons = Listones +BTN_Medals = Medales +BTN_History = Memorias Label_EncryptionConstant = Constante de Encryption: BTN_RerollEC = Generar -----------------Save Data Interface-------------------- diff --git a/Resources/text/fr/lang_fr.txt b/Resources/text/fr/lang_fr.txt index eb6e33dae..141e948f7 100644 --- a/Resources/text/fr/lang_fr.txt +++ b/Resources/text/fr/lang_fr.txt @@ -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-------------------- diff --git a/Resources/text/it/lang_it.txt b/Resources/text/it/lang_it.txt index ecd99e1fb..dd467727b 100644 --- a/Resources/text/it/lang_it.txt +++ b/Resources/text/it/lang_it.txt @@ -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-------------------- diff --git a/Resources/text/ja/lang_ja.txt b/Resources/text/ja/lang_ja.txt index 511e080e9..d0b51ef7d 100644 --- a/Resources/text/ja/lang_ja.txt +++ b/Resources/text/ja/lang_ja.txt @@ -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-------------------- diff --git a/Resources/text/ko/lang_ko.txt b/Resources/text/ko/lang_ko.txt index 93f73633c..e6cb6abba 100644 --- a/Resources/text/ko/lang_ko.txt +++ b/Resources/text/ko/lang_ko.txt @@ -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 = 재설정 diff --git a/Resources/text/other/lang_pt.txt b/Resources/text/other/lang_pt.txt index 31eb6c534..3d32d1889 100644 --- a/Resources/text/other/lang_pt.txt +++ b/Resources/text/other/lang_pt.txt @@ -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-------------------- diff --git a/Resources/text/zh/lang_zh.txt b/Resources/text/zh/lang_zh.txt index 31b525f44..29b235e86 100644 --- a/Resources/text/zh/lang_zh.txt +++ b/Resources/text/zh/lang_zh.txt @@ -129,7 +129,8 @@ GB_nOT = 最新的持有人(非主人) Label_PrevOT = 主人名称 GB_ExtraBytes = 额外字节 GB_Markings = 标记 -BTN_Ribbons = 绸带/超级训练 +BTN_Ribbons = 绸带 +BTN_Medals = 超级训练 BTN_History = 记忆 Label_EncryptionConstant = 暗号化定数 BTN_RerollEC = 随机 From deb7502ee560c204af87bd09c4ff93a6cc5e9d2d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 17:52:07 -0700 Subject: [PATCH 054/184] Distribution checkboxes to correct panel Also fixed checkbox enable/disable (didn't consider prefix) --- .../SuperTrainingEditor.Designer.cs | 9 +++--- Subforms/PKM Editors/SuperTrainingEditor.cs | 28 +++++++------------ 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs b/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs index 0fe2c9b88..52ccdfadc 100644 --- a/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs +++ b/Subforms/PKM Editors/SuperTrainingEditor.Designer.cs @@ -153,7 +153,7 @@ private void InitializeComponent() // CHK_Secret // this.CHK_Secret.AutoSize = true; - this.CHK_Secret.Location = new System.Drawing.Point(3, 2); + 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; @@ -213,16 +213,17 @@ private void InitializeComponent() // TLP_DistSuperTrain // this.TLP_DistSuperTrain.AutoScroll = true; - this.TLP_DistSuperTrain.ColumnCount = 2; + 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, 101); + 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, 128); + this.TLP_DistSuperTrain.Size = new System.Drawing.Size(215, 0); this.TLP_DistSuperTrain.TabIndex = 3; // // SuperTrainingEditor diff --git a/Subforms/PKM Editors/SuperTrainingEditor.cs b/Subforms/PKM Editors/SuperTrainingEditor.cs index 0dc12963e..203e07be6 100644 --- a/Subforms/PKM Editors/SuperTrainingEditor.cs +++ b/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -57,12 +57,12 @@ private void populateRegimens(string Type, TableLayoutPanel TLP, List { reg.CompletedRegimen = chk.Checked; }; chk.Checked = reg.CompletedRegimen; - TLP_SuperTrain.Controls.Add(chk, 0, row); + TLP.Controls.Add(chk, 0, row); } private void save() @@ -143,7 +135,7 @@ private void B_None_Click(object sender, EventArgs e) } private void CHK_Secret_CheckedChanged(object sender, EventArgs e) { - foreach (var c in TLP_SuperTrain.Controls.OfType().Where(chk => Convert.ToInt16(chk.Name[10]) > 4)) + 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) From ba74b043e2142d8132bc621da120eb5e3449fad9 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 17:59:04 -0700 Subject: [PATCH 055/184] Fateful Encounter fix Met location of 0xFF for pkm without an 'obedience' flag. --- PKM/PK3.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PKM/PK3.cs b/PKM/PK3.cs index af33b53e1..51cbed8b9 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -214,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, @@ -258,6 +257,9 @@ public PK4 convertToPK4() RibbonWorld = RibbonWorld, }; + if (Met_Location == 0xFF) // Fateful + pk4.FatefulEncounter = Met_Location == 0xFF || FatefulEncounter; // obedience flag + // Remaining Ribbons pk4.RibbonG3Cool |= RibbonCountG3Cool > 0; pk4.RibbonG3CoolSuper |= RibbonCountG3Cool > 1; From 3fb86f6dc5fcc731e66a82114ad4892541993488 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 19:59:53 -0700 Subject: [PATCH 056/184] Update ribbons Added all gen3-6 ribbons. Fixed bugs: * Increased speed that the subform pops up (yay profiling!) -- TableLayoutPanel would be reconfigured on every row added; adding a lot of rows constantly reconfigures, so disable the layout updates so that it only procs at the end. * Cleaned up display of the ribbons, fixed width (40x40) instead of autosize. Now display 3 per row. * Now display the golden "complete" ribbon for g6 memory ribbons. --- PKHeX.csproj | 98 ++ PKM/PK4.cs | 2 +- PKM/PK5.cs | 2 +- Properties/Resources.Designer.cs | 1368 ++++++++++++----- Properties/Resources.resx | 432 ++++-- Resources/img/ribbons/own_no.png | Bin 248 -> 0 bytes Resources/img/ribbons/own_yes.png | Bin 513 -> 0 bytes Resources/img/ribbons/ribbonability.png | Bin 0 -> 537 bytes Resources/img/ribbons/ribbonabilitydouble.png | Bin 0 -> 486 bytes Resources/img/ribbons/ribbonabilitygreat.png | Bin 0 -> 586 bytes Resources/img/ribbons/ribbonabilitymulti.png | Bin 0 -> 578 bytes Resources/img/ribbons/ribbonabilitypair.png | Bin 0 -> 543 bytes Resources/img/ribbons/ribbonabilityworld.png | Bin 0 -> 602 bytes .../ribbons/{alert.png => ribbonalert.png} | Bin .../ribbons/{artist.png => ribbonartist.png} | Bin ...ertbattler.png => ribbonbattlerexpert.png} | Bin ...lbattler.png => ribbonbattlerskillful.png} | Bin ...{bestfriends.png => ribbonbestfriends.png} | Bin .../{birthday.png => ribbonbirthday.png} | Bin .../{careless.png => ribboncareless.png} | Bin ...ttlechamp.png => ribbonchampionbattle.png} | Bin ...ennchamp.png => ribbonchampiong3hoenn.png} | Bin ...ibbon_40.png => ribbonchampiong6hoenn.png} | Bin ...kaloschamp.png => ribbonchampionkalos.png} | Bin ...alchamp.png => ribbonchampionnational.png} | Bin ...alchamp.png => ribbonchampionregional.png} | Bin ...nnohchamp.png => ribbonchampionsinnoh.png} | Bin ...worldchamp.png => ribbonchampionworld.png} | Bin .../{classic.png => ribbonclassic.png} | Bin .../{ribbon_41.png => ribbonconteststar.png} | Bin ...memory.png => ribboncountmemorybattle.png} | Bin ...mory2.png => ribboncountmemorybattle2.png} | Bin ...emory.png => ribboncountmemorycontest.png} | Bin ...ory2.png => ribboncountmemorycontest2.png} | Bin .../{country.png => ribboncountry.png} | Bin .../{downcast.png => ribbondowncast.png} | Bin .../ribbons/{earth.png => ribbonearth.png} | Bin .../ribbons/{effort.png => ribboneffort.png} | Bin .../ribbons/{event.png => ribbonevent.png} | Bin .../{footprint.png => ribbonfootprint.png} | Bin Resources/img/ribbons/ribbong3beauty.png | Bin 0 -> 516 bytes Resources/img/ribbons/ribbong3beautyhyper.png | Bin 0 -> 599 bytes .../img/ribbons/ribbong3beautymaster.png | Bin 0 -> 611 bytes Resources/img/ribbons/ribbong3beautysuper.png | Bin 0 -> 565 bytes Resources/img/ribbons/ribbong3cool.png | Bin 0 -> 515 bytes Resources/img/ribbons/ribbong3coolhyper.png | Bin 0 -> 593 bytes Resources/img/ribbons/ribbong3coolmaster.png | Bin 0 -> 615 bytes Resources/img/ribbons/ribbong3coolsuper.png | Bin 0 -> 572 bytes Resources/img/ribbons/ribbong3cute.png | Bin 0 -> 515 bytes Resources/img/ribbons/ribbong3cutehyper.png | Bin 0 -> 590 bytes Resources/img/ribbons/ribbong3cutemaster.png | Bin 0 -> 606 bytes Resources/img/ribbons/ribbong3cutesuper.png | Bin 0 -> 567 bytes Resources/img/ribbons/ribbong3smart.png | Bin 0 -> 515 bytes Resources/img/ribbons/ribbong3smarthyper.png | Bin 0 -> 594 bytes Resources/img/ribbons/ribbong3smartmaster.png | Bin 0 -> 609 bytes Resources/img/ribbons/ribbong3smartsuper.png | Bin 0 -> 569 bytes Resources/img/ribbons/ribbong3tough.png | Bin 0 -> 515 bytes Resources/img/ribbons/ribbong3toughhyper.png | Bin 0 -> 582 bytes Resources/img/ribbons/ribbong3toughmaster.png | Bin 0 -> 613 bytes Resources/img/ribbons/ribbong3toughsuper.png | Bin 0 -> 569 bytes Resources/img/ribbons/ribbong4beauty.png | Bin 0 -> 298 bytes Resources/img/ribbons/ribbong4beautygreat.png | Bin 0 -> 566 bytes .../img/ribbons/ribbong4beautymaster.png | Bin 0 -> 649 bytes Resources/img/ribbons/ribbong4beautyultra.png | Bin 0 -> 627 bytes Resources/img/ribbons/ribbong4cool.png | Bin 0 -> 524 bytes Resources/img/ribbons/ribbong4coolgreat.png | Bin 0 -> 323 bytes Resources/img/ribbons/ribbong4coolmaster.png | Bin 0 -> 391 bytes Resources/img/ribbons/ribbong4coolultra.png | Bin 0 -> 360 bytes Resources/img/ribbons/ribbong4cute.png | Bin 0 -> 525 bytes Resources/img/ribbons/ribbong4cutegreat.png | Bin 0 -> 569 bytes Resources/img/ribbons/ribbong4cutemaster.png | Bin 0 -> 649 bytes Resources/img/ribbons/ribbong4cuteultra.png | Bin 0 -> 625 bytes Resources/img/ribbons/ribbong4smart.png | Bin 0 -> 530 bytes Resources/img/ribbons/ribbong4smartgreat.png | Bin 0 -> 572 bytes Resources/img/ribbons/ribbong4smartmaster.png | Bin 0 -> 655 bytes Resources/img/ribbons/ribbong4smartultra.png | Bin 0 -> 629 bytes Resources/img/ribbons/ribbong4tough.png | Bin 0 -> 521 bytes Resources/img/ribbons/ribbong4toughgreat.png | Bin 0 -> 562 bytes Resources/img/ribbons/ribbong4toughmaster.png | Bin 0 -> 643 bytes Resources/img/ribbons/ribbong4toughultra.png | Bin 0 -> 616 bytes .../{gorgeous.png => ribbongorgeous.png} | Bin ...geousroyal.png => ribbongorgeousroyal.png} | Bin .../ribbons/{legend.png => ribbonlegend.png} | Bin .../{ribbon_43.png => ribbonmasterbeauty.png} | Bin ...bbon_45.png => ribbonmastercleverness.png} | Bin ...ribbon_42.png => ribbonmastercoolness.png} | Bin ...ribbon_44.png => ribbonmastercuteness.png} | Bin ...ibbon_46.png => ribbonmastertoughness.png} | Bin .../{national.png => ribbonnational.png} | Bin .../{premier.png => ribbonpremier.png} | Bin .../ribbons/{record.png => ribbonrecord.png} | Bin .../ribbons/{relax.png => ribbonrelax.png} | Bin .../ribbons/{royal.png => ribbonroyal.png} | Bin .../ribbons/{shock.png => ribbonshock.png} | Bin .../ribbons/{smile.png => ribbonsmile.png} | Bin .../ribbons/{snooze.png => ribbonsnooze.png} | Bin .../{souvenir.png => ribbonsouvenir.png} | Bin .../{special.png => ribbonspecial.png} | Bin .../{training.png => ribbontraining.png} | Bin Resources/img/ribbons/ribbonvictory.png | Bin 0 -> 522 bytes Resources/img/ribbons/ribbonwinning.png | Bin 0 -> 469 bytes .../{wishing.png => ribbonwishing.png} | Bin .../ribbons/{world.png => ribbonworld.png} | Bin Subforms/PKM Editors/RibbMedal.Designer.cs | 92 +- Subforms/PKM Editors/RibbMedal.cs | 4 +- Subforms/PKM Editors/RibbonEditor.Designer.cs | 8 +- Subforms/PKM Editors/RibbonEditor.cs | 19 +- Subforms/PKM Editors/SuperTrainingEditor.cs | 18 +- 108 files changed, 1422 insertions(+), 621 deletions(-) delete mode 100644 Resources/img/ribbons/own_no.png delete mode 100644 Resources/img/ribbons/own_yes.png create mode 100644 Resources/img/ribbons/ribbonability.png create mode 100644 Resources/img/ribbons/ribbonabilitydouble.png create mode 100644 Resources/img/ribbons/ribbonabilitygreat.png create mode 100644 Resources/img/ribbons/ribbonabilitymulti.png create mode 100644 Resources/img/ribbons/ribbonabilitypair.png create mode 100644 Resources/img/ribbons/ribbonabilityworld.png rename Resources/img/ribbons/{alert.png => ribbonalert.png} (100%) rename Resources/img/ribbons/{artist.png => ribbonartist.png} (100%) rename Resources/img/ribbons/{expertbattler.png => ribbonbattlerexpert.png} (100%) rename Resources/img/ribbons/{skillfullbattler.png => ribbonbattlerskillful.png} (100%) rename Resources/img/ribbons/{bestfriends.png => ribbonbestfriends.png} (100%) rename Resources/img/ribbons/{birthday.png => ribbonbirthday.png} (100%) rename Resources/img/ribbons/{careless.png => ribboncareless.png} (100%) rename Resources/img/ribbons/{battlechamp.png => ribbonchampionbattle.png} (100%) rename Resources/img/ribbons/{hoennchamp.png => ribbonchampiong3hoenn.png} (100%) rename Resources/img/ribbons/{ribbon_40.png => ribbonchampiong6hoenn.png} (100%) rename Resources/img/ribbons/{kaloschamp.png => ribbonchampionkalos.png} (100%) rename Resources/img/ribbons/{nationalchamp.png => ribbonchampionnational.png} (100%) rename Resources/img/ribbons/{regionalchamp.png => ribbonchampionregional.png} (100%) rename Resources/img/ribbons/{sinnohchamp.png => ribbonchampionsinnoh.png} (100%) rename Resources/img/ribbons/{worldchamp.png => ribbonchampionworld.png} (100%) rename Resources/img/ribbons/{classic.png => ribbonclassic.png} (100%) rename Resources/img/ribbons/{ribbon_41.png => ribbonconteststar.png} (100%) rename Resources/img/ribbons/{battlememory.png => ribboncountmemorybattle.png} (100%) rename Resources/img/ribbons/{battlememory2.png => ribboncountmemorybattle2.png} (100%) rename Resources/img/ribbons/{contestmemory.png => ribboncountmemorycontest.png} (100%) rename Resources/img/ribbons/{contestmemory2.png => ribboncountmemorycontest2.png} (100%) rename Resources/img/ribbons/{country.png => ribboncountry.png} (100%) rename Resources/img/ribbons/{downcast.png => ribbondowncast.png} (100%) rename Resources/img/ribbons/{earth.png => ribbonearth.png} (100%) rename Resources/img/ribbons/{effort.png => ribboneffort.png} (100%) rename Resources/img/ribbons/{event.png => ribbonevent.png} (100%) rename Resources/img/ribbons/{footprint.png => ribbonfootprint.png} (100%) create mode 100644 Resources/img/ribbons/ribbong3beauty.png create mode 100644 Resources/img/ribbons/ribbong3beautyhyper.png create mode 100644 Resources/img/ribbons/ribbong3beautymaster.png create mode 100644 Resources/img/ribbons/ribbong3beautysuper.png create mode 100644 Resources/img/ribbons/ribbong3cool.png create mode 100644 Resources/img/ribbons/ribbong3coolhyper.png create mode 100644 Resources/img/ribbons/ribbong3coolmaster.png create mode 100644 Resources/img/ribbons/ribbong3coolsuper.png create mode 100644 Resources/img/ribbons/ribbong3cute.png create mode 100644 Resources/img/ribbons/ribbong3cutehyper.png create mode 100644 Resources/img/ribbons/ribbong3cutemaster.png create mode 100644 Resources/img/ribbons/ribbong3cutesuper.png create mode 100644 Resources/img/ribbons/ribbong3smart.png create mode 100644 Resources/img/ribbons/ribbong3smarthyper.png create mode 100644 Resources/img/ribbons/ribbong3smartmaster.png create mode 100644 Resources/img/ribbons/ribbong3smartsuper.png create mode 100644 Resources/img/ribbons/ribbong3tough.png create mode 100644 Resources/img/ribbons/ribbong3toughhyper.png create mode 100644 Resources/img/ribbons/ribbong3toughmaster.png create mode 100644 Resources/img/ribbons/ribbong3toughsuper.png create mode 100644 Resources/img/ribbons/ribbong4beauty.png create mode 100644 Resources/img/ribbons/ribbong4beautygreat.png create mode 100644 Resources/img/ribbons/ribbong4beautymaster.png create mode 100644 Resources/img/ribbons/ribbong4beautyultra.png create mode 100644 Resources/img/ribbons/ribbong4cool.png create mode 100644 Resources/img/ribbons/ribbong4coolgreat.png create mode 100644 Resources/img/ribbons/ribbong4coolmaster.png create mode 100644 Resources/img/ribbons/ribbong4coolultra.png create mode 100644 Resources/img/ribbons/ribbong4cute.png create mode 100644 Resources/img/ribbons/ribbong4cutegreat.png create mode 100644 Resources/img/ribbons/ribbong4cutemaster.png create mode 100644 Resources/img/ribbons/ribbong4cuteultra.png create mode 100644 Resources/img/ribbons/ribbong4smart.png create mode 100644 Resources/img/ribbons/ribbong4smartgreat.png create mode 100644 Resources/img/ribbons/ribbong4smartmaster.png create mode 100644 Resources/img/ribbons/ribbong4smartultra.png create mode 100644 Resources/img/ribbons/ribbong4tough.png create mode 100644 Resources/img/ribbons/ribbong4toughgreat.png create mode 100644 Resources/img/ribbons/ribbong4toughmaster.png create mode 100644 Resources/img/ribbons/ribbong4toughultra.png rename Resources/img/ribbons/{gorgeous.png => ribbongorgeous.png} (100%) rename Resources/img/ribbons/{gorgeousroyal.png => ribbongorgeousroyal.png} (100%) rename Resources/img/ribbons/{legend.png => ribbonlegend.png} (100%) rename Resources/img/ribbons/{ribbon_43.png => ribbonmasterbeauty.png} (100%) rename Resources/img/ribbons/{ribbon_45.png => ribbonmastercleverness.png} (100%) rename Resources/img/ribbons/{ribbon_42.png => ribbonmastercoolness.png} (100%) rename Resources/img/ribbons/{ribbon_44.png => ribbonmastercuteness.png} (100%) rename Resources/img/ribbons/{ribbon_46.png => ribbonmastertoughness.png} (100%) rename Resources/img/ribbons/{national.png => ribbonnational.png} (100%) rename Resources/img/ribbons/{premier.png => ribbonpremier.png} (100%) rename Resources/img/ribbons/{record.png => ribbonrecord.png} (100%) rename Resources/img/ribbons/{relax.png => ribbonrelax.png} (100%) rename Resources/img/ribbons/{royal.png => ribbonroyal.png} (100%) rename Resources/img/ribbons/{shock.png => ribbonshock.png} (100%) rename Resources/img/ribbons/{smile.png => ribbonsmile.png} (100%) rename Resources/img/ribbons/{snooze.png => ribbonsnooze.png} (100%) rename Resources/img/ribbons/{souvenir.png => ribbonsouvenir.png} (100%) rename Resources/img/ribbons/{special.png => ribbonspecial.png} (100%) rename Resources/img/ribbons/{training.png => ribbontraining.png} (100%) create mode 100644 Resources/img/ribbons/ribbonvictory.png create mode 100644 Resources/img/ribbons/ribbonwinning.png rename Resources/img/ribbons/{wishing.png => ribbonwishing.png} (100%) rename Resources/img/ribbons/{world.png => ribbonworld.png} (100%) diff --git a/PKHeX.csproj b/PKHeX.csproj index ed4c30501..9c03d086f 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -469,6 +469,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PKM/PK4.cs b/PKM/PK4.cs index 568e97160..b2711febb 100644 --- a/PKM/PK4.cs +++ b/PKM/PK4.cs @@ -60,7 +60,7 @@ public PK4(byte[] decryptedData = null, string ident = null) 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 private byte RIB3 { get { return Data[0x27]; } set { Data[0x27] = value; } } // Unova 2 - public bool RibbonSinnohChampion { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + 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)); } } diff --git a/PKM/PK5.cs b/PKM/PK5.cs index 2be3fc1bf..267bce372 100644 --- a/PKM/PK5.cs +++ b/PKM/PK5.cs @@ -60,7 +60,7 @@ public PK5(byte[] decryptedData = null, string ident = null) 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 private byte RIB3 { get { return Data[0x27]; } set { Data[0x27] = value; } } // Unova 2 - public bool RibbonSinnohChampion { get { return (RIB0 & (1 << 0)) == 1 << 0; } set { RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + 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)); } } diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 5466b1204..bd42f3332 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. /// @@ -9710,16 +9630,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap careless { - get { - object obj = ResourceManager.GetObject("careless", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - ///
/// Looks up a localized string similar to PKHeX - By Kaphotics ///http://projectpokemon.org/ @@ -9749,16 +9659,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 +9671,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 +9688,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 +9708,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 +9718,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 +9818,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 +9892,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 +9902,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. /// @@ -14262,16 +14052,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap kaloschamp { - get { - object obj = ResourceManager.GetObject("kaloschamp", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// 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. @@ -14505,16 +14285,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 +14335,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. /// @@ -14745,16 +14495,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. /// @@ -14765,26 +14505,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 (日本) @@ -14800,16 +14520,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. /// @@ -14823,9 +14533,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)); } } @@ -14833,9 +14543,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)); } } @@ -14843,9 +14553,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)); } } @@ -14853,9 +14563,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)); } } @@ -14863,9 +14573,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)); } } @@ -14873,9 +14583,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)); } } @@ -14883,9 +14593,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)); } } @@ -14893,9 +14603,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)); } } @@ -14930,16 +15520,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. /// @@ -14980,26 +15560,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. /// @@ -15040,46 +15600,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap smile { - 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); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized string similar to Subregion ID,JP,EN,FR,DE,IT,ES,ZH,KO ///000,—,—,—,—,—,—,—,— @@ -23429,6 +23949,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 /// @@ -29007,16 +29583,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. /// @@ -29066,35 +29632,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 7e2cd0ed2..d23f57e67 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 @@ -4219,27 +4096,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 @@ -5899,4 +5755,292 @@ ..\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 + \ No newline at end of file diff --git a/Resources/img/ribbons/own_no.png b/Resources/img/ribbons/own_no.png deleted file mode 100644 index 10e8a2d79d7cc03789a037e6fd66ce23cac4ced9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L0m@TF)WP*sVi zi(^QH``a6iTnvglERO&Gznr15Z-Kt@7J=^~oKH8fhlj3xVs-fIEZueIa`F%Sb6d+; z>`12j#>`C&n{>RY4|qV pk#!}*+yDB_7yDm)j++rB{qDk~#c_QTvVit8c)I$ztaD0e0ssLtR$Kr8 diff --git a/Resources/img/ribbons/own_yes.png b/Resources/img/ribbons/own_yes.png deleted file mode 100644 index 8d62c337da0d22e680a0914ce71c967f517e4a01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513 zcmV+c0{;DpP)N2bPDNB8 zb~7$DE-^4L^m3s900DhTL_t(oN9~xqii1!PhGV=NLb{+JzKc&F*jftdd;+_G!6L1- zjjthC`XV-htzb2qIg85@HtXd`IFK`Nv^kg0|DSQh9RTcD9t7?Ycwuf3wh{1gXDU!I z4oG7OSCB@%@8sh-NT(rJkWN2Fa`1k?zkCiREVe9*O~5owK~+_dB#Ax1zVAWTbr1vr zJkMhbu&OFBO%o1>1GH`XZymio2lG4!Q4~ps2!dd;$lng=I1U(w0a=z!!mVm`Ns`Rk z_<7RxdL_kxIX4$>6`-Oh5QgDm$kXXWtVLU~K<36`i!YZ8$)CB9MNt64X_^L2)6C`i znYS1aSGuk{3$iRrVk;iv`~G6MRTht@OhKZJwr#`lcm#Z{tc_I)PC?#oH`wp@q#)ur zUdu+-Q31ZP`+PowEXxo@5f$7ffX|TFz7VdiYihX70DnV{y>%D{wg5-SuIn}d8#kfO z!A)uY*o*_xD$Et+3eqY-yPoIZ=PAhaPjvkJVs(50=iKhPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z044@T1taFz=-Mn`=( z7g=yt0!0W~_?`l1rBK-{&*~zI;D?g-A~YQPzRp=tYP_ZLR}|I>77v zJP%-u2F}G39;-ZBaR|kPPmZ`o$G)#$Ir$&=J--0}X#Eup@?jJ|YYii{de2gz96P{2 z*=K^acEySJVyl$qI%mO{762U7KN_04B>^w<1oO9e#4fq4HFV|j_cG@b2_A!{)Qc>c zoKGM`x7%I{H2aX)g6BXQa793|*q^#ELh*>>gg_C)}z z6-W7MX(DmVXRGRL0r3G_@7`7}*(}?LvX9X(JfpL~;iAICzQ}Z4AD!FEQQT_$e^L$% zw+wYb?Sk=3Q!Vo=^~bU6QL5^!it%FSivx~vj%pPNL|81bxVQH)MUirRcPqxgt<|{| b_mOr7P_+vX^O;(D00000NkvXXu0mjf+vVpB literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbonabilitydouble.png b/Resources/img/ribbons/ribbonabilitydouble.png new file mode 100644 index 0000000000000000000000000000000000000000..5b27db1984ebd629f5791c70350eec636571abd8 GIT binary patch literal 486 zcmV@P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z04D+f6g!3h00Cx6L_t(Y$HmtnmV+=52H<~q6-Z=dC6XglRz~Isl`C_E9DyT5B00j! z9HFvuW!|*3`qb2BQ6*5?f)OgfpT+DDayr(iw=VU00<#jIF+C- zI5?G}T%7hmIXLZw=Hj#!eLSuJfV%F3Ug8^EuUpJNp^cO8__FSl!VrH==sy>|BG z@^Nbct;3{BHRw9L&4cX8HMb`l)47HxYjhqvG{x;DV}Gxp>7z$8jLHY&dxK>+Re+<$Tgqd+bJ> cZ>N8YALh!$a)F?EMF0Q*07*qoM6N<$f*|e8E&u=k literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbonabilitygreat.png b/Resources/img/ribbons/ribbonabilitygreat.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa0cf965824109bad5db9a17e429447b9f33b46 GIT binary patch literal 586 zcmV-Q0=4~#P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z045d#)!w=Q00GKLL_t(Y$IX_Zl7lc1hJS8OAWv3SRw9u|WMpI|63HV(p6nw;Mk0|& zWF_)sC5{txX~+dg!p+?6OlMNE*^htOY!bo4gt(1OQ(Nb@(k~vmg zEBDT&?`6h1#I4*-J1NznYu(GaW$wX!px%cBV;%TP+NF`+Lx+UkOkT%dhs$LNzu#X_ zGF#IKY9RbnL4JuR;9<-r3!lRm0aD9P)hnedfo(ops=Ygx4%m8jxMf!7sghkf82OoJ zv=^AtoPJI}3amGoEXx;A)88yi=i<@>Q!v4%??>Au&)GN?owRm8FU7Ok{))B)+H(Dc z^f7?hKkcuZs-26gEwziD)*NWe82|Bt!TXqQkS@hyTX%RLyL2QU-(AJDaH~4E*8NNS Y2Ih+-T3D8#x&QzG07*qoM6N<$g4&S-4*&oF literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbonabilitymulti.png b/Resources/img/ribbons/ribbonabilitymulti.png new file mode 100644 index 0000000000000000000000000000000000000000..0ebe4e14c2fa4bc0cebb231b235813e00a453de0 GIT binary patch literal 578 zcmV-I0=@l-P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z04Nl5Sdth300F{DL_t(Y$F)}>mV+=5{p~|kMy{+xa)e4GGIAwH;0QTFWo2Y!j}f^N zxiS*h6}zFskU$9RC>SRB`9Cw00AyNSH?O*GUb*8>xuEp@`820PftMI{R}BDAy^M}u zTF^NMG*_7bW=HLEnw}+7F6>(jsc(7>(T}rL;q;eKiZ(Ye$1}URhGALA};YHv(+24 zEN{oO%r$Thy0pN}dpzske|7HbbnBUX&N;+WE$bo>x@~Z#o~`%s*!_F#>Y&X0ITRbS zq?Y+5o`924@U_^iJ6Ctr6BhK)2>D7^k8&?1Xptf_XAuIYjDHs@_U-X|qBI*9x_6I5 zjQL%fX7ax=4qf1>?@-2{PAoPCnna&Y;DL3Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z04Ov_HnPwF00Ey#L_t(Y$F-LsmV+=5hX3#?kjTm$fny+%907^s2*}FH%19(fsN@L9 z%F4Q~*q82PNXUe;qeAjCA54;&L?L2TRln);G>z&Toi&vL4LOzSL}2Qy*9HJEEX~TP zRL3ogLC4X+*RHDiE!By@A!pz8`QTX!H1>BXaFq((V|BfrbLE4+UM&D1&#%r)eB4@0 z$H%8>R4N1ofTnqRSF16F1Ci)B{4>YRxyQW&=KhMgzk+WO-cHrsyI+R2Q*3_9!3`^# z?{uHVMME75q3!3-dv)H$MaALakA_^dOL>CVUIk`V6hl-Vc%3Ng|@D&O&K>SsspthWfBSrqHdv zL%}*Pof=E44IMiStn+dO^|iU~&`|S&AL=_4%#W>3vRRt{0f)}Yd*R6mM0$leG=Xe6 hirtlVgC&kr;6JD;Etnr_zBK><002ovPDHLkV1lGm^p^kt literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbonabilityworld.png b/Resources/img/ribbons/ribbonabilityworld.png new file mode 100644 index 0000000000000000000000000000000000000000..30e959da2b298aa7f3a589271fea598722af5deb GIT binary patch literal 602 zcmV-g0;TPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z04WpnCpP*300G)bL_t(Y$E{bZmV-bH&GaCUm6b>&va+%gIiFCul1~`9az6n%61lPx ziL6|S#O(@BI3Z1Frff`Mn#s-MW->TPlGq_X=U-0_Y=IvvY2i^K2$gBN!8F~}jF^Ej+8A3gLQN?67B4c3A^ern2>{Tx zM{!Sb#57uN5J8)wg{GMQ_kL8%qeXq-fK*ZQ90B>W7B#oKq}tk}C{!LgG zmcbO&bq{?n8=$F`(hLC5_p=Rd7ahnb=>228c^JL{-~v^(CX)B#3XqZuot^j2f_7tU z7mhfLSgX}gmCJKkUN%!n!ODIRb;5%I0|59_0{{R;UcrCLW17>@{)F|B$;pKd>~R9Y zI3SYCStk&6W=lATHaOg#5oi@@SUBrAY?|YWJd%{<1wt52xul*xf39`$NR)b4tF!6qQ{;L_zi?#7%bpPH4YCCQ0rG)ZP1u&%qJF36sbqWUT6EHIv-3?GC*pGziW;r oMf}dEiFNPG8mE4YZIyt^9~(pu@W%7-S^xk507*qoM6N<$f{5AxGynhq literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..550468fe0da184291f3ddfca278ad7a0e7aa2c1f GIT binary patch literal 516 zcmV+f0{i`mP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z02m%j%T4tF00D$aL_t(Y$L*G@l7lc5hJTn9mB`AKNF*{6i9{lil{^BEfJ7oABO@!3 zd4x(Nt}E!FA*B#5yJmZ47$EuKOU?~|kNuH3Yab|z@-C$qjWHG>&ok#&z*9ie)-1qE z6h-l!uJhbO7?z{?>or4Bw8Om++}RB#XdE|4Q-!X}CUvJ%iK_C!d0+*1ZCyPF1%R&0 zkfzEy#_m#F$-O4DY5K#2=eaj}b`zMADd@e2x|Rb}DG8$quXS8Uj!>GIt%*3I{O5V~U_7sbhKp0h5G{TpoXEEZi&&~tFXIk>#l z>GL)Vb=TJ46nt($yLvSM;5+P(cV^5V(yPyL{mf$TwSe_8(jL~U&BX}89m?Ld$!86| z@dSQbEw|OS!i^`#{d1WmW!9-)=UaaKtQv_9SsMS?|F$0$+0V@d*$$lm0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03S84HX?EW00GxYL_t(Y$K_TnlY=l2ecV)3B9WCyWMw20iL69c<|iOeB9W1ik;uwO zi{snjn(3UL@I4Q+( z@}OtVeVot5VE=Z@kmpVRu9WngflcG4=M-s@Xk0Ee+BTasbUYR)%MemVljm)xJR5XQ zq!hEDCU}yhs~J>EdSB*35M2>O*O4OU{s>g-?q^EdX5ic(ou9IM7`&a%o#IIV0PeE$ zK8m_+Au6OPgVsP@S5z28(cd2F0zi<6p$CSeU#?v(M74{~bi@v#HD!SH*|1aYBF+(q zVFy&#RS!;}ly=hD9`VnutF8W?jIyrLgVVDqcJ$OEQw{4pPD1#Lbxc$C{BPXH$z~eH z;?WubrYRewGz?h}YCENr^cagrYpaww#m}7kgOQ<9n3UFgU^v$a_%hx$@Ajj3@`&aYhwwRYGe~Vkpg2e zXjEv;z8se7e87uBqvAq7Z*leBvI=~cDZ-|7HW)VLDD^L=x~r91br1mVd#2jv+dXs- lOE-vNY*PcdeBOSZ`~peI;|nC~5dQ!G002ovPDHLkV1i9A2Alu@ literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3beautymaster.png b/Resources/img/ribbons/ribbong3beautymaster.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2d56bf51420f450bba4ed50dcdc45322d44e57 GIT binary patch literal 611 zcmV-p0-XJcP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03#HTtV`1X00HAkL_t(Y$Hi7HlY=l2U2aZPA}cGA$jV40G7^cb%uhg`L?R<2k;qCU z@?<3v*AwZ|Bm`I}Gq*FHGRd-!{dg}4fM`jQJ}G{6tpbW)a3ts!@b4`FG8e<)6l z^#%WA!PXu#mO#_g)}FaW?eXS}UC_C;!-q?V5U$tK+P~j(D2jg5a0R~Lj3ppM9smFo zMfq%+8q&0dEbCwxa&Ms1sf4PEK&jaKzWY%Dl`cxjSx^%^O*x5fR*%o|4bJgx;wVHo z0c~6TGi?}h5F(t?&=c3@@#U%=FVf;=9P4c<8{nKl+X8f5gN=bWe(#~Lm-p?Csg|-i z#AlasVTpBCY^;V`@%cI?rri}j0xbFNrjwa14#-?kcYxMTEE=6&iZ(Z))|%majDTRk7v+{d?jr#yigLVh zl-UY^u~ugK9W%zJivV(4DO>3A*h5-S{Wh06uilwZ4E+!5@mfGCAbF}EibK@Xqegv2 xx?htr)|{+Km-)x1=dn2yKIxpZHL3h}`vZQ2_iM*5mx2HQ002ovPDHLkV1gjp4od(4 literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3beautysuper.png b/Resources/img/ribbons/ribbong3beautysuper.png new file mode 100644 index 0000000000000000000000000000000000000000..13ec2950fa9dae36fd6d1cbf3764ce2410c58cec GIT binary patch literal 565 zcmV-50?Pe~P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z02?YsQtE>M00Fg0L_t(Y$K_Tnw}LdCqF%!lyjY8`C)RQhLE@#QO z3=mcb;H?3C{_5`MIrdI(37(z}u-gm}R(QP_joWm9%n~dloh9b&B4q(V_2b~~F;NJj z@F@y{YDifaH zTPyUN9JP$M@wgiXrO`kDsMoH=VNuw;Q?Gfs{|@;BG2-KrNXPg800000NkvXXu0mjf DZ_xVg literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3cool.png b/Resources/img/ribbons/ribbong3cool.png new file mode 100644 index 0000000000000000000000000000000000000000..34d3c1e1f31220e88cc5dc7b93c91c21d8a06629 GIT binary patch literal 515 zcmV+e0{s1nP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z02dO%5$opez~cI`V>Fd_%ni1%STK zkfz3ak1uQcO5t^(Z95z;T*`3r>@F}RQ#3>mRi#I$F&f6`5l(ZYT}wpoP}7T#YRJB} z)^XdCSA6u)4f)|cwvDj?MB$C1C)5}{(H!=e^B7vI5o8`oJM8bP-u9mJ7)sU0>$s}I z#eEclKhE7bbxbcHpb&f#QpWfQCCw?FYp!Kd$=C^Zddu|rIPCdYtcIGPvhN`K?yb(A z_gUy=YyHi^mlkxWR|5e19*(zl?#!RktIP1|Q4@<7ojpd{(|WbL7^UifvUh9pd4tm~ zL>Y-yT^R|aU3lIPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03ZiHKUvNI00GfSL_t(Y$K_TbmV+=59rjgJM(z=ik(H51WF(R!{mik_vK*kQ42)wP4RpP>&~-UTNu%F~No67F z8l>!3NqzFN5OqY*wtU(B}{5}$QMx1|7S4S*#fR}VarpHTydUHMA%+RU!=z9 zna|;h&CgRTt|VHeG2qDY*+*D?Wr^Ed)3y)hIAxsro@}lo=j?g6>EjeC4P(W^hJ>86 zSxfVrInppGrDVofv9Rq*W=x-jAhVIdrSK&)MYof7wHU2i_mE)A_w8}=tHlkn7Bp0* zy^}0yoP5=ZN~&iI73#ErU_czXt>jJ#NYk{BRDw0qwHTYkxJLeA;fn%e1>mTl%|9IW z*7*W&0!Jl9d`@Zgr?E?1Spps9$pJgc7p;H0)mkgiKz0+HoYm)A9qR2Td@oxkh!^b8 f21@yR`~UC@Sg!AxNT4P(00000NkvXXu0mjftqBBN literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3coolmaster.png b/Resources/img/ribbons/ribbong3coolmaster.png new file mode 100644 index 0000000000000000000000000000000000000000..f119bbbb9553b67212694fa759bf3c7416cbf81d GIT binary patch literal 615 zcmV-t0+{`YP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03!<>q(&wH00HMoL_t(Y$HiAGl7ui2?QD%eM(z=i$dQpqBofIHas-Zmj6@?^rqHSD z_+}l;QvAOiolddR2$9dm5U?!8WJ}Xjc+hxJTK7zdeDTQKl(txPkkcV$uoR(W#_D&v ztL5N)-D7|)-_vvov&9Bk3mPla-ibw`Q>Z$Nk{XP~3iY;tU_hkY*5ck0kfv$rp9{#U-K6o5|!hivXUH7 zWhLo;P0H994Q6NSJQ(rDd87OdS(45*+mp(V+aIMr2e`j7uNnXV002ovPDHLkV1jUU B6951J literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3coolsuper.png b/Resources/img/ribbons/ribbong3coolsuper.png new file mode 100644 index 0000000000000000000000000000000000000000..5f2beae097769f25af3d8989a832892791a77ad0 GIT binary patch literal 572 zcmV-C0>k}@P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z02>g1UNbQO00F#7L_t(Y$K{rE$nM51wVkw{$RPaqQc6O2S6k+^6i zE*g!CG+)5G2dHcaFS&C(!ghB*yFUl;Z6jE^p(xIGrJB(k=K@)l2LA$n1)Pp02k;US zBEHjemNA@8=h6D*lAEqTYL`DrKQsD`>4OoYqLzm5AQ1CdF%IXzZ8P zaodtr+*&ww`RW)CM;P`Xa&HvI<6`< z8^Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z02u=|)(~v~00DzZL_t(Y$L*G@mV+=5h6m1yN@O1)GO{ufiHt<@2$7XM0%h${IN@Dwn#H4BIm z<$3YIYaueYTpDlwey^aeyYXIYmFxy1v?y9AOACEpP3lgk25vV3O3^5I8tdvgC;&j; zS5THVI>zZzT+zKDv~7nYgbR^*&u#)^GSR_%Af*|h)*7(ZjBuPo?NTB}yBc4-SA+Jo zwvO8tcg4mXhA!V7W7h~7KIhHFiF~>zpyv9@eYF#b~V(%-*%h7Y*i0 zLeq7Nx~A)ZD|y^MS6EVEow{|t<;O3ok+_hh@sIs)`vzw((oIV`qM!f(002ovPDHLk FV1n;Z+zbE! literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3cutehyper.png b/Resources/img/ribbons/ribbong3cutehyper.png new file mode 100644 index 0000000000000000000000000000000000000000..57348fe2795073ff0fe38b79b6ba7f456d641fc2 GIT binary patch literal 590 zcmV-U0Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03RYO<)^g(00GWPL_t(Y$K_U`wu3MX4LcK)d`2a5vJ#1`e3DP7oa7Ubla-Z~m6MhI z3?yz(jIdG)ggu^G&e;LdG&f0;+W~x=WP3L>P5ZRgOmv)=AZ4BX3vdcBmOTNGjLNcl z;=7bNT(9k9{qd-wX}a;-7@d)UL+4@Sm}ylx`1$eB_jS_I<)K;te`PEJB5lHE8xb8nW2>V4Ai;TFO=N}N6RNUCAU_i(Swg?dGLfb@NzF157=EFr+dOC9s=5w_>G8zgYHtAQwg cZ@*7|0TGGk8yL!UO#lD@07*qoM6N<$f-i3aX#fBK literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3cutemaster.png b/Resources/img/ribbons/ribbong3cutemaster.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d5360d7459ff0c755118250336477f2b01d3ba GIT binary patch literal 606 zcmV-k0-^nhP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03#l7d7{k#00G`fL_t(Y$HiA6vV$-XT{;y=ju9DI8Hq$jA~`~2B}YJ3Mn)ndE0H+{ z64x(a`49qZI?QxuIxxv*ADew|lO{m4JTE>JzqU0A#V@%MGzR=06HpiOa9$csj&*|{ zSrS`gA#$*`UCk}Ws5Oqx*azJkyPRA~W$<`3tNHi4g1YXb$d!bG3z36TRRRD|*UiV; z7K);SvUD&ERWMMRHt>2eFop-$`yZ81T4#rK zlu}I3o-QZ9(+H7o#t=|SvD#9`#0=_xRNI!7AN-x6-wGX3uNHLIVD z&vo|!j(oqC(=uBm$X-yNKxZe`jV2|w3*e6}eJ^Ps7|?}u6ajdeaa}j_jUz3KLxAO2 zS{8sz#u!l-0o1nfE^v74p)9C=(OW&d%$y0u(EqX;p9Q1>l36W{hNkby0h_)j-LFX* sTib#qd|-^-DStykt#i-LTIJ8}58%)LyZLe;#Q*>R07*qoM6N<$f@ReKQ2+n{ literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3cutesuper.png b/Resources/img/ribbons/ribbong3cutesuper.png new file mode 100644 index 0000000000000000000000000000000000000000..dd436a767ee8360304d3ad89549eb48c2293527c GIT binary patch literal 567 zcmV-70?7S|P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z02~T3eO!zH00Fm2L_t(Y$K{qSlY=l2hF>}rm6es1kx1l9Boc|_Cm<{N3CK!hBr+0- zj67M1#PtN-9MBe$!l~{ILz`^!WIqG&ZQ{8u$n)Z^R5cnS3Xx^0_b=dAz^S+#z)C3$ zqdWi3vLk|^7|qvpiac-4|EiMSYA{2is6mowbY1#V?{Fw^y$VR_Tfuj>uAYMeK-Z;6 z5^Wvh-BMiHy;Eq@^v@KYWyjIlkHDNve(yb$r7}>h6|`0c&U380l!(@@=8f0tu2{&w+HWqs}7sEyPxM;i7W!#FZ^9Bq@u*yE^_*keU8S+)d_K+U{`}lS|Tk3?2Xg002ovPDHLk FV1kSA0Pp|+ literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3smart.png b/Resources/img/ribbons/ribbong3smart.png new file mode 100644 index 0000000000000000000000000000000000000000..5315269e370c9bec19ff72b29f61a7986119c41d GIT binary patch literal 515 zcmV+e0{s1nP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z02w0+D5?L7;S&2ll1eU-OA}f)|$jC}$ zWS3BhYX!YDq!hwq#!T-y93Z*m%Y6pmD}N-x(htf~-nCYPG0p{wA`gBAJO*@S$p*ZX zggD*lxhNtWk8&`7x#TFzTmP<99c%^@^mJ;FWd?1VkLn!`66Z5RT_;}f(AU*dPylG# z99d?(V;s)KmE7w>o2I*5cu_=yZ&!gSnUc^|#jL9d8kgPmN$h!_ zjfP9>Zwx-Qp-sIS07M)^#PR1maOQXE)p_+=FjnH-Vrz_ack9*eW|XP}%HE~P=M9$W z6-KgIJtG-pdfo4z%PlFlPVG8h^W*2$NNmX5_*ee7JOFu^&<%s5Mk@dS002ovPDHLk FV1iwr+~fcN literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3smarthyper.png b/Resources/img/ribbons/ribbong3smarthyper.png new file mode 100644 index 0000000000000000000000000000000000000000..862144767a2f5a8f506300adfc056d7d75304203 GIT binary patch literal 594 zcmV-Y0Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03Qcu;dAl;00GiTL_t(Y$K_Tn(t|J%T{;z&903`Ltc*k=BP%&Vj*ufnRz@NtBP)@S z9HA1|Pr%X;0)&=Nb!QmTWwS5)_fmjglVtA(A>_*#J<(BG0OwWmFTf!{U-ldz%BU#H z7p^%^;d+&m?~g|XLOjRcTGvT5uX3x?CjO?*!^P5AOF5mH41b zQrBt`)CDg~wwXb#>*VArGSNT2aGuUUo2GwU>ADIyPiOl>e$SIyW?8>b{Y$bI008oQ zP%8tBQD_V+U$;4w|xy-9*)vl7{PJviXT1pNT^|>$4RMlwT_I@;r)ysC!c93EoM3d zWQ1eUA?D@n9NE6FVNAE(+F4aRIAaG3PtQtk8Y5w_>G8^m$8 gtAS$v-u|Ba0aEhe`xX#1X#fBK07*qoM6N<$g1L_M!TPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03sdmYr-}F00H4iL_t(Y$Hi7HvV$-XUfw)W*&|dUk(H5=$jB!-LXMClL{>&3BO@!3 zksP5C*C$|UNCVxp%yefMn9Z_Z_UGHA0HSbS-zj$1wgttm*b_7d{5Qv8V@{jvTJ&UJ zKky|fa%;>O2j}c!E!0tKoE>otx~AK`xuiV8`K%Y~*J}ex-LjgiNI7SWgOp7H0HBn< zJ7=M;JNWzaFbqx7(cz%saw(y0tK|RjrV1)u+SaUshTwHANOW7&_@u@s7AcQUpj|gU zp$tOw4+US#I_%6(93j`-op%z-=W0OV~?a7mP{vOj+=E9 zf=%xmolfzjVT?cN5KsuVNNHKJ88qIMwQa!|Pac_@qb;5~$mx(WSc-6D#?$ZZu0E+p z-D7|)+qdZyMvD!y<}_}gS0@&UPV+=t>CjLY+U_zy&>>Q8YjYnB5T*2d>C$`pCKnAh+ArEcAHnAuXtO*{QaJoFgG!Z3nq;jbAyW0+PF0iypi#$qv0PN%w0~ v#Lii8?)3&Irhk^|uqjfbb4^~2%CE~m|9kp-8-hFC00000NkvXXu0mjfF-;6< literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3smartsuper.png b/Resources/img/ribbons/ribbong3smartsuper.png new file mode 100644 index 0000000000000000000000000000000000000000..076aa7271f09647c31d2e563b15d49a622cc0917 GIT binary patch literal 569 zcmV-90>=G`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z030F*$nxi z(P*Uk1$YRkYzSZSo#Rp2-Mf4D{TRTnnKySsmgNtv)!-TD0%@9f|3dtZaBOo9-~22`nAB!snH7+aSC zLJon?2cY$Ld%w=H@coYj<7a*BDg%TZs;aUcZq)%YMKG6il9+B6DGRXM=~=C9#GDIo zE?!h%w-cl+tT&WrYa?<(7KYKFU0iXqbFAvLi^TU2lh~@d!5q%(7MD4kVQR|(4=WZ| z9#t?ob9QKQhCHg)iCAj|t?dVF1z#q0zbIVZsh7Om|AzemN7Lv6bpM4@00000NkvXX Hu0mjf|K|2< literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3tough.png b/Resources/img/ribbons/ribbong3tough.png new file mode 100644 index 0000000000000000000000000000000000000000..370b9d150dec2b624d50388c008636973f03dcc8 GIT binary patch literal 515 zcmV+e0{s1nP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z02w%k-T6rX00DzZL_t(Y$L*G_mV+=5g)coTDtQbf5*dj^Mk0}wc?4u-WhF8)GO`kx zM_7r(bp;(7QVQW`*KFq;4v<{^FIE?kIk@a!ruB~#o*4^^dms4*JG=pIgUq@7Dd?@-f=w`$0~ zmez4ylUJ{1IuM07j-OCt^gy%OW5!Zwt$L7oByG39uX@{i#!@IHx7Tr1 zg_HZpIeVO&ed?HAKtRsfAf!>mdMIgj>0DzilS;-;xZPW(&&OfS$6_|r1Qoo2;LTf| zJ@2#7!_xX2gHJ7JQ?CYqBdulQJB9oGbGaqu)~Q|RYkvH^8i@^=8~@nPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03Z~*ffx_~00G8HL_t(Y$L&_Fl7lc1-gHh>@)$@YG7^c5tVCAk5s;P0%E-vbNMt0B zfyDI$EDa%n^l$EF?slfruq^xS?*{;XO~|7U)OB;yS}k;x7QlH$J_76mbmfr%qKt~7 zyy2Pi1oFID+;7_o>bjq=m69YH*miD5j+vIFfzzpjVW_;0j>iVB*A%48ywAHq5f?Nh zQi>p`4PKUPw}MJZaeLYsTM-N#m1X)j2MFzpmR0clE+AN#%VeN zb)BBU5fsagHVUPTion%MtlPsy-s2ZCe%m9==9&muanC(lol%; z0y0JyB~4R0gStT}B?+a)O1DdyK7QsrS*#4U!luj^-j14T&ic9UF2I)U)9YksivtpJ z>JHG}n=ERbkkLXDYU^y*f{<5CRSP*aXHNxkQhopp+!I8mMz$ z4qJUbzz@mq1uoACTqKKjc#&*X`lqK_YXw>-y8%w5_}V(zTpjai`^q==zkF1_0byY1 UabeBr2mk;807*qoM6N<$g53T39smFU literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong3toughmaster.png b/Resources/img/ribbons/ribbong3toughmaster.png new file mode 100644 index 0000000000000000000000000000000000000000..a613205ce0aa36a0b00be1d09e94094869fc9deb GIT binary patch literal 613 zcmV-r0-F7aP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03t2cvhtb$00HGmL_t(Y$Hi8yl7lc1-rSt17NMs}u8Ci*}%p)Kxk(H5=k&%^1 zWFG;E>j_vc34tb*neGe&vsw1b{(PGd2$Z5IUm1vnyCw|adgBk=$h{E=HfhoJa4S^$D@L}?xUKE_?%N(0Ou6}0I2Kc zrL}^xY~gb0U>GW|qtmH@`#l9IGw=WIrbsAVq!g>5CU{x0Ai7yK=Bx+KmXzTz?!l+Ull<2;|D%X^ELSvKm0(7+glwgu=qjfH_M`(Hy_FYm>Ut`+jlZUenLv4ZG?6K$pHG!LC!47Yd z1>LWMBGy`g)=A)HUVTO=G`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z030=h8*#A!00Fs4L_t(Y$K_TnlY=l2eRL`+ktdNzBr-A*8Hq$z@)MAil}KbHG7^c5 zM4qg~^#m*h+LBN>)tzDZ$jiR$H^8@vvvxz4UGGYjlW&Z1q-o;(3-K$$xvV*W6^Qfb zPS0uTA`GvS^{PscWw+tIETyxVm`J0jMjUIjZSoR#I$e?HKBNq+$Pc!zULpm6woMSn z+B(JuQ(VctbJDu*t~q&{x|6*h5mPb+o%c`_Y9Q5GL2EUT(;8t-iD>O=QoI#Ia$H-- zbxl^W!NR%AH^+D^zTXj%dxPLXsONa@Mp)ADg>gbTrZOTWBvB+L-czPm$vw@xp{9FF5j-A0SP0M<$++ zS3HuJgVYJ6&DM1_lZL0@_xCn4oxo{WL*}K6^U|p`I_!hnQ6F6N!R@%z=&(Q*EcGg| zK)BU75jw1`GWWd78Cyv|V{BSNeQmtDj$09yakL+ZG{mMuKSg}wwJ|jG wD0~V}w-cLTLu(9WyRBxIe9I-62HwGnKa!Fo;PyX*;s5{u07*qoM6N<$f{34kga7~l literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4beautygreat.png b/Resources/img/ribbons/ribbong4beautygreat.png new file mode 100644 index 0000000000000000000000000000000000000000..49ce262e64ba191d5b3711e8b46bee7e45b2b2c2 GIT binary patch literal 566 zcmV-60?GY}P)Px#24YJ`L;zp_cmTkm_cv+)000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2NEab!hT`^00Fj1L_t(Y$K{u?PQx$|hW|uWpQ9s7*OIDoP+15<>d*&3VyP--7?=I~K8(!mNPr#4QBbF|kKxMEFxLni$0PRj(sw*0|a+^SWPx#24YJ`L;zp_cmTkm_cv+)000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2P+o4nDgQQ00Id~L_t(Y$E{brP69y?p1l~KgOY|8kC4NhjTjRO9)N_#7-}tOBvcmA z*bqWv!UIsyD2+sj@ua&1LE*cPInYs^zq6l zIQCzJt`0C4(wF&@k?btIAd??ayhp;X?@JO+cECt1M<;r#B7A>41^|Fkc>^Y#&aS7c zqiSt5j5ui=FCdN=+yUIP*}%0_s`JempRXU!m87OI8b)w+?E}T8w#NCe3+s7Dnc^h9 z6`pF0T4m!PaRC4n3KgDSfC{fIrX4W=8+7p7ecMRQq~knsTT+P>urP%PzY5QhQ5I`XDMOG%|u6-s%_5CbU>%$r0QV#u&eA$ zDy&ljkv&BcondjGLY|3ORJbh*)aX<;NiPt7!|ZD=6Y`Yj{8Y9~FAxu0M$YG?K~Uw9 ztmhq0dT_7KL@SM6zs-96Hq)L6%hB{~wHY+F8NrDu#JMQOL1Syx3NuA3zbf$&C)dsu zZ;iM$_MkORAf3AhtwM1PG2(aRh;_BKDb@8mYXi}V%X-c=t)`A&vhiB0$);JYXv0$|n_00000NkvXXu0mjf1>+A2 literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4beautyultra.png b/Resources/img/ribbons/ribbong4beautyultra.png new file mode 100644 index 0000000000000000000000000000000000000000..9986f63c3489e7fc143ede7bdf19d8ecf861fa10 GIT binary patch literal 627 zcmV-(0*w8MP)Px#24YJ`L;zp_m;m@77hhBW000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2Oc|Ic5NX500Hw!L_t(Y$K_W$Zo)tieMS~Hpr>?08;mT2NCQ!%6uAKn;s8)kAu1Oj z(MD;wL5ehiCMZ}4lGcq2iku>aQ#b|8YW-Pz*F;K@saEURee-4>GYjzFOp|pq>#b16 z@9_Sn{R*%wplSe`3h3+RB@^treIpI7%S2CrU*ESm zvCb2x>#i^wI^k?S)^yqc0He1C0Qk#J;*wge$>U+R{#!-Rl^F?uvICxq)2sC0btt5K2>@c{y|46NADrm;= zNHp>IZ#pl4JV4v-Vm2RZ%43lagle9phb*u{^Eh620^#@hpz`K%2?dM?;MaLdmIh{Q zduw3_idfZT?J-ZRYK%E>+wQ`)yQ$wUVjN*BNV8~9hP94@Myf6P7%VBVJ$E)f#k7u( z(md9gHTIVsRE`TF+xVKSa$Ka&^uo_uQF9P=yTZ>~I;dJl*?$v%Vn6a|2wMFet7iZJ N002ovPDHLkV1m321CIaz literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4cool.png b/Resources/img/ribbons/ribbong4cool.png new file mode 100644 index 0000000000000000000000000000000000000000..8821c7d596768af5595f5af7374fc6e2162c9f76 GIT binary patch literal 524 zcmV+n0`vWeP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z1~>-B0>~o(00E3iL_t(Y$L*FuPQpMGhW}{@i8o-&t{b*kLZ(JnH73Mx2*Lq0krQa5 z2QVIj5H`Bf03j5%J%G2+q%P{B&M>y6yjLe~^sO4^&->p0-Y_%3UkgDMdWS~|MHjAT z!U~uQ<8wt&juBH(IS2LN=saj9-sIGnjX+=m(( zMRP>aTo<6$tb-|uIq({Hx2~4;ulD-7)yg#|$lzAX*X;#-JzLdwr2%5Q;7&J26s6y3 z0mT}tGgh-3485HiwMLyYd&YyImuoM_De2_8ytqylizfg;ufHjEtlUn=Z2*9j0dDU` z!pd1)1~;LUvwCl-jeR)Km6gYp)Zyr;Z)s$_rO0UdpGKz+MauqqV@vi=lUyDzS{KDrnz6)-|e literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4coolgreat.png b/Resources/img/ribbons/ribbong4coolgreat.png new file mode 100644 index 0000000000000000000000000000000000000000..a1d8ce06591c0fc0d635771e2379ceb189ac9344 GIT binary patch literal 323 zcmV-J0lfZ+P)`!R Vc?Z?O^m_mR002ovPDHLkV1if}fAIhS literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4coolmaster.png b/Resources/img/ribbons/ribbong4coolmaster.png new file mode 100644 index 0000000000000000000000000000000000000000..4ebf34aa1b93c0ac431d340416bf398fb3326244 GIT binary patch literal 391 zcmV;20eJq2P)DPQW^8db{>&DG*17|kJRen;9QsU zHF(Uc*9_P+04YX9sx^a4;Ol);O$Jbu9p6Kc$MYT@&pY%X4H%5ouP8XL-431CF3fAU z!=sOb&Hl%Y&*`|E1V@ktj(+|w(p14)KR|E<@lx|ZIC$%adN9f|wcixXvrd`paW$BW zTF`mz%E4PdB*9wQ5tzf1V1C$wBSTQB^8=p7B$HM-#*Va*S3vbXG7>CHiryCj&4PU8}I zb=1*V3q_*db6MbNTmli9ViHb7do_x(P5njIo;SfL19U^V&r=~6)GJcmYx${^g0lxm lTxgKw2Aw@PQbH}ye*p+W2r7{dh{ON@002ovPDHLkV1l=?t{VUV literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4coolultra.png b/Resources/img/ribbons/ribbong4coolultra.png new file mode 100644 index 0000000000000000000000000000000000000000..3a58b487a5c9f5d3fea3257282746eac07bd4a07 GIT binary patch literal 360 zcmV-u0hj)XP)B5ARPC>@lP6DP=BY7dg=a9xNivM87 znE=VG0?>#t&md&Z)!JnH9CpcJ%1`BO1H)Z& zfzNm!XNu87e;%w)f%uqxbbJ3X?)uTBi=@ zu2b7>SgX2g+yG*UFpQf})~;~@Qgh(CT{b8ckOH3uuN+@Bfktbm%_a~40000Px#24YJ`L;%PDZ~%arZ}SxZ000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2LvvGhI0`B00E6jL_t(Y$L*G}PQx$|hW|uWpT$eplB#l0nT(J+^bNXH?ZyBDPrv{J z8;FHB=+K2sRBcr??V5LC2tyfyEt90_U9ec-CM!POcmJJpHt^TXqdEpBr+bQDyj^%s zz*HbN0gnTHo4;1V&U)u$c!QF?2EKn>ko@uq)CQLUH|r(D%*DY@kW9 zM3O8`0(#Fmm=c%+Z*WiRX5IWMZ)i%bRdb9CZnZ*FULZ8R)n(T{K841MY@H=g z?&Gw_x_6^-aL`BZQTxp9@n{?r%F9tonq1dcxBJy90s!;}yGq4c?QGfx07$8DcYotK znblQr8%mkgM@ucGf>xacj!S!LL#0%Rw~L=&i)A-df3Pb6IaecVWIl9yW<8s>zd`Li zr}uF_@a1M+0P1fP)jn#N4Y1c7)jmaSG@L*PaWt3^0?}|ndbzL^3n7d`DHWttMl~fd z64+MDHHvDF`U^$F3DnDD;qcggd7r97R_m3S4@U7}Pp&d$F5cDu_G|VDQ76U^?GPjC P00000NkvXXu0mjfYI4{_ literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4cutegreat.png b/Resources/img/ribbons/ribbong4cutegreat.png new file mode 100644 index 0000000000000000000000000000000000000000..b208d7266fe88455e9e3103fe80f21242c7db9ac GIT binary patch literal 569 zcmV-90>=G`P)Px#24YJ`L;%PDZ~%arZ}SxZ000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2N61~=|Ok^00Fs4L_t(Y$K{v5Zo)7S#=juMvt(hVAY>|-f+{ia0F_t}Y#rL6Ptc(q zy0z+3sSm)ArA$Qup#;{vONVrz13k+z`EyP!b*Lu`U+#C`eTi*=|27C1)3J%m_R>P?}e~If5?W{In@*J^Xq~Yrx#EeoCOTG4FEu=n-s?7jhcyXFVB&L z#_<|)yp{#fnsqQIu?f6x`nHDK#!q{Dvel&8WU#@_W>2;k=t*y>?GytfcEO!)f;c|T zj|F7MSoN5^o6g#~F|@|@+1TUhtbNj66Q!)3>*o6Iu-PmD0Hg7~P%)|X7cBsQ5FYLy zZXGLobrD>Ja`x)dRtw>QR38&ZnVzapAv{F8;P=O3)(JHl?@xdxN2Ae}`Pk{pxxZ+o zpz4~{^H@)O6|PQz^czQY4Hbq8Q0FG9YaF%9$sDfhmL_vu7t6_5d8~S?CM>#34f?|rw9M;5 z#op@^^aAwuMZ3V!lhbq7uD5yLC^wF+m>x8})N}t${K@zR^S|66{^JGO00000NkvXX Hu0mjfJqrQH literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4cutemaster.png b/Resources/img/ribbons/ribbong4cutemaster.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2bf6deebf1e92673706b5a78fe58246acbef17 GIT binary patch literal 649 zcmV;40(Sk0P)Px#24YJ`L;&yrm;k7ndMU5~000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2Pq@p9aTdB00Id~L_t(Y$E{brP69y?p1l~JWgA=MLJot~8Ivn`01_G_9fcM&T3SGX zm4wEG2cWn{Dv1yS(q6-pSeykGms$6g{h1Y~y4-#@-~4<#yT^cNwX^d*1-JQpXA~U! zFGAk{m=EdO;?+ua(Yz#+pHQMl!msZu5>5@kN~~rlN2?=Te^dYfAgt$L!a<0x?f0GysSM0o)kqPJLf!~oYw{Pc~emXu(Ll z+wH6bMM-~KU<=6Pi>b0#1%U!fT3agtW}D8cRzJ9x0|0<1ic0_)gbvbK)mlaqsp=28 znD2p*w6@xwA}RIYV1GT0FaQdn?!Yi^r+KGa5{5cVOoVcoIp+rx&}%#CCfF!!YA2Hp z>oq{sNRh z>8%%n^ypcwW~Px#24YJ`L;%PDZ~%arZ}SxZ000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2O%k00HqyL_t(Y$K_WsZo)ti93zXjxSZrH7v54RP z{Z085U{OHX02CR}*Ud{Q*mdtl7+e*Jo&Z0;ZiW1^0n`RA0t|Ld0DxgerG7kX$kgre zVV{DA;TB=IO#`5B(!dkPjrDdn=7~wp~qTE^bUcxFAm)9TRa5!Kb zY|=f$j1Y#&Itd_ujujdJER7yCO{*_1s@-6ybA9NWsK`{=jx-qRx%6h4UJSf6dKd>A zJU?9l*r%)vGlF3f`{*n)iEnaN7??y=bSMj6R1N}VEvuDWuNEB!clRHKH7x=y8y>kP zp8ZW%1yBWOSvKa2sUkfV*+8h~WqK$Bt2K|abte#ZpAD*N9yd_KSO9iirDS1XV(axs z+z!N=rfF$=tP-mfV;0=9Y*?0E`0XObEL&chd3z$PRn#<6ZQaLULxwGNHa5ky&W_S5 z)}=MJ*DK79CobFUnrwDF70&e9&s$z|;B~v&&s#buTSw7<6Mtgg*QyM9s33Zv00000 LNkvXXu0mjfYN`V1 literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4smart.png b/Resources/img/ribbons/ribbong4smart.png new file mode 100644 index 0000000000000000000000000000000000000000..8c96f94ecb66cdb5f9c86199be124dac3a9ec35f GIT binary patch literal 530 zcmV+t0`2{YP)Px#24YJ`L;$b=@BnZOMX`qf000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2L(86N%sK&00ELoL_t(Y$L*FePQySDMZc{mJvZbp#!?F*p;Tvqk}@P)Px#24YJ`L;z?2&;U@jy-t=vq&k8^7t;<%EYLmeR7mIb-UZ5_$rM6QH5ZVP-YaxPQ zGv5>t9b?sF@~+#f#KzDX*JopoyS>Uzdrg$GcCPcY>-BW{3;<|%mWhfA00`mX z_U^*5vR5a;RVZh#PHnXi9!T{ju^;KF3KhbGzZn1iSd2QM+MVSN(Bx<|+A{Ya_T+px zC~ra4HLK^bp7`VRa|cMjaa8A!VWqRa^u*F=|R&=J@?Px#24YJ`L;z?2&;U@j#b}{xOe{QvcmPe%LOV3k z#!fv11&v^#QDa0JN%jKVfX-qqupn=o9p>ka_^QqB$NS#T_udQwOj}uAn{aUbk7vQb ziT@%D4M2pDK0e($$u`!v+2jkH=!x*_dxwS718@@S*{RW*2;bjI0D#(R4j0bmH?sB7 z^zQDaFG;iP1zGkY1E6m{AM~zJ>SnJZpD(sPjifHSyXj;9Uu=A`Xc9tM^Ye`o__M zmAE?^ISHmE{cV9OAe%3t%U%}*32b+7;3S}IJMF5|56yA}07;S-04j(ablO#C8EvGx zKjIRh2g2^&z}QnFR`kgRCjQMk{D%@8EZgwW0tQ!cOFw}FMkg`qVxKJ(E4J1N#xfI`^*Dv(@eL>R4P}9Shq;_(n7G^=7lwnh~5@LV8xkxLIm>wIW>E>bFX| z#Ob{Y#d|Y;$WQQ)p8x>PPOq&BrFVo;f5*<))?1%aLx1O8AU1LN%(g1Mb9{7oK6!oZ p2K_D3Rh%R#Y|0OE6iV#E{{W`uFg}$i?xX+!002ovPDHLkV1kXh918#d literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4smartultra.png b/Resources/img/ribbons/ribbong4smartultra.png new file mode 100644 index 0000000000000000000000000000000000000000..ab4e9e3a178fbe8ed62c269516e76285703e1135 GIT binary patch literal 629 zcmV-*0*d{KP)Px#24YJ`L;$b=@BnZOMX`qf000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2OtI9(rfns00H$$L_t(Y$K_WsZo)ti93zXKiq;=Mf+iSQ1|0m&cW2XrZ%!YQ1!4%=tnnMf(J)#9MyMbuHRw|o)5 z?faYZE5M?FvH>VEpf9h_sbE)^*TUecNc05w`E?`Y7Y!gca1!8VT?7C$3@_D>X9bzM zJ=||YP}g0;b(diP^i3Mr?mNC-Z}~hiiCoO{p?mGVm!@Y*#!F7Xm5J3DKD>MM8&PuQ}Ex)*^cAcKi^`UQ~B2#5MQm3cK(i>%ZHgI)T z!oGXN)8hqzZOE!&cxV{J-aE-m;2WG31}0G@9g2b{m4iT8i)tm-t3`*w?cGOWO_M;= zhDWT4M}N~<0b~K1riICLs7Q}RHV~?LnjX@?a?Rst-3f%*7EIGh{B{;&mMt&Mygd=tDsmdBHt%DwAj6hA8=GQU zM@MNE>(m;L+dHgBWiH$3nruBPC(iWT&s$z|;B~v)&s#buTSw7<6MtggdZh~rC|st5 P00000NkvXXu0mjfaY6=# literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4tough.png b/Resources/img/ribbons/ribbong4tough.png new file mode 100644 index 0000000000000000000000000000000000000000..72b9043e894783b507ba827b5637e2b987186cf8 GIT binary patch literal 521 zcmV+k0`~ohP)Px#24YJ`L;%15pa4L>@=sI%000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2L>a}0c|b-00D_fL_t(Y$L*HCP69y?#=pG~-i8*JkUjrYXG|z~0Xu@dCin!JXpgbu z1t@5wQs6>3XzyJt&f+Z2UDo3`XO4}HPIY0w>~FuBVRnJP7J@32N5?5e7p>>Q3787x z9zbxQuWv7DKgMFULcMa z<^X!lIhe9B2VUcL>uOp5O0REHtzC113~n@hlU~3#wbg0Y8X$2CZnYD{arT`ZpjhLy z#=3UBzTB(PYt%ZkYuxM0o%C{?k|x*9^<5fPEZTFjuo8O@Jn$!C@ zzwuz0?f~^~6xSXqgblF2Ij%j5+u2A!N>3w2bMdbJk6(*VA3Mi~T{P`m00000 LNkvXXu0mjf*tp(2 literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbong4toughgreat.png b/Resources/img/ribbons/ribbong4toughgreat.png new file mode 100644 index 0000000000000000000000000000000000000000..f57b8ab466cb02fd0217969005f6ffd2a6c03502 GIT binary patch literal 562 zcmV-20?qx2P)Px#24YJ`L;&~z*Z@FuL52GO000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2M_|C@W`hC00FW|L_t(Y$K{vLPQpMC#=ka%$M6lfVhPy_oQftKcmZw%@0#cnXrgzG zH(!7Q2lb=^Ar!8C10TWzCe}lpy8XAEt($moPYpYr-^_g5*#Y=(%i*#iO>&MU_ zSRe=%aR9Vu9L#a71Fz|x*7d6XU0ydXHD#@{*x*LPjmrzTv9?rpvH^Bx!L9ZVK@dGh z0p!~l)tIy!Pn<#<+T-f1t?_u`WXh|PDXVjxo?L{>p2YPHPE;~#&sX)^(p z_l(}hX~$`*mJ^}788v`lNI#+^}! z&L~tih`dr3y;pg>ErN0F*c#J|xPx#24YJ`L;%15pa4L>@=sI%000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2Q3T`psgMN00IL^L_t(Y$E{bpP69y`J+m=>27f?{OUUA*LQE+50XqVfjV9P=w2?#` zD-0b!KtX|2ifoKXyMMq(SYX0h;9X|Nnc)sN)n?|*J@;|u&a41)_?2RHeA6C9lQ zFG5!bgbV4*>$8>Y=XQEqH*E?t*x^`bE#C1x~q~LoW@#G+vq$^P^z?@}|O`I>x5k<@Ir2~2lcX%8S)mN>bJZO!h1tamq zvbR?Ee^a_Dfz2V4EuqR@6$A;aQk_}}DB6B6XSG9T*#m$eD5U^0hz#_5IcpkCq^dpQ z60R3Qr8?Etlt{T3huHKsA_q8xx(ma2oJL)d5{BALOoVcpegAIPx#24YJ`L;&~z*Z@FuL52GO000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP; z2Ou{T1v+;C00HPpL_t(Y$K_W&Z^AGTeL;wS!&(wW0onzsN*($K*bwZA1Os!BV5h2B z_yZlfl&Pgeh_q||ONVrDhxCH;;lvJ=I`k$hKKtFfd)yh|znLcMsJA*y#?OC$(|!e5 z7Em<+O$GGj^|=u2>hf9|ye<e)Qz13kNG09vk@}YYj+hvJVJGRR_Z!4wbifgyg;QPR2bqc^RLj*yz zjsnP@gFq8)Go_VGua+GKw|5`8HO&Jp8Xg&H>ECo&0A+xd z)yHBv)s)8~9|+aFNDoC|mF97}?gYYr=YuMn$2C+i9)Mq$DOnnr*zPvs4wUfMPwlZx ztV)b|aLek$viiAuXEEm4iqb6lCd0apibkrf`WURKu%*t%rImHC-x1}&Ipp)ZD0HV0000igP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03{MHl}TU#00D|gL_t(Y$L&|Gl7lc1UOE-X$Vy}-j}eKCMDhrEgggQgiA3@k$V%kN zNL)|cB^Q>kNhqDExSe4JlFj#Je?u}Lg!Ag@evjjjou!|}f`q_Q^@AY8&;tNKRf%1& zRQ(|FF!Zo2jU5+4Q=W#tXZAhMTTAXEzED6eDF&uUeQU8?sYxNU1)OC2OW+4I^QCH{ zymJX91O_k!)R?7Vo33O zibPpFO!OB$LxbSxT6Tws%6_JH_OK$qcj)fO=+9+O269n-H9KiCL&&7&>3YYq=KzD^tql)BM> zi#Jkh<^?i80KSdZnjLE(p<0fWLpO=g1`KHG4I)`Mubz|#Lh~OZ-(TYAe_j-3y#N3J M07*qoM6N<$g61*O&;S4c literal 0 HcmV?d00001 diff --git a/Resources/img/ribbons/ribbonwinning.png b/Resources/img/ribbons/ribbonwinning.png new file mode 100644 index 0000000000000000000000000000000000000000..0083cec25d92cde0a18caa3fe2129128f3bf72ae GIT binary patch literal 469 zcmV;`0V@89P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2ipV| z03`t2EI23t00C7=L_t(Y$JJIbcEcbH6?q*zX3Xd#_!t>IGIrz$9DyTv%;=FZ$M6w6 zcFdTq9a<5hfDm~&ZS|htGe-RHFA0GH#*WAFGajGMUbXU9Qjii@t$z{3`xyWL#!+X% zYW<7E-p_Eon($rg3m0ja=Y4qZx+##Sh<6-NOiF<{($rdNZ``ETmjJlf>4zWN)N}zVLE!jF`INR38)|BUGl9tV-_`3@4Q|zJ{;L#ohNSep z#zcyji5Aynv*>s^kzKc{H~iY3b6SB!8DX){-k{Y{*k8ZgG6@g00000 LNkvXXu0mjfuh+++ literal 0 HcmV?d00001 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/Subforms/PKM Editors/RibbMedal.Designer.cs b/Subforms/PKM Editors/RibbMedal.Designer.cs index 451d54d9d..69be36b35 100644 --- a/Subforms/PKM Editors/RibbMedal.Designer.cs +++ b/Subforms/PKM Editors/RibbMedal.Designer.cs @@ -1026,7 +1026,7 @@ private void InitializeComponent() // // PB_57 // - this.PB_57.Image = global::PKHeX.Properties.Resources.ribbon_40; + this.PB_57.Image = global::PKHeX.Properties.Resources.ribbonchampiong6hoenn; 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); @@ -1037,7 +1037,7 @@ private void InitializeComponent() // // PB_O5 // - this.PB_O5.Image = global::PKHeX.Properties.Resources.ribbon_46; + this.PB_O5.Image = global::PKHeX.Properties.Resources.ribbonmastertoughness; 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); @@ -1059,7 +1059,7 @@ private void InitializeComponent() // // PB_O4 // - this.PB_O4.Image = global::PKHeX.Properties.Resources.ribbon_45; + this.PB_O4.Image = global::PKHeX.Properties.Resources.ribbonmastercleverness; 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); @@ -1070,7 +1070,7 @@ private void InitializeComponent() // // PB_O0 // - this.PB_O0.Image = global::PKHeX.Properties.Resources.ribbon_41; + this.PB_O0.Image = global::PKHeX.Properties.Resources.ribbonconteststar; 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); @@ -1081,7 +1081,7 @@ private void InitializeComponent() // // PB_O3 // - this.PB_O3.Image = global::PKHeX.Properties.Resources.ribbon_44; + this.PB_O3.Image = global::PKHeX.Properties.Resources.ribbonmastercuteness; 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); @@ -1092,7 +1092,7 @@ private void InitializeComponent() // // PB_O2 // - this.PB_O2.Image = global::PKHeX.Properties.Resources.ribbon_43; + this.PB_O2.Image = global::PKHeX.Properties.Resources.ribbonmasterbeauty; 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); @@ -1103,7 +1103,7 @@ private void InitializeComponent() // // PB_O1 // - this.PB_O1.Image = global::PKHeX.Properties.Resources.ribbon_42; + this.PB_O1.Image = global::PKHeX.Properties.Resources.ribbonmastercoolness; 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); @@ -1183,7 +1183,7 @@ private void InitializeComponent() // // PastBattle // - this.PastBattle.Image = global::PKHeX.Properties.Resources.battlememory; + this.PastBattle.Image = global::PKHeX.Properties.Resources.ribboncountmemorybattle; this.PastBattle.Location = new System.Drawing.Point(164, 167); this.PastBattle.Name = "PastBattle"; this.PastBattle.Size = new System.Drawing.Size(40, 40); @@ -1193,7 +1193,7 @@ private void InitializeComponent() // // PastContest // - this.PastContest.Image = global::PKHeX.Properties.Resources.contestmemory; + this.PastContest.Image = global::PKHeX.Properties.Resources.ribboncountmemorycontest; this.PastContest.Location = new System.Drawing.Point(164, 127); this.PastContest.Name = "PastContest"; this.PastContest.Size = new System.Drawing.Size(40, 40); @@ -1203,7 +1203,7 @@ private void InitializeComponent() // // PB_54 // - this.PB_54.Image = global::PKHeX.Properties.Resources.worldchamp; + this.PB_54.Image = global::PKHeX.Properties.Resources.ribbonchampionworld; 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); @@ -1214,7 +1214,7 @@ private void InitializeComponent() // // PB_50 // - this.PB_50.Image = global::PKHeX.Properties.Resources.wishing; + this.PB_50.Image = global::PKHeX.Properties.Resources.ribbonwishing; 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); @@ -1225,7 +1225,7 @@ private void InitializeComponent() // // PB_53 // - this.PB_53.Image = global::PKHeX.Properties.Resources.nationalchamp; + this.PB_53.Image = global::PKHeX.Properties.Resources.ribbonchampionnational; 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); @@ -1236,7 +1236,7 @@ private void InitializeComponent() // // PB_52 // - this.PB_52.Image = global::PKHeX.Properties.Resources.regionalchamp; + this.PB_52.Image = global::PKHeX.Properties.Resources.ribbonchampionregional; 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); @@ -1247,7 +1247,7 @@ private void InitializeComponent() // // PB_51 // - this.PB_51.Image = global::PKHeX.Properties.Resources.battlechamp; + this.PB_51.Image = global::PKHeX.Properties.Resources.ribbonchampionbattle; 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); @@ -1404,7 +1404,7 @@ private void InitializeComponent() // // PB_47 // - this.PB_47.Image = global::PKHeX.Properties.Resources.souvenir; + this.PB_47.Image = global::PKHeX.Properties.Resources.ribbonsouvenir; 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); @@ -1415,7 +1415,7 @@ private void InitializeComponent() // // PB_46 // - this.PB_46.Image = global::PKHeX.Properties.Resources.special; + this.PB_46.Image = global::PKHeX.Properties.Resources.ribbonspecial; 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); @@ -1426,7 +1426,7 @@ private void InitializeComponent() // // PB_45 // - this.PB_45.Image = global::PKHeX.Properties.Resources.birthday; + this.PB_45.Image = global::PKHeX.Properties.Resources.ribbonbirthday; 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); @@ -1437,7 +1437,7 @@ private void InitializeComponent() // // PB_44 // - this.PB_44.Image = global::PKHeX.Properties.Resources._event; + this.PB_44.Image = global::PKHeX.Properties.Resources.ribbonevent; 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); @@ -1448,7 +1448,7 @@ private void InitializeComponent() // // PB_43 // - this.PB_43.Image = global::PKHeX.Properties.Resources.premier; + this.PB_43.Image = global::PKHeX.Properties.Resources.ribbonpremier; 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); @@ -1459,7 +1459,7 @@ private void InitializeComponent() // // PB_42 // - this.PB_42.Image = global::PKHeX.Properties.Resources.classic; + this.PB_42.Image = global::PKHeX.Properties.Resources.ribbonclassic; 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); @@ -1470,7 +1470,7 @@ private void InitializeComponent() // // PB_41 // - this.PB_41.Image = global::PKHeX.Properties.Resources.world; + this.PB_41.Image = global::PKHeX.Properties.Resources.ribbonworld; 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); @@ -1481,7 +1481,7 @@ private void InitializeComponent() // // PB_40 // - this.PB_40.Image = global::PKHeX.Properties.Resources.earth; + this.PB_40.Image = global::PKHeX.Properties.Resources.ribbonearth; 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); @@ -1492,7 +1492,7 @@ private void InitializeComponent() // // PB_37 // - this.PB_37.Image = global::PKHeX.Properties.Resources.national; + this.PB_37.Image = global::PKHeX.Properties.Resources.ribbonnational; 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); @@ -1503,7 +1503,7 @@ private void InitializeComponent() // // PB_36 // - this.PB_36.Image = global::PKHeX.Properties.Resources.country; + this.PB_36.Image = global::PKHeX.Properties.Resources.ribboncountry; 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); @@ -1514,7 +1514,7 @@ private void InitializeComponent() // // PB_35 // - this.PB_35.Image = global::PKHeX.Properties.Resources.legend; + this.PB_35.Image = global::PKHeX.Properties.Resources.ribbonlegend; 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); @@ -1525,7 +1525,7 @@ private void InitializeComponent() // // PB_34 // - this.PB_34.Image = global::PKHeX.Properties.Resources.record; + this.PB_34.Image = global::PKHeX.Properties.Resources.ribbonrecord; 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); @@ -1536,7 +1536,7 @@ private void InitializeComponent() // // PB_33 // - this.PB_33.Image = global::PKHeX.Properties.Resources.footprint; + this.PB_33.Image = global::PKHeX.Properties.Resources.ribbonfootprint; 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); @@ -1547,7 +1547,7 @@ private void InitializeComponent() // // PB_32 // - this.PB_32.Image = global::PKHeX.Properties.Resources.artist; + this.PB_32.Image = global::PKHeX.Properties.Resources.ribbonartist; 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); @@ -1558,7 +1558,7 @@ private void InitializeComponent() // // PB_31 // - this.PB_31.Image = global::PKHeX.Properties.Resources.gorgeousroyal; + this.PB_31.Image = global::PKHeX.Properties.Resources.ribbongorgeousroyal; 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); @@ -1569,7 +1569,7 @@ private void InitializeComponent() // // PB_30 // - this.PB_30.Image = global::PKHeX.Properties.Resources.royal; + this.PB_30.Image = global::PKHeX.Properties.Resources.ribbonroyal; 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); @@ -1797,7 +1797,7 @@ private void InitializeComponent() // // PB_27 // - this.PB_27.Image = global::PKHeX.Properties.Resources.gorgeous; + this.PB_27.Image = global::PKHeX.Properties.Resources.ribbongorgeous; 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); @@ -1808,7 +1808,7 @@ private void InitializeComponent() // // PB_26 // - this.PB_26.Image = global::PKHeX.Properties.Resources.smile; + this.PB_26.Image = global::PKHeX.Properties.Resources.ribbonsmile; 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); @@ -1819,7 +1819,7 @@ private void InitializeComponent() // // PB_25 // - this.PB_25.Image = global::PKHeX.Properties.Resources.snooze; + this.PB_25.Image = global::PKHeX.Properties.Resources.ribbonsnooze; 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); @@ -1830,7 +1830,7 @@ private void InitializeComponent() // // PB_24 // - this.PB_24.Image = global::PKHeX.Properties.Resources.relax; + this.PB_24.Image = global::PKHeX.Properties.Resources.ribbonrelax; 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); @@ -1841,7 +1841,7 @@ private void InitializeComponent() // // PB_23 // - this.PB_23.Image = global::PKHeX.Properties.Resources.careless; + this.PB_23.Image = global::PKHeX.Properties.Resources.ribboncareless; 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); @@ -1852,7 +1852,7 @@ private void InitializeComponent() // // PB_22 // - this.PB_22.Image = global::PKHeX.Properties.Resources.downcast; + this.PB_22.Image = global::PKHeX.Properties.Resources.ribbondowncast; 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); @@ -1863,7 +1863,7 @@ private void InitializeComponent() // // PB_21 // - this.PB_21.Image = global::PKHeX.Properties.Resources.shock; + this.PB_21.Image = global::PKHeX.Properties.Resources.ribbonshock; 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); @@ -1874,7 +1874,7 @@ private void InitializeComponent() // // PB_20 // - this.PB_20.Image = global::PKHeX.Properties.Resources.alert; + this.PB_20.Image = global::PKHeX.Properties.Resources.ribbonalert; 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); @@ -1885,7 +1885,7 @@ private void InitializeComponent() // // PB_17 // - this.PB_17.Image = global::PKHeX.Properties.Resources.effort; + this.PB_17.Image = global::PKHeX.Properties.Resources.ribboneffort; 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); @@ -1896,7 +1896,7 @@ private void InitializeComponent() // // PB_16 // - this.PB_16.Image = global::PKHeX.Properties.Resources.expertbattler; + this.PB_16.Image = global::PKHeX.Properties.Resources.ribbonbattlerexpert; 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); @@ -1907,7 +1907,7 @@ private void InitializeComponent() // // PB_15 // - this.PB_15.Image = global::PKHeX.Properties.Resources.skillfullbattler; + this.PB_15.Image = global::PKHeX.Properties.Resources.ribbonbattlerskillful; 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); @@ -1918,7 +1918,7 @@ private void InitializeComponent() // // PB_14 // - this.PB_14.Image = global::PKHeX.Properties.Resources.training; + this.PB_14.Image = global::PKHeX.Properties.Resources.ribbontraining; 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); @@ -1929,7 +1929,7 @@ private void InitializeComponent() // // PB_13 // - this.PB_13.Image = global::PKHeX.Properties.Resources.bestfriends; + this.PB_13.Image = global::PKHeX.Properties.Resources.ribbonbestfriends; 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); @@ -1940,7 +1940,7 @@ private void InitializeComponent() // // PB_12 // - this.PB_12.Image = global::PKHeX.Properties.Resources.sinnohchamp; + this.PB_12.Image = global::PKHeX.Properties.Resources.ribbonchampionsinnoh; 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); @@ -1951,7 +1951,7 @@ private void InitializeComponent() // // PB_11 // - this.PB_11.Image = global::PKHeX.Properties.Resources.hoennchamp; + this.PB_11.Image = global::PKHeX.Properties.Resources.ribbonchampiong3hoenn; 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); @@ -1962,7 +1962,7 @@ private void InitializeComponent() // // PB_10 // - this.PB_10.Image = global::PKHeX.Properties.Resources.kaloschamp; + this.PB_10.Image = global::PKHeX.Properties.Resources.ribbonchampionkalos; 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); diff --git a/Subforms/PKM Editors/RibbMedal.cs b/Subforms/PKM Editors/RibbMedal.cs index c33c5ddb3..668d05d7e 100644 --- a/Subforms/PKM Editors/RibbMedal.cs +++ b/Subforms/PKM Editors/RibbMedal.cs @@ -363,14 +363,14 @@ private void updateMemoryRibbon(object sender, EventArgs e) { 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, + PastContest.Image = Util.ChangeOpacity(val < 40 ? Properties.Resources.ribboncountmemorycontest : Properties.Resources.ribboncountmemorycontest2, (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, + PastBattle.Image = Util.ChangeOpacity(Util.ToUInt32(TB_PastBattle.Text) < 40 ? Properties.Resources.ribboncountmemorybattle : Properties.Resources.ribboncountmemorybattle2, (val != 0 ? 1 : 0) * 0.9 + 0.1); } } diff --git a/Subforms/PKM Editors/RibbonEditor.Designer.cs b/Subforms/PKM Editors/RibbonEditor.Designer.cs index e44f67fdd..a09a92cb6 100644 --- a/Subforms/PKM Editors/RibbonEditor.Designer.cs +++ b/Subforms/PKM Editors/RibbonEditor.Designer.cs @@ -122,7 +122,7 @@ private void InitializeComponent() this.SPLIT_Ribbons.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No; this.SPLIT_Ribbons.Panel2MinSize = 1; this.SPLIT_Ribbons.Size = new System.Drawing.Size(394, 229); - this.SPLIT_Ribbons.SplitterDistance = 150; + this.SPLIT_Ribbons.SplitterDistance = 180; this.SPLIT_Ribbons.SplitterWidth = 1; this.SPLIT_Ribbons.TabIndex = 7; // @@ -132,7 +132,7 @@ private void InitializeComponent() 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(148, 227); + this.FLP_Ribbons.Size = new System.Drawing.Size(178, 227); this.FLP_Ribbons.TabIndex = 5; // // TLP_Ribbons @@ -147,10 +147,10 @@ private void InitializeComponent() 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(241, 227); + this.TLP_Ribbons.Size = new System.Drawing.Size(211, 227); this.TLP_Ribbons.TabIndex = 3; // - // RibbMedal2 + // RibbonEditor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; diff --git a/Subforms/PKM Editors/RibbonEditor.cs b/Subforms/PKM Editors/RibbonEditor.cs index 3c3f11a76..fd3b9bbdb 100644 --- a/Subforms/PKM Editors/RibbonEditor.cs +++ b/Subforms/PKM Editors/RibbonEditor.cs @@ -14,7 +14,10 @@ public RibbonEditor() 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(); populateRibbons(); + TLP_Ribbons.ResumeLayout(); } private readonly List riblist = new List(); @@ -64,10 +67,12 @@ private void populateRibbons() } private void addRibbonSprite(RibbonInfo rib) { - PictureBox pb = new PictureBox { AutoSize = true, Visible = false, Name = PrefixPB + rib.Name }; + 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.ToLower()); if (img != null) - pb.Image = (Image)img; + pb.BackgroundImage = (Image)img; + if (img == null) + return; FLP_Ribbons.Controls.Add(pb); } @@ -104,7 +109,15 @@ private void addRibbonChoice(RibbonInfo rib) 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; }; + nud.ValueChanged += (sender, e) => + { + rib.RibbonCount = (int)nud.Value; + FLP_Ribbons.Controls[PrefixPB + rib.Name].Visible = rib.RibbonCount > 0; + if (nud.Maximum == nud.Value && nud.Maximum > 4) + FLP_Ribbons.Controls[PrefixPB + rib.Name].BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(rib.Name.ToLower() +"2"); + else + FLP_Ribbons.Controls[PrefixPB + rib.Name].BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(rib.Name.ToLower()); + }; nud.Value = rib.RibbonCount > nud.Maximum ? nud.Maximum : rib.RibbonCount; TLP_Ribbons.Controls.Add(nud, 0, row); } diff --git a/Subforms/PKM Editors/SuperTrainingEditor.cs b/Subforms/PKM Editors/SuperTrainingEditor.cs index 203e07be6..bb00c8d91 100644 --- a/Subforms/PKM Editors/SuperTrainingEditor.cs +++ b/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -12,9 +12,14 @@ 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(); populateRegimens("SuperTrain", TLP_SuperTrain, reglist); populateRegimens("DistSuperTrain", TLP_DistSuperTrain, distlist); + TLP_SuperTrain.ResumeLayout(); + TLP_DistSuperTrain.ResumeLayout(); CB_Bag.Items.Clear(); CB_Bag.Items.Add("---"); @@ -24,6 +29,9 @@ public SuperTrainingEditor() 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; } @@ -97,10 +105,12 @@ private void save() foreach (var reg in distlist) ReflectUtil.SetValue(pkm, reg.Name, reg.CompletedRegimen); - if (CB_Bag.Visible) + if (pkm is PK6) { - (pkm as PK6).TrainingBag = CB_Bag.SelectedIndex; - (pkm as PK6).TrainingBagHits = (int)NUD_BagHits.Value; + PK6 pk6 = (PK6)pkm; + pk6.SecretSuperTraining = CHK_Secret.Checked; + pk6.TrainingBag = CB_Bag.SelectedIndex; + pk6.TrainingBagHits = (int)NUD_BagHits.Value; } Main.pkm = pkm; From ee4a846aeef546250b938dc08e27242a428da9c8 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 20:03:33 -0700 Subject: [PATCH 057/184] Delete old ribbon editor Replaced by simpler forms. --- PKHeX.csproj | 9 - Subforms/PKM Editors/RibbMedal.Designer.cs | 2983 -------------------- Subforms/PKM Editors/RibbMedal.cs | 382 --- Subforms/PKM Editors/RibbMedal.resx | 612 ---- 4 files changed, 3986 deletions(-) delete mode 100644 Subforms/PKM Editors/RibbMedal.Designer.cs delete mode 100644 Subforms/PKM Editors/RibbMedal.cs delete mode 100644 Subforms/PKM Editors/RibbMedal.resx diff --git a/PKHeX.csproj b/PKHeX.csproj index 9c03d086f..10110cebb 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -156,12 +156,6 @@ Main.cs - - Form - - - RibbMedal.cs - Form @@ -317,9 +311,6 @@ Main.cs Designer - - RibbMedal.cs - MemoryAmie.cs diff --git a/Subforms/PKM Editors/RibbMedal.Designer.cs b/Subforms/PKM Editors/RibbMedal.Designer.cs deleted file mode 100644 index 69be36b35..000000000 --- a/Subforms/PKM Editors/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.ribbonchampiong6hoenn; - 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.ribbonmastertoughness; - 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.ribbonmastercleverness; - 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.ribbonconteststar; - 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.ribbonmastercuteness; - 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.ribbonmasterbeauty; - 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.ribbonmastercoolness; - 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.ribboncountmemorybattle; - 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.ribboncountmemorycontest; - 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.ribbonchampionworld; - 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.ribbonwishing; - 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.ribbonchampionnational; - 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.ribbonchampionregional; - 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.ribbonchampionbattle; - 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.ribbonsouvenir; - 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.ribbonspecial; - 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.ribbonbirthday; - 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.ribbonevent; - 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.ribbonpremier; - 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.ribbonclassic; - 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.ribbonworld; - 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.ribbonearth; - 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.ribbonnational; - 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.ribboncountry; - 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.ribbonlegend; - 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.ribbonrecord; - 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.ribbonfootprint; - 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.ribbonartist; - 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.ribbongorgeousroyal; - 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.ribbonroyal; - 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.ribbongorgeous; - 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.ribbonsmile; - 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.ribbonsnooze; - 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.ribbonrelax; - 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.ribboncareless; - 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.ribbondowncast; - 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.ribbonshock; - 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.ribbonalert; - 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.ribboneffort; - 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.ribbonbattlerexpert; - 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.ribbonbattlerskillful; - 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.ribbontraining; - 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.ribbonbestfriends; - 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.ribbonchampionsinnoh; - 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.ribbonchampiong3hoenn; - 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.ribbonchampionkalos; - 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/Subforms/PKM Editors/RibbMedal.cs b/Subforms/PKM Editors/RibbMedal.cs deleted file mode 100644 index 668d05d7e..000000000 --- a/Subforms/PKM Editors/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.SuperTrain1_SPA; - TMedal1_3.Checked = pk6.SuperTrain1_HP; - TMedal1_4.Checked = pk6.SuperTrain1_ATK; - TMedal1_5.Checked = pk6.SuperTrain1_SPD; - TMedal1_6.Checked = pk6.SuperTrain1_SPE; - TMedal1_7.Checked = pk6.SuperTrain1_DEF; - - TMedal2_0.Checked = pk6.SuperTrain2_SPA; - TMedal2_1.Checked = pk6.SuperTrain2_HP; - TMedal2_2.Checked = pk6.SuperTrain2_ATK; - TMedal2_3.Checked = pk6.SuperTrain2_SPD; - TMedal2_4.Checked = pk6.SuperTrain2_SPE; - TMedal2_5.Checked = pk6.SuperTrain2_DEF; - TMedal2_6.Checked = pk6.SuperTrain3_SPA; - TMedal2_7.Checked = pk6.SuperTrain3_HP; - - TMedal3_0.Checked = pk6.SuperTrain3_ATK; - TMedal3_1.Checked = pk6.SuperTrain3_SPD; - TMedal3_2.Checked = pk6.SuperTrain3_SPE; - TMedal3_3.Checked = pk6.SuperTrain3_DEF; - TMedal3_4.Checked = pk6.SuperTrain4_1; - TMedal3_5.Checked = pk6.SuperTrain5_1; - TMedal3_6.Checked = pk6.SuperTrain5_2; - TMedal3_7.Checked = pk6.SuperTrain5_3; - - TMedal4_0.Checked = pk6.SuperTrain5_4; - TMedal4_1.Checked = pk6.SuperTrain6_1; - TMedal4_2.Checked = pk6.SuperTrain6_2; - TMedal4_3.Checked = pk6.SuperTrain6_3; - TMedal4_4.Checked = pk6.SuperTrain7_1; - TMedal4_5.Checked = pk6.SuperTrain7_2; - TMedal4_6.Checked = pk6.SuperTrain7_3; - TMedal4_7.Checked = pk6.SuperTrain8_1; - - CHK_D0.Checked = pk6.DistSuperTrain1; - CHK_D1.Checked = pk6.DistSuperTrain2; - CHK_D2.Checked = pk6.DistSuperTrain3; - CHK_D3.Checked = pk6.DistSuperTrain4; - CHK_D4.Checked = pk6.DistSuperTrain5; - CHK_D5.Checked = pk6.DistSuperTrain6; - - Kalos1a_0.Checked = pk6.RibbonChampionKalos; - Kalos1a_1.Checked = pk6.RibbonChampionG3Hoenn; - Kalos1a_2.Checked = pk6.RibbonChampionSinnoh; - Kalos1a_3.Checked = pk6.RibbonBestFriends; - Kalos1a_4.Checked = pk6.RibbonTraining; - Kalos1a_5.Checked = pk6.RibbonBattlerSkillful; - Kalos1a_6.Checked = pk6.RibbonBattlerExpert; - Kalos1a_7.Checked = pk6.RibbonEffort; - - Kalos1b_0.Checked = pk6.RibbonAlert; - Kalos1b_1.Checked = pk6.RibbonShock; - Kalos1b_2.Checked = pk6.RibbonDowncast; - Kalos1b_3.Checked = pk6.RibbonCareless; - Kalos1b_4.Checked = pk6.RibbonRelax; - Kalos1b_5.Checked = pk6.RibbonSnooze; - Kalos1b_6.Checked = pk6.RibbonSmile; - Kalos1b_7.Checked = pk6.RibbonGorgeous; - - Kalos2a_0.Checked = pk6.RibbonRoyal; - Kalos2a_1.Checked = pk6.RibbonGorgeousRoyal; - Kalos2a_2.Checked = pk6.RibbonArtist; - Kalos2a_3.Checked = pk6.RibbonFootprint; - Kalos2a_4.Checked = pk6.RibbonRecord; - Kalos2a_5.Checked = pk6.RibbonLegend; - Kalos2a_6.Checked = pk6.RibbonCountry; - Kalos2a_7.Checked = pk6.RibbonNational; - - Kalos2b_0.Checked = pk6.RibbonEarth; - Kalos2b_1.Checked = pk6.RibbonWorld; - Kalos2b_2.Checked = pk6.RibbonClassic; - Kalos2b_3.Checked = pk6.RibbonPremier; - Kalos2b_4.Checked = pk6.RibbonEvent; - Kalos2b_5.Checked = pk6.RibbonBirthday; - Kalos2b_6.Checked = pk6.RibbonSpecial; - Kalos2b_7.Checked = pk6.RibbonSouvenir; - - Extra1_0.Checked = pk6.RibbonWishing; - Extra1_1.Checked = pk6.RibbonChampionBattle; - Extra1_2.Checked = pk6.RibbonChampionRegional; - Extra1_3.Checked = pk6.RibbonChampionNational; - Extra1_4.Checked = pk6.RibbonChampionWorld; - - // Introduced in ORAS - Extra1_7.Checked = pk6.RibbonChampionG6Hoenn; - - ORAS_0.Checked = pk6.RibbonContestStar; - ORAS_1.Checked = pk6.RibbonMasterCoolness; - ORAS_2.Checked = pk6.RibbonMasterBeauty; - ORAS_3.Checked = pk6.RibbonMasterCuteness; - ORAS_4.Checked = pk6.RibbonMasterCleverness; - ORAS_5.Checked = pk6.RibbonMasterToughness; - - TB_PastContest.Text = pk6.RibbonCountMemoryContest.ToString(); - TB_PastBattle.Text = pk6.RibbonCountMemoryBattle.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.SuperTrain1_SPA = TMedal1_2.Checked; - pk6.SuperTrain1_HP = TMedal1_3.Checked; - pk6.SuperTrain1_ATK = TMedal1_4.Checked; - pk6.SuperTrain1_SPD = TMedal1_5.Checked; - pk6.SuperTrain1_SPE = TMedal1_6.Checked; - pk6.SuperTrain1_DEF = TMedal1_7.Checked; - - pk6.SuperTrain2_SPA = TMedal2_0.Checked; - pk6.SuperTrain2_HP = TMedal2_1.Checked; - pk6.SuperTrain2_ATK = TMedal2_2.Checked; - pk6.SuperTrain2_SPD = TMedal2_3.Checked; - pk6.SuperTrain2_SPE = TMedal2_4.Checked; - pk6.SuperTrain2_DEF = TMedal2_5.Checked; - pk6.SuperTrain3_SPA = TMedal2_6.Checked; - pk6.SuperTrain3_HP = TMedal2_7.Checked; - - pk6.SuperTrain3_ATK = TMedal3_0.Checked; - pk6.SuperTrain3_SPD = TMedal3_1.Checked; - pk6.SuperTrain3_SPE = TMedal3_2.Checked; - pk6.SuperTrain3_DEF = TMedal3_3.Checked; - pk6.SuperTrain4_1 = TMedal3_4.Checked; - pk6.SuperTrain5_1 = TMedal3_5.Checked; - pk6.SuperTrain5_2 = TMedal3_6.Checked; - pk6.SuperTrain5_3 = TMedal3_7.Checked; - - pk6.SuperTrain5_4 = TMedal4_0.Checked; - pk6.SuperTrain6_1 = TMedal4_1.Checked; - pk6.SuperTrain6_2 = TMedal4_2.Checked; - pk6.SuperTrain6_3 = TMedal4_3.Checked; - pk6.SuperTrain7_1 = TMedal4_4.Checked; - pk6.SuperTrain7_2 = TMedal4_5.Checked; - pk6.SuperTrain7_3 = TMedal4_6.Checked; - pk6.SuperTrain8_1 = TMedal4_7.Checked; - - pk6.DistSuperTrain1 = CHK_D0.Checked; - pk6.DistSuperTrain2 = CHK_D1.Checked; - pk6.DistSuperTrain3 = CHK_D2.Checked; - pk6.DistSuperTrain4 = CHK_D3.Checked; - pk6.DistSuperTrain5 = CHK_D4.Checked; - pk6.DistSuperTrain6 = CHK_D5.Checked; - - pk6.RibbonChampionKalos = Kalos1a_0.Checked; - pk6.RibbonChampionG3Hoenn = Kalos1a_1.Checked; - pk6.RibbonChampionSinnoh = Kalos1a_2.Checked; - pk6.RibbonBestFriends = Kalos1a_3.Checked; - pk6.RibbonTraining = Kalos1a_4.Checked; - pk6.RibbonBattlerSkillful = Kalos1a_5.Checked; - pk6.RibbonBattlerExpert = Kalos1a_6.Checked; - pk6.RibbonEffort = Kalos1a_7.Checked; - - pk6.RibbonAlert = Kalos1b_0.Checked; - pk6.RibbonShock = Kalos1b_1.Checked; - pk6.RibbonDowncast = Kalos1b_2.Checked; - pk6.RibbonCareless = Kalos1b_3.Checked; - pk6.RibbonRelax = Kalos1b_4.Checked; - pk6.RibbonSnooze = Kalos1b_5.Checked; - pk6.RibbonSmile = Kalos1b_6.Checked; - pk6.RibbonGorgeous = Kalos1b_7.Checked; - - pk6.RibbonRoyal = Kalos2a_0.Checked; - pk6.RibbonGorgeousRoyal = Kalos2a_1.Checked; - pk6.RibbonArtist = Kalos2a_2.Checked; - pk6.RibbonFootprint = Kalos2a_3.Checked; - pk6.RibbonRecord = Kalos2a_4.Checked; - pk6.RibbonLegend = Kalos2a_5.Checked; - pk6.RibbonCountry = Kalos2a_6.Checked; - pk6.RibbonNational = Kalos2a_7.Checked; - - pk6.RibbonEarth = Kalos2b_0.Checked; - pk6.RibbonWorld = Kalos2b_1.Checked; - pk6.RibbonClassic = Kalos2b_2.Checked; - pk6.RibbonPremier = Kalos2b_3.Checked; - pk6.RibbonEvent = Kalos2b_4.Checked; - pk6.RibbonBirthday = Kalos2b_5.Checked; - pk6.RibbonSpecial = Kalos2b_6.Checked; - pk6.RibbonSouvenir = Kalos2b_7.Checked; - - pk6.RibbonWishing = Extra1_0.Checked; - pk6.RibbonChampionBattle = Extra1_1.Checked; - pk6.RibbonChampionRegional = Extra1_2.Checked; - pk6.RibbonChampionNational = Extra1_3.Checked; - pk6.RibbonChampionWorld = Extra1_4.Checked; - - // Introduced in ORAS - pk6.RibbonChampionG6Hoenn = Extra1_7.Checked; - - pk6.RibbonContestStar = ORAS_0.Checked; - pk6.RibbonMasterCoolness = ORAS_1.Checked; - pk6.RibbonMasterBeauty = ORAS_2.Checked; - pk6.RibbonMasterCuteness = ORAS_3.Checked; - pk6.RibbonMasterCleverness = ORAS_4.Checked; - pk6.RibbonMasterToughness = ORAS_5.Checked; - - pk6.RibbonCountMemoryContest = Util.ToInt32(TB_PastContest.Text); - pk6.RibbonCountMemoryBattle = 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.ribboncountmemorycontest : Properties.Resources.ribboncountmemorycontest2, - (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.ribboncountmemorybattle : Properties.Resources.ribboncountmemorybattle2, - (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/Subforms/PKM Editors/RibbMedal.resx b/Subforms/PKM Editors/RibbMedal.resx deleted file mode 100644 index 2fdd2054b..000000000 --- a/Subforms/PKM Editors/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 From df51269c7e0f847e0981cac5e0cf3ae43fe75517 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 21:31:49 -0700 Subject: [PATCH 058/184] Add gen3 met locations English only for now. --- MainWindow/Main.cs | 29 +++++++--- PKHeX.csproj | 1 + Properties/Resources.Designer.cs | 52 ++++++++++++++++++ Properties/Resources.resx | 3 + Resources/text/gen3/text_rsefrlg_00000_en.txt | Bin 0 -> 6030 bytes 5 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 Resources/text/gen3/text_rsefrlg_00000_en.txt diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 4f90cfd2c..bde787c78 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -141,6 +141,7 @@ public Main() public static string[] specieslist, movelist, itemlist, abilitylist, types, natures, forms, memories, genloc, trainingbags, trainingstage, characteristics, 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 = { }; @@ -866,6 +867,7 @@ private void InitializeStrings() // Past Generation strings g3items = Util.getStringList("ItemsG3", "en"); + metRSEFRLG_00000 = Util.getStringList("rsefrlg_00000", "en"); // Current Generation strings string l = curlanguage; @@ -1763,8 +1765,18 @@ 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[] {254, 255}); + origintrack = "Gen3"; + CB_MetLocation.DisplayMember = "Text"; + CB_MetLocation.ValueMember = "Value"; + CB_MetLocation.DataSource = met_list; + CB_MetLocation.SelectedValue = 0; + } + else if (Version < 24 && origintrack != "Past" && SAV.Generation >= 4) { // Load Past Gen Locations #region B2W2 Met Locations @@ -1830,7 +1842,7 @@ private void updateOriginGame(object sender, EventArgs e) origintrack = "Gen4"; } - if (Version < 0x10 && origintrack != "Gen4") + if (SAV.Generation > 3 && Version < 0x10 && origintrack != "Gen4") { // Load Gen 4 egg locations if Gen 4 Origin. #region HGSS Met Locations @@ -1851,10 +1863,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) diff --git a/PKHeX.csproj b/PKHeX.csproj index 10110cebb..a96200fd6 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -571,6 +571,7 @@ + diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index bd42f3332..f25c54622 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -25686,6 +25686,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 diff --git a/Properties/Resources.resx b/Properties/Resources.resx index d23f57e67..7e1d76c9a 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -6043,4 +6043,7 @@ ..\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 + \ No newline at end of file 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 0000000000000000000000000000000000000000..b58af3a31e22d0301a6e6d0917e65ba16f2856a7 GIT binary patch literal 6030 zcmcJT-%?sh5XR@4r{He&V%-H|OfE%blZ{48+*q}DsECvZEJ}!Plh@mq*xm0p?c~hN z8K~r9%R*rK&vf_neEl8%{pZ+?-IM+%Zs-zz{}(HL+P*F zt@IX>$C6`df7WXu&o^!)y;$1wz9wFN<*j4sCm#j-O%=ydK5i51GfA%H_tyKK$bOW` zhq5EuD{qbTz-RcZT>4rcNIrCPzcZOu(i6#+ihL|Bsu9c1C3%#kMLbJny%%2#*`!v~ zcH*8D@l1YG*@@O3^>^c~=84C?WSqmy$2pOg$3%YQy)Cr%n<_-D@RG(mQ^aK2bS?L* zUJZ9HfALzou+}N8y(+Bj7S>)D*7gc(ZwhN~YimTE$J{F9(Q@@XTCSc)%hmH}xq2Qg zSI?v6>Up$WJ&%^F=g}_Y(JtiCF67ZJ9`iQUYF`|7r`UM1&kb;I{+zy2ZZy&uwkvr&8V%_WC$V?kZJv!LZr zk`t}$_*;CZ8~>on422z_)J}qu`YQF^k&mbAt7j-4@Dw}`THE^ci(aW- zPa1f8(tbhP{GI80j-!{-oe60k6;r^&3Za+sLtGO{_l1*&N){{gq3_6QF6l>Ut+bNk zEfrwbp>`qiFe%t?orGRtXV7`5*r;%*R1{!!68eP&94nW6rDX;5jV zibW7)3+=GJ`!?GV(I@SHt<3QHtUW>Efg%d0V>LgK7HDo0^Sv@+T7m72Z&5a7$wWMr z=2)6z9~oT-vfn8KVr{zAx+gs(?9Bv4v!VLdSBa?YtN6Q*gjk3ZE2dS$mDejfs|NEE zy94bsP%mHk{nytpolRf^b?f`dxzK+yvo4}0SCYjU#-|7`p%)g)l1eXqjfi|-m4Q19 z^&U75k>P798|#r!;R|_KO8?%+asN^~;|APCq8mz1hvAKz#lF;)-KloN*Ui{O*wI)O z9bx=vEIUrD;vw9mN0W{}y?cT-t$&)F?L4Xfvk_8Q42y@P-9fnNnYyOmuYOWXyo{2Vxw&b|9v9Tar! z^r#IT5?jC+z=I#NNqyv8qLb~BbBLTj#k!R#PkEs!m z4LqcCs&0DJ_g(k1I22u0@s97c-IJ{`g+qT2xU)QE{iK**d?EBXSY%jJ zpJ&|dxw63bOxc4x>CIu<8p?$ltz#AOzPXoUe~U-D$JCU15fx|?&wrZ%JR5@jDLR0} zxmUv~?lhB*_Y~#AgvM^=gd%=#?-@we!ZgIbnNE&&h95|FGcF?`^5+O9mM@(C_Mh3SAxR`AKGY&pB8m^P{SAngMULeP5~=8y7Br=wQjgW>4B}r5Z~z=C)5yj@(T-RA9%d+G1E1k-1R$f z&-Q)IiJcR*-;JySaN9WR^c+%#OK-2cgMoLa_8$~0-PF~-+)*$*?$vyErW_p?7+}h; z`Ne52FHA!6PNkQ!cG11bFF_-CUprjZlGOfdbjD9 zMpbnWPl%KGqy3)PET zXuLi6U+1UdJ@#wiZpM1jT~lp1TFQ|&Yrpl{=~G%27pHH}nVavU)p;F8nKZ{|P9NlH u{11Oy@;w#j8!7$=)xN1yqWb*mKy|h}?s0Or>P66x*~9O`@FqLaZTBD20^{re literal 0 HcmV?d00001 From 2c5de675102376d511bd29069119832b495a3d00 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 16 Jul 2016 21:42:03 -0700 Subject: [PATCH 059/184] Tweak gen3 ribbon editing Contest Ribbons now have dynamic pictures. --- Subforms/PKM Editors/RibbonEditor.cs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/Subforms/PKM Editors/RibbonEditor.cs b/Subforms/PKM Editors/RibbonEditor.cs index fd3b9bbdb..ba7b1b5f7 100644 --- a/Subforms/PKM Editors/RibbonEditor.cs +++ b/Subforms/PKM Editors/RibbonEditor.cs @@ -68,9 +68,9 @@ private void populateRibbons() 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.ToLower()); + var img = Properties.Resources.ResourceManager.GetObject(rib.Name.Replace("CountG3", "G3").ToLower()); if (img != null) - pb.BackgroundImage = (Image)img; + pb.BackgroundImage = (Bitmap)img; if (img == null) return; @@ -113,10 +113,21 @@ private void addRibbonChoice(RibbonInfo rib) { rib.RibbonCount = (int)nud.Value; FLP_Ribbons.Controls[PrefixPB + rib.Name].Visible = rib.RibbonCount > 0; - if (nud.Maximum == nud.Value && nud.Maximum > 4) - FLP_Ribbons.Controls[PrefixPB + rib.Name].BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(rib.Name.ToLower() +"2"); + 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 = (Image)Properties.Resources.ResourceManager.GetObject(rib.Name.ToLower()); + 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); From 9e7b56bead2b1a24eed8ea011f8202c228aa651d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 09:32:34 -0700 Subject: [PATCH 060/184] Fix super training level4 not being disabled Thanks @Tsunamical ! Resolves #133 --- Subforms/PKM Editors/SuperTrainingEditor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Subforms/PKM Editors/SuperTrainingEditor.cs b/Subforms/PKM Editors/SuperTrainingEditor.cs index bb00c8d91..a9749e1c1 100644 --- a/Subforms/PKM Editors/SuperTrainingEditor.cs +++ b/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -145,7 +145,7 @@ private void B_None_Click(object sender, EventArgs e) } 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)) + 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) From 641f1f61f6211f1a9c947e800d213cd9d1df6d57 Mon Sep 17 00:00:00 2001 From: Tyler Dunn Date: Sun, 17 Jul 2016 13:06:52 -0400 Subject: [PATCH 061/184] Additional Code Style Fixes --- MainWindow/Main.cs | 14 +++++++------- PKM/PK3.cs | 2 +- PKM/PK4.cs | 2 +- PKM/PK5.cs | 2 +- PKM/PK6.cs | 2 +- Subforms/PKM Editors/SuperTrainingEditor.cs | 4 ++-- Subforms/SAV_Database.cs | 6 +++--- Subforms/Save Editors/Gen6/SAV_HallOfFame.cs | 2 +- Util/DataUtil.cs | 4 ++-- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index bde787c78..c3d92c579 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -462,9 +462,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."); } @@ -472,7 +472,7 @@ 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."); } @@ -480,7 +480,7 @@ private void clickOpenSDFFolder(object sender, EventArgs e) { string path; if (Util.get3DSLocation() != null && Directory.Exists(path = Util.GetSDFLocation())) - Process.Start("explorer.exe", @path); + Process.Start("explorer.exe", path); else Util.Alert("Can't find the SaveDataFiler folder."); } @@ -489,7 +489,7 @@ private void clickOpenSDBFolder(object sender, EventArgs e) string path3DS = Util.get3DSLocation(); string path; if (path3DS != null && Directory.Exists(path = Path.Combine(Path.GetPathRoot(path3DS), "SaveDataBackup"))) - Process.Start("explorer.exe", @path); + Process.Start("explorer.exe", path); else Util.Alert("Can't find the SaveDataBackup folder."); } @@ -1941,7 +1941,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; @@ -2171,7 +2171,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*/; diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 51cbed8b9..65670fed4 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) diff --git a/PKM/PK4.cs b/PKM/PK4.cs index b2711febb..cf5307fb3 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) diff --git a/PKM/PK5.cs b/PKM/PK5.cs index 267bce372..c844f17dd 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) diff --git a/PKM/PK6.cs b/PKM/PK6.cs index 83d2e711f..a3add1676 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) diff --git a/Subforms/PKM Editors/SuperTrainingEditor.cs b/Subforms/PKM Editors/SuperTrainingEditor.cs index a9749e1c1..a04fc5918 100644 --- a/Subforms/PKM Editors/SuperTrainingEditor.cs +++ b/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -28,7 +28,7 @@ public SuperTrainingEditor() if (pkm is PK6) { - PK6 pk6 = (PK6)pkm; + PK6 pk6 = (PK6) pkm; CHK_Secret.Checked = pk6.SecretSuperTraining; if (!CHK_Secret.Checked) // force update to disable checkboxes CHK_Secret_CheckedChanged(null, null); @@ -107,7 +107,7 @@ private void save() if (pkm is PK6) { - PK6 pk6 = (PK6)pkm; + PK6 pk6 = (PK6) pkm; pk6.SecretSuperTraining = CHK_Secret.Checked; pk6.TrainingBag = CB_Bag.SelectedIndex; pk6.TrainingBagHits = (int)NUD_BagHits.Value; diff --git a/Subforms/SAV_Database.cs b/Subforms/SAV_Database.cs index 30ad3f6fe..7b274db36 100644 --- a/Subforms/SAV_Database.cs +++ b/Subforms/SAV_Database.cs @@ -399,7 +399,7 @@ private void prepareDBForSearch() 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) { @@ -543,9 +543,9 @@ 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); var results = res.ToArray(); if (results.Length == 0) diff --git a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index f14d043d3..9176c646f 100644 --- a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -447,7 +447,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/Util/DataUtil.cs b/Util/DataUtil.cs index 0dbf98997..9cfa97578 100644 --- a/Util/DataUtil.cs +++ b/Util/DataUtil.cs @@ -28,9 +28,9 @@ internal static string[] getNulledStringArray(string[] SimpleStringList) { try { - string[] newlist = new string[Util.ToInt32(SimpleStringList[SimpleStringList.Length - 1].Split(',')[0]) + 1]; + string[] newlist = new string[ToInt32(SimpleStringList[SimpleStringList.Length - 1].Split(',')[0]) + 1]; for (int i = 1; i < SimpleStringList.Length; i++) - newlist[Util.ToInt32(SimpleStringList[i].Split(',')[0])] = SimpleStringList[i].Split(',')[1]; + newlist[ToInt32(SimpleStringList[i].Split(',')[0])] = SimpleStringList[i].Split(',')[1]; return newlist; } catch { return null; } From ce3f5f24d86d60251c801f4a21a118f4b021364f Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 11:38:19 -0700 Subject: [PATCH 062/184] Add form translation for Ribbons/Medals --- Resources/text/de/lang_de.txt | 235 +++++++++++------- Resources/text/en/lang_en.txt | 251 ++++++++++++-------- Resources/text/es/lang_es.txt | 234 +++++++++++------- Resources/text/fr/lang_fr.txt | 235 +++++++++++------- Resources/text/it/lang_it.txt | 243 +++++++++++-------- Resources/text/ja/lang_ja.txt | 235 +++++++++++------- Resources/text/ko/lang_ko.txt | 243 +++++++++++-------- Resources/text/other/lang_pt.txt | 243 +++++++++++-------- Resources/text/zh/lang_zh.txt | 243 +++++++++++-------- Subforms/PKM Editors/RibbonEditor.cs | 1 + Subforms/PKM Editors/SuperTrainingEditor.cs | 1 + 11 files changed, 1293 insertions(+), 871 deletions(-) diff --git a/Resources/text/de/lang_de.txt b/Resources/text/de/lang_de.txt index 099319046..583b19513 100644 --- a/Resources/text/de/lang_de.txt +++ b/Resources/text/de/lang_de.txt @@ -170,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/en/lang_en.txt b/Resources/text/en/lang_en.txt index 742ea201d..8e0027e2b 100644 --- a/Resources/text/en/lang_en.txt +++ b/Resources/text/en/lang_en.txt @@ -172,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: diff --git a/Resources/text/es/lang_es.txt b/Resources/text/es/lang_es.txt index c7a6f60f8..da2424e42 100644 --- a/Resources/text/es/lang_es.txt +++ b/Resources/text/es/lang_es.txt @@ -172,105 +172,157 @@ 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 = 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--------------------- +----------------------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 = 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_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: diff --git a/Resources/text/fr/lang_fr.txt b/Resources/text/fr/lang_fr.txt index 141e948f7..3eb8c9291 100644 --- a/Resources/text/fr/lang_fr.txt +++ b/Resources/text/fr/lang_fr.txt @@ -171,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/it/lang_it.txt b/Resources/text/it/lang_it.txt index dd467727b..b819c06a5 100644 --- a/Resources/text/it/lang_it.txt +++ b/Resources/text/it/lang_it.txt @@ -172,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: diff --git a/Resources/text/ja/lang_ja.txt b/Resources/text/ja/lang_ja.txt index d0b51ef7d..3b4a52354 100644 --- a/Resources/text/ja/lang_ja.txt +++ b/Resources/text/ja/lang_ja.txt @@ -171,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/ko/lang_ko.txt b/Resources/text/ko/lang_ko.txt index e6cb6abba..ae0c6f1c7 100644 --- a/Resources/text/ko/lang_ko.txt +++ b/Resources/text/ko/lang_ko.txt @@ -172,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: diff --git a/Resources/text/other/lang_pt.txt b/Resources/text/other/lang_pt.txt index 3d32d1889..f1983449a 100644 --- a/Resources/text/other/lang_pt.txt +++ b/Resources/text/other/lang_pt.txt @@ -172,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: diff --git a/Resources/text/zh/lang_zh.txt b/Resources/text/zh/lang_zh.txt index 29b235e86..3e1085fad 100644 --- a/Resources/text/zh/lang_zh.txt +++ b/Resources/text/zh/lang_zh.txt @@ -172,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/Subforms/PKM Editors/RibbonEditor.cs b/Subforms/PKM Editors/RibbonEditor.cs index ba7b1b5f7..18591b473 100644 --- a/Subforms/PKM Editors/RibbonEditor.cs +++ b/Subforms/PKM Editors/RibbonEditor.cs @@ -17,6 +17,7 @@ public RibbonEditor() // Updating a Control display with autosized elements on every row addition is cpu intensive. Disable layout updates while populating. TLP_Ribbons.SuspendLayout(); populateRibbons(); + Util.TranslateInterface(this, Main.curlanguage); TLP_Ribbons.ResumeLayout(); } diff --git a/Subforms/PKM Editors/SuperTrainingEditor.cs b/Subforms/PKM Editors/SuperTrainingEditor.cs index a04fc5918..af930afb1 100644 --- a/Subforms/PKM Editors/SuperTrainingEditor.cs +++ b/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -18,6 +18,7 @@ public SuperTrainingEditor() TLP_DistSuperTrain.SuspendLayout(); populateRegimens("SuperTrain", TLP_SuperTrain, reglist); populateRegimens("DistSuperTrain", TLP_DistSuperTrain, distlist); + Util.TranslateInterface(this, Main.curlanguage); TLP_SuperTrain.ResumeLayout(); TLP_DistSuperTrain.ResumeLayout(); From 315a079152e5c3c1766ab6010879a3d2969b4c39 Mon Sep 17 00:00:00 2001 From: evandixon Date: Sun, 17 Jul 2016 14:54:33 -0500 Subject: [PATCH 063/184] Made internal PKHeX.Util.getStringList functions public --- Util/DataUtil.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/DataUtil.cs b/Util/DataUtil.cs index 9cfa97578..d0788f954 100644 --- a/Util/DataUtil.cs +++ b/Util/DataUtil.cs @@ -6,7 +6,7 @@ namespace PKHeX { public partial class Util { - internal static string[] getStringList(string f) + 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]; @@ -15,7 +15,7 @@ internal static string[] getStringList(string f) rawlist[i] = rawlist[i].Trim(); return rawlist; } - internal static string[] getStringList(string f, string l) + 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]; From 28547b00f7ada8aed7857ab952b4095f5d8a7ddb Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 16:01:06 -0700 Subject: [PATCH 064/184] Relocate g6 integrity checks Move into the object. --- Saves/SAV6.cs | 35 ++++++++++++- Saves/SaveUtil.cs | 128 ---------------------------------------------- 2 files changed, 33 insertions(+), 130 deletions(-) diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index 65a472183..da76600a5 100644 --- a/Saves/SAV6.cs +++ b/Saves/SAV6.cs @@ -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); } diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index 12d8f07af..34a84e58f 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -212,134 +212,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 From ed7351b1173b679ab1f79258edd3cabb8dc8b57b Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 17:03:56 -0700 Subject: [PATCH 065/184] Remove unused resource references Old and unpurged. --- PKHeX.csproj | 5 ----- 1 file changed, 5 deletions(-) diff --git a/PKHeX.csproj b/PKHeX.csproj index a96200fd6..6faa831f9 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -413,14 +413,11 @@ - - - @@ -738,7 +735,6 @@ - @@ -836,7 +832,6 @@ - From d6d2503051a30c27cf4311a82c96eead52fd5ab9 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 17:05:26 -0700 Subject: [PATCH 066/184] Fix marking setters Markings[x] didn't prompt the MarkByte to update, just force each bit manually like ribbons. --- PKM/PKM.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PKM/PKM.cs b/PKM/PKM.cs index 29ac20380..334cfbdca 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -154,12 +154,12 @@ public byte[] Write() 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 Circle { get { return (MarkByte & (1 << 0)) == 1 << 0; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool Triangle { get { return (MarkByte & (1 << 1)) == 1 << 1; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool Square { get { return (MarkByte & (1 << 2)) == 1 << 2; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool Heart { get { return (MarkByte & (1 << 3)) == 1 << 3; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool Star { get { return (MarkByte & (1 << 4)) == 1 << 4; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + public bool Diamond { 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); From 760468fcaef2fd8fa9b133594807fdaf395d4eec Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 17:06:50 -0700 Subject: [PATCH 067/184] Add more user friendly command building Thanks \ for the suggestion; user has to enter in the value (true/false, integer). Provides a list of properties for a pkm file that have setters (CanWrite). --- Subforms/PKM Editors/BatchEditor.Designer.cs | 92 +++++++++++++++++--- Subforms/PKM Editors/BatchEditor.cs | 38 ++++++++ Util/ReflectUtil.cs | 4 + 3 files changed, 123 insertions(+), 11 deletions(-) diff --git a/Subforms/PKM Editors/BatchEditor.Designer.cs b/Subforms/PKM Editors/BatchEditor.Designer.cs index 12b69494b..24ba24601 100644 --- a/Subforms/PKM Editors/BatchEditor.Designer.cs +++ b/Subforms/PKM Editors/BatchEditor.Designer.cs @@ -36,6 +36,10 @@ private void InitializeComponent() 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(); // @@ -78,17 +82,18 @@ private void InitializeComponent() 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(260, 24); + 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.Left | System.Windows.Forms.AnchorStyles.Right))); + 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(140, 20); + this.TB_Folder.Size = new System.Drawing.Size(250, 20); this.TB_Folder.TabIndex = 4; this.TB_Folder.Visible = false; // @@ -99,16 +104,16 @@ private void InitializeComponent() | 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(260, 181); + this.RTB_Instructions.Size = new System.Drawing.Size(370, 157); this.RTB_Instructions.TabIndex = 5; - this.RTB_Instructions.Text = "!HeldItem=0\n=Gender=2\n.Species=1"; + this.RTB_Instructions.Text = ""; // // B_Go // - this.B_Go.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.B_Go.Location = new System.Drawing.Point(197, 39); + 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(75, 23); + 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; @@ -116,17 +121,77 @@ private void InitializeComponent() // // PB_Show // - this.PB_Show.Location = new System.Drawing.Point(12, 41); + 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(180, 18); + 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.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + 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(284, 261); + 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); @@ -134,6 +199,7 @@ private void InitializeComponent() 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"; @@ -152,5 +218,9 @@ private void InitializeComponent() 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 index a05ed20ae..b105f1d52 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -14,8 +14,17 @@ public BatchEditor() InitializeComponent(); DragDrop += tabMain_DragDrop; DragEnter += tabMain_DragEnter; + CB_Format.SelectedIndex = CB_Require.SelectedIndex = 0; } + private int currentFormat = -1; + private static readonly string[] pk6 = ReflectUtil.getPropertiesCanWrite(typeof(PK6)).OrderBy(i=>i).ToArray(); + private static readonly string[] pk5 = ReflectUtil.getPropertiesCanWrite(typeof(PK5)).OrderBy(i=>i).ToArray(); + private static readonly string[] pk4 = ReflectUtil.getPropertiesCanWrite(typeof(PK4)).OrderBy(i=>i).ToArray(); + private static readonly string[] pk3 = ReflectUtil.getPropertiesCanWrite(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) { @@ -208,5 +217,34 @@ private static bool ProcessPKM(PKM PKM, IEnumerable Filters, } return true; } + + private void B_Add_Click(object sender, EventArgs e) + { + char[] prefix = {'.', '=', '!'}; + string s = prefix[CB_Require.SelectedIndex] + CB_Property.Text + "="; + 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/Util/ReflectUtil.cs b/Util/ReflectUtil.cs index 31c99e0b0..e0d843d7f 100644 --- a/Util/ReflectUtil.cs +++ b/Util/ReflectUtil.cs @@ -30,5 +30,9 @@ internal static IEnumerable getPropertiesStartWithPrefix(Type type, stri .Where(p => p.Name.StartsWith(prefix)) .Select(p => p.Name); } + internal static IEnumerable getPropertiesCanWrite(Type type) + { + return type.GetProperties().Where(p => p.CanWrite).Select(p => p.Name); + } } } From 07e4483ef78f75053aa4b9750ac85a3ac769fc66 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 17:07:53 -0700 Subject: [PATCH 068/184] Prefix marking property name Alphabetically sorting properties now has them grouped together (for batch editor). --- PKM/PK3.cs | 8 ++++---- PKM/PK5.cs | 12 ++++++------ PKM/PKM.cs | 12 ++++++------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 65670fed4..a2fcb7e2e 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -197,10 +197,10 @@ public PK4 convertToPK4() EXP = IsEgg ? PKX.getEXP(5, Species) : EXP, IsEgg = false, OT_Friendship = 40, - Circle = Circle, - Square = Square, - Triangle = Triangle, - Heart = Heart, + MarkCircle = MarkCircle, + MarkSquare = MarkSquare, + MarkTriangle = MarkTriangle, + MarkHeart = MarkHeart, Language = Language, EV_HP = EV_HP, EV_ATK = EV_ATK, diff --git a/PKM/PK5.cs b/PKM/PK5.cs index c844f17dd..ae9edbed6 100644 --- a/PKM/PK5.cs +++ b/PKM/PK5.cs @@ -339,12 +339,12 @@ public PK6 convertToPK6() 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; diff --git a/PKM/PKM.cs b/PKM/PKM.cs index 334cfbdca..977f13c3a 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -154,12 +154,12 @@ public byte[] Write() 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 (MarkByte & (1 << 0)) == 1 << 0; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool Triangle { get { return (MarkByte & (1 << 1)) == 1 << 1; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool Square { get { return (MarkByte & (1 << 2)) == 1 << 2; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool Heart { get { return (MarkByte & (1 << 3)) == 1 << 3; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool Star { get { return (MarkByte & (1 << 4)) == 1 << 4; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } - public bool Diamond { get { return (MarkByte & (1 << 5)) == 1 << 5; } set { MarkByte = (byte)(MarkByte & ~(1 << 0) | (value ? 1 << 0 : 0)); } } + 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); From 6852c6965bdbc534b230135789c30e02e1952e7a Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 22:36:17 -0700 Subject: [PATCH 069/184] Add & Split out PersonalTable Larger object that will eventually handle more complex logic like form-stat finding and stat calculations. --- Legality/Checks.cs | 6 +- Legality/Core.cs | 20 ++-- PKM/PKX.cs | 2 +- PersonalInfo/PersonalInfo.cs | 67 +++++++------- PersonalInfo/PersonalInfoB2W2.cs | 3 +- PersonalInfo/PersonalInfoBW.cs | 3 +- PersonalInfo/PersonalInfoG3.cs | 3 +- PersonalInfo/PersonalInfoG4.cs | 3 +- PersonalInfo/PersonalInfoORAS.cs | 3 +- PersonalInfo/PersonalInfoXY.cs | 3 +- PersonalInfo/PersonalTable.cs | 97 ++++++++++++++++++++ Saves/SAV3.cs | 6 +- Saves/SAV4.cs | 6 +- Saves/SAV5.cs | 4 +- Saves/SAV6.cs | 2 +- Saves/SaveFile.cs | 2 +- Subforms/Save Editors/Gen6/SAV_HallOfFame.cs | 2 +- Subforms/Save Editors/Gen6/SAV_SecretBase.cs | 4 +- 18 files changed, 172 insertions(+), 64 deletions(-) create mode 100644 PersonalInfo/PersonalTable.cs diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 4d55eda33..a750cd0fe 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -30,7 +30,7 @@ public partial class LegalityAnalysis { private LegalityCheck verifyGender() { - if (PersonalInfo.AO[pk6.Species].Gender == 255 && pk6.Gender != 2) + 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(); @@ -431,8 +431,8 @@ private LegalityCheck verifyRibbons() } private LegalityCheck verifyAbility() { - int index = PersonalInfo.AO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); - int[] abilities = PersonalInfo.AO[index].Abilities; + int index = PersonalTable.AO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); + int[] abilities = PersonalTable.AO[index].Abilities; int abilval = Array.IndexOf(abilities, pk6.Ability); if (abilval < 0) return new LegalityCheck(Severity.Invalid, "Ability is not valid for species/form."); diff --git a/Legality/Core.cs b/Legality/Core.cs index 5075ce9d3..9bc6ed5bc 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -405,8 +405,8 @@ private static IEnumerable getDexNavAreas(PK6 pk6) } private static IEnumerable getLVLMoves(int species, int lvl, int formnum) { - int ind_XY = PersonalInfo.XY[species].FormeIndex(species, formnum); - int ind_AO = PersonalInfo.AO[species].FormeIndex(species, formnum); + int ind_XY = PersonalTable.XY[species].FormeIndex(species, formnum); + int ind_AO = PersonalTable.AO[species].FormeIndex(species, formnum); return LevelUpXY[ind_XY].getMoves(lvl).Concat(LevelUpAO[ind_AO].getMoves(lvl)); } private static IEnumerable getEncounterSlots(PK6 pk6) @@ -543,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 = PersonalInfo.AO[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); @@ -568,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 = PersonalInfo.XY[species].FormeIndex(species, form); - PersonalInfo pi = PersonalInfo.XY[index]; + int index = PersonalTable.XY[species].FormeIndex(species, form); + PersonalInfo pi = PersonalTable.XY[index]; if (LVL) r.AddRange(LevelUpXY[index].getMoves(lvl)); if (Tutor) r.AddRange(getTutorMoves(species, form, ORASTutors)); @@ -577,8 +577,8 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR } if (Version < 0 || Version == 1) { - int index = PersonalInfo.AO[species].FormeIndex(species, form); - PersonalInfo pi = PersonalInfo.AO[index]; + int index = PersonalTable.AO[species].FormeIndex(species, form); + PersonalInfo pi = PersonalTable.AO[index]; if (LVL) r.AddRange(LevelUpAO[index].getMoves(lvl)); if (Tutor) r.AddRange(getTutorMoves(species, form, ORASTutors)); @@ -588,13 +588,13 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR } private static IEnumerable getEggMoves(int species, int formnum) { - int ind_XY = PersonalInfo.XY[species].FormeIndex(species, formnum); - int ind_AO = PersonalInfo.AO[species].FormeIndex(species, formnum); + int ind_XY = PersonalTable.XY[species].FormeIndex(species, formnum); + int ind_AO = PersonalTable.AO[species].FormeIndex(species, formnum); return EggMoveAO[ind_AO].Moves.Concat(EggMoveXY[ind_XY].Moves); } private static IEnumerable getTutorMoves(int species, int formnum, bool ORASTutors) { - PersonalInfoORAS pkAO = (PersonalInfoORAS) PersonalInfo.AO[PersonalInfo.AO[species].FormeIndex(species, formnum)]; + PersonalInfoORAS pkAO = (PersonalInfoORAS)PersonalTable.AO[PersonalTable.AO[species].FormeIndex(species, formnum)]; // Type Tutor List moves = TypeTutor.Where((t, i) => pkAO.TypeTutors[i]).ToList(); diff --git a/PKM/PKX.cs b/PKM/PKX.cs index c59fd541f..6b37139a8 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -181,7 +181,7 @@ internal static bool getIsNicknamed(int species, string nick) try { return SpeciesLang.All(list => list[species].ToUpper() != nick); } catch { return false; } } - internal static PersonalInfo[] Personal = PersonalInfo.AO; + internal static PersonalTable Personal = PersonalTable.AO; // Stat Fetching internal static int getMovePP(int move, int ppup) diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs index 290125dfd..de085b87b 100644 --- a/PersonalInfo/PersonalInfo.cs +++ b/PersonalInfo/PersonalInfo.cs @@ -4,25 +4,6 @@ namespace PKHeX { public abstract class PersonalInfo { - internal static readonly PersonalInfo[] AO = getArray(Properties.Resources.personal_ao, GameVersion.ORAS); - internal static readonly PersonalInfo[] XY = getArray(Properties.Resources.personal_xy, GameVersion.XY); - internal static readonly PersonalInfo[] B2W2 = getArray(Properties.Resources.personal_b2w2, GameVersion.B2W2); - internal static readonly PersonalInfo[] BW = getArray(Properties.Resources.personal_bw, GameVersion.BW); - internal static readonly PersonalInfo[] HGSS = getArray(Properties.Resources.personal_hgss, GameVersion.HGSS); - internal static readonly PersonalInfo[] Pt = getArray(Properties.Resources.personal_pt, GameVersion.Pt); - internal static readonly PersonalInfo[] DP = getArray(Properties.Resources.personal_dp, GameVersion.DP); - internal static readonly PersonalInfo[] LG = getArray(Properties.Resources.personal_lg, GameVersion.LG); - internal static readonly PersonalInfo[] FR = getArray(Properties.Resources.personal_fr, GameVersion.FR); - internal static readonly PersonalInfo[] E = getArray(Properties.Resources.personal_e, GameVersion.E); - internal static readonly PersonalInfo[] RS = getArray(Properties.Resources.personal_rs, GameVersion.RS); - - protected const int SIZE_G3 = 0x1C; - protected const int SIZE_G4 = 0x2C; - protected const int SIZE_BW = 0x3C; - protected const int SIZE_B2W2 = 0x4C; - protected const int SIZE_XY = 0x40; - protected const int SIZE_AO = 0x50; - protected byte[] Data; public abstract byte[] Write(); public abstract int HP { get; set; } @@ -110,7 +91,25 @@ public int RandomGender public int BST => HP + ATK + DEF + SPE + SPA + SPD; // Array Retrieval - internal static PersonalInfo[] getArray(byte[] data, GameVersion format) + } + + 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 readonly PersonalInfo[] Table; + + private PersonalTable(byte[] data, GameVersion format) { int size = 0; switch (format) @@ -118,18 +117,18 @@ internal static PersonalInfo[] getArray(byte[] data, GameVersion format) case GameVersion.RS: case GameVersion.E: case GameVersion.FR: - case GameVersion.LG: size = SIZE_G3; break; + case GameVersion.LG: size = PersonalInfoG3.SIZE; break; case GameVersion.DP: case GameVersion.Pt: - case GameVersion.HGSS: size = SIZE_G4; break; - case GameVersion.BW: size = SIZE_BW; break; - case GameVersion.B2W2: size = SIZE_B2W2; break; - case GameVersion.XY: size = SIZE_XY; break; - case GameVersion.ORAS: size = SIZE_AO; break; + 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) - return null; + { Table = null; return; } byte[][] entries = splitBytes(data, size); PersonalInfo[] d = new PersonalInfo[data.Length / size]; @@ -167,15 +166,21 @@ internal static PersonalInfo[] getArray(byte[] data, GameVersion format) d[i] = new PersonalInfoORAS(entries[i]); break; } - return d; + Table = d; } + public PersonalInfo this[int index] + { + get { return Table[index]; } + set { Table[index] = value; } + } + private static byte[][] splitBytes(byte[] data, int size) { - byte[][] r = new byte[data.Length/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); + r[i / size] = new byte[size]; + Array.Copy(data, i, r[i / size], 0, size); } return r; } diff --git a/PersonalInfo/PersonalInfoB2W2.cs b/PersonalInfo/PersonalInfoB2W2.cs index a080f2920..c3659ac0c 100644 --- a/PersonalInfo/PersonalInfoB2W2.cs +++ b/PersonalInfo/PersonalInfoB2W2.cs @@ -4,9 +4,10 @@ namespace PKHeX { public class PersonalInfoB2W2 : PersonalInfoBW { + public new const int SIZE = 0x4C; public PersonalInfoB2W2(byte[] data) { - if (data.Length != SIZE_B2W2) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoBW.cs b/PersonalInfo/PersonalInfoBW.cs index a14469263..7f26bb365 100644 --- a/PersonalInfo/PersonalInfoBW.cs +++ b/PersonalInfo/PersonalInfoBW.cs @@ -6,9 +6,10 @@ namespace PKHeX public class PersonalInfoBW : PersonalInfo { protected PersonalInfoBW() { } + public const int SIZE = 0x3C; public PersonalInfoBW(byte[] data) { - if (data.Length != SIZE_BW) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoG3.cs b/PersonalInfo/PersonalInfoG3.cs index fdcdd4980..04f8248b4 100644 --- a/PersonalInfo/PersonalInfoG3.cs +++ b/PersonalInfo/PersonalInfoG3.cs @@ -5,9 +5,10 @@ namespace PKHeX public class PersonalInfoG3 : PersonalInfo { protected PersonalInfoG3() { } + public const int SIZE = 0x1C; public PersonalInfoG3(byte[] data) { - if (data.Length != SIZE_G3) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoG4.cs b/PersonalInfo/PersonalInfoG4.cs index 585690bec..14dff8259 100644 --- a/PersonalInfo/PersonalInfoG4.cs +++ b/PersonalInfo/PersonalInfoG4.cs @@ -4,9 +4,10 @@ namespace PKHeX { public class PersonalInfoG4 : PersonalInfoG3 { + public new const int SIZE = 0x2C; public PersonalInfoG4(byte[] data) { - if (data.Length != SIZE_G4) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoORAS.cs b/PersonalInfo/PersonalInfoORAS.cs index b71d8b218..8d398f681 100644 --- a/PersonalInfo/PersonalInfoORAS.cs +++ b/PersonalInfo/PersonalInfoORAS.cs @@ -4,9 +4,10 @@ namespace PKHeX { public class PersonalInfoORAS : PersonalInfoXY { + public new const int SIZE = 0x50; public PersonalInfoORAS(byte[] data) { - if (data.Length != SIZE_AO) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoXY.cs b/PersonalInfo/PersonalInfoXY.cs index b662245d0..5ddc07fc1 100644 --- a/PersonalInfo/PersonalInfoXY.cs +++ b/PersonalInfo/PersonalInfoXY.cs @@ -5,9 +5,10 @@ namespace PKHeX public class PersonalInfoXY : PersonalInfoBW { protected PersonalInfoXY() { } // For ORAS + public new const int SIZE = 0x40; public PersonalInfoXY(byte[] data) { - if (data.Length != SIZE_XY) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalTable.cs b/PersonalInfo/PersonalTable.cs new file mode 100644 index 000000000..3f7cd7fc1 --- /dev/null +++ b/PersonalInfo/PersonalTable.cs @@ -0,0 +1,97 @@ +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; } + } + } +} diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index fb49f35c4..c389e959c 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -77,7 +77,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = BlockOfs[1] + 0x0600; OFS_PouchTMHM = BlockOfs[1] + 0x0640; OFS_PouchBerry = BlockOfs[1] + 0x0740; - Personal = PersonalInfo.RS; + Personal = PersonalTable.RS; break; case GameVersion.FRLG: LegalKeyItems = Legal.Pouch_Key_FRLG; @@ -86,7 +86,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = BlockOfs[1] + 0x0430; OFS_PouchTMHM = BlockOfs[1] + 0x0464; OFS_PouchBerry = BlockOfs[1] + 0x054C; - Personal = PersonalInfo.FR; // todo split FR & LG + Personal = PersonalTable.FR; // todo split FR & LG break; case GameVersion.E: LegalKeyItems = Legal.Pouch_Key_E; @@ -95,7 +95,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = BlockOfs[1] + 0x0650; OFS_PouchTMHM = BlockOfs[1] + 0x0690; OFS_PouchBerry = BlockOfs[1] + 0x0790; - Personal = PersonalInfo.E; + Personal = PersonalTable.E; break; } LegalItems = Legal.Pouch_Items_RS; diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index d9d2b07e0..47ea8a285 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -28,9 +28,9 @@ public SAV4(byte[] data = null, GameVersion versionOverride = GameVersion.Any) switch (Version) { - case GameVersion.DP: Personal = PersonalInfo.DP; break; - case GameVersion.Pt: Personal = PersonalInfo.Pt; break; - case GameVersion.HGSS: Personal = PersonalInfo.HGSS; break; + case GameVersion.DP: Personal = PersonalTable.DP; break; + case GameVersion.Pt: Personal = PersonalTable.Pt; break; + case GameVersion.HGSS: Personal = PersonalTable.HGSS; break; } if (!Exportable) diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index d383b6f1f..d4dc3b12b 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -55,7 +55,7 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; - Personal = PersonalInfo.BW; + Personal = PersonalTable.BW; break; case GameVersion.B2W2: // B2W2 BattleBox = 0x20900; @@ -78,7 +78,7 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; - Personal = PersonalInfo.B2W2; + Personal = PersonalTable.B2W2; break; } HeldItems = Legal.HeldItems_BW; diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index da76600a5..ac9233386 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 ? PersonalInfo.AO : PersonalInfo.XY; + Personal = ORAS ? PersonalTable.AO : PersonalTable.XY; if (!Exportable) resetBoxes(); } diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index e7c837e23..2137b0091 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -45,7 +45,7 @@ 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; protected set; } public bool ORASDEMO => Data.Length == SaveUtil.SIZE_G6ORASDEMO; public bool ORAS => Version == GameVersion.OR || Version == GameVersion.AS; diff --git a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index 9176c646f..8ab55fbd7 100644 --- a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -363,7 +363,7 @@ private void updateNickname(object sender, EventArgs e) private void setForms() { int species = Util.getIndex(CB_Species); - bool hasForms = PersonalInfo.AO[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"; diff --git a/Subforms/Save Editors/Gen6/SAV_SecretBase.cs b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs index d1ab54463..5ad7760b4 100644 --- a/Subforms/Save Editors/Gen6/SAV_SecretBase.cs +++ b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs @@ -411,7 +411,7 @@ private void setAbilityList() int newabil = Convert.ToInt16(MT_AbilNo.Text) >> 1; int species = Util.getIndex(CB_Species); int formnum = CB_Form.SelectedIndex; - int[] abils = PersonalInfo.AO[PersonalInfo.AO[species].FormeIndex(species, formnum)].Abilities; + int[] abils = PersonalTable.AO[PersonalTable.AO[species].FormeIndex(species, formnum)].Abilities; // Build Ability List List ability_list = new List @@ -428,7 +428,7 @@ private void setAbilityList() private void setForms() { int species = Util.getIndex(CB_Species); - bool hasForms = PersonalInfo.AO[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"; From f5bacf236cc591e3a6f679843ece5cd568920b6d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 22:39:18 -0700 Subject: [PATCH 070/184] Add&Split out PersonalTable Will eventually have more complex operations associated with it, as the PersonalInfo[] could not do that sort of logic. --- Legality/Checks.cs | 6 +- Legality/Core.cs | 20 ++-- PKM/PKX.cs | 2 +- PersonalInfo/PersonalInfo.cs | 94 +------------------ PersonalInfo/PersonalInfoB2W2.cs | 3 +- PersonalInfo/PersonalInfoBW.cs | 3 +- PersonalInfo/PersonalInfoG3.cs | 3 +- PersonalInfo/PersonalInfoG4.cs | 3 +- PersonalInfo/PersonalInfoORAS.cs | 3 +- PersonalInfo/PersonalInfoXY.cs | 3 +- PersonalInfo/PersonalTable.cs | 97 ++++++++++++++++++++ Saves/SAV3.cs | 6 +- Saves/SAV4.cs | 6 +- Saves/SAV5.cs | 4 +- Saves/SAV6.cs | 2 +- Saves/SaveFile.cs | 2 +- Subforms/Save Editors/Gen6/SAV_HallOfFame.cs | 2 +- Subforms/Save Editors/Gen6/SAV_SecretBase.cs | 4 +- 18 files changed, 137 insertions(+), 126 deletions(-) create mode 100644 PersonalInfo/PersonalTable.cs diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 4d55eda33..a750cd0fe 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -30,7 +30,7 @@ public partial class LegalityAnalysis { private LegalityCheck verifyGender() { - if (PersonalInfo.AO[pk6.Species].Gender == 255 && pk6.Gender != 2) + 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(); @@ -431,8 +431,8 @@ private LegalityCheck verifyRibbons() } private LegalityCheck verifyAbility() { - int index = PersonalInfo.AO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); - int[] abilities = PersonalInfo.AO[index].Abilities; + int index = PersonalTable.AO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); + int[] abilities = PersonalTable.AO[index].Abilities; int abilval = Array.IndexOf(abilities, pk6.Ability); if (abilval < 0) return new LegalityCheck(Severity.Invalid, "Ability is not valid for species/form."); diff --git a/Legality/Core.cs b/Legality/Core.cs index 5075ce9d3..9bc6ed5bc 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -405,8 +405,8 @@ private static IEnumerable getDexNavAreas(PK6 pk6) } private static IEnumerable getLVLMoves(int species, int lvl, int formnum) { - int ind_XY = PersonalInfo.XY[species].FormeIndex(species, formnum); - int ind_AO = PersonalInfo.AO[species].FormeIndex(species, formnum); + int ind_XY = PersonalTable.XY[species].FormeIndex(species, formnum); + int ind_AO = PersonalTable.AO[species].FormeIndex(species, formnum); return LevelUpXY[ind_XY].getMoves(lvl).Concat(LevelUpAO[ind_AO].getMoves(lvl)); } private static IEnumerable getEncounterSlots(PK6 pk6) @@ -543,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 = PersonalInfo.AO[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); @@ -568,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 = PersonalInfo.XY[species].FormeIndex(species, form); - PersonalInfo pi = PersonalInfo.XY[index]; + int index = PersonalTable.XY[species].FormeIndex(species, form); + PersonalInfo pi = PersonalTable.XY[index]; if (LVL) r.AddRange(LevelUpXY[index].getMoves(lvl)); if (Tutor) r.AddRange(getTutorMoves(species, form, ORASTutors)); @@ -577,8 +577,8 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR } if (Version < 0 || Version == 1) { - int index = PersonalInfo.AO[species].FormeIndex(species, form); - PersonalInfo pi = PersonalInfo.AO[index]; + int index = PersonalTable.AO[species].FormeIndex(species, form); + PersonalInfo pi = PersonalTable.AO[index]; if (LVL) r.AddRange(LevelUpAO[index].getMoves(lvl)); if (Tutor) r.AddRange(getTutorMoves(species, form, ORASTutors)); @@ -588,13 +588,13 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR } private static IEnumerable getEggMoves(int species, int formnum) { - int ind_XY = PersonalInfo.XY[species].FormeIndex(species, formnum); - int ind_AO = PersonalInfo.AO[species].FormeIndex(species, formnum); + int ind_XY = PersonalTable.XY[species].FormeIndex(species, formnum); + int ind_AO = PersonalTable.AO[species].FormeIndex(species, formnum); return EggMoveAO[ind_AO].Moves.Concat(EggMoveXY[ind_XY].Moves); } private static IEnumerable getTutorMoves(int species, int formnum, bool ORASTutors) { - PersonalInfoORAS pkAO = (PersonalInfoORAS) PersonalInfo.AO[PersonalInfo.AO[species].FormeIndex(species, formnum)]; + PersonalInfoORAS pkAO = (PersonalInfoORAS)PersonalTable.AO[PersonalTable.AO[species].FormeIndex(species, formnum)]; // Type Tutor List moves = TypeTutor.Where((t, i) => pkAO.TypeTutors[i]).ToList(); diff --git a/PKM/PKX.cs b/PKM/PKX.cs index c59fd541f..6b37139a8 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -181,7 +181,7 @@ internal static bool getIsNicknamed(int species, string nick) try { return SpeciesLang.All(list => list[species].ToUpper() != nick); } catch { return false; } } - internal static PersonalInfo[] Personal = PersonalInfo.AO; + internal static PersonalTable Personal = PersonalTable.AO; // Stat Fetching internal static int getMovePP(int move, int ppup) diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs index 290125dfd..10e76c4f1 100644 --- a/PersonalInfo/PersonalInfo.cs +++ b/PersonalInfo/PersonalInfo.cs @@ -1,28 +1,7 @@ -using System; - -namespace PKHeX +namespace PKHeX { public abstract class PersonalInfo { - internal static readonly PersonalInfo[] AO = getArray(Properties.Resources.personal_ao, GameVersion.ORAS); - internal static readonly PersonalInfo[] XY = getArray(Properties.Resources.personal_xy, GameVersion.XY); - internal static readonly PersonalInfo[] B2W2 = getArray(Properties.Resources.personal_b2w2, GameVersion.B2W2); - internal static readonly PersonalInfo[] BW = getArray(Properties.Resources.personal_bw, GameVersion.BW); - internal static readonly PersonalInfo[] HGSS = getArray(Properties.Resources.personal_hgss, GameVersion.HGSS); - internal static readonly PersonalInfo[] Pt = getArray(Properties.Resources.personal_pt, GameVersion.Pt); - internal static readonly PersonalInfo[] DP = getArray(Properties.Resources.personal_dp, GameVersion.DP); - internal static readonly PersonalInfo[] LG = getArray(Properties.Resources.personal_lg, GameVersion.LG); - internal static readonly PersonalInfo[] FR = getArray(Properties.Resources.personal_fr, GameVersion.FR); - internal static readonly PersonalInfo[] E = getArray(Properties.Resources.personal_e, GameVersion.E); - internal static readonly PersonalInfo[] RS = getArray(Properties.Resources.personal_rs, GameVersion.RS); - - protected const int SIZE_G3 = 0x1C; - protected const int SIZE_G4 = 0x2C; - protected const int SIZE_BW = 0x3C; - protected const int SIZE_B2W2 = 0x4C; - protected const int SIZE_XY = 0x40; - protected const int SIZE_AO = 0x50; - protected byte[] Data; public abstract byte[] Write(); public abstract int HP { get; set; } @@ -108,76 +87,5 @@ public int RandomGender } public bool HasFormes => FormeCount > 1; public int BST => HP + ATK + DEF + SPE + SPA + SPD; - - // Array Retrieval - internal static PersonalInfo[] getArray(byte[] data, GameVersion format) - { - int size = 0; - switch (format) - { - case GameVersion.RS: - case GameVersion.E: - case GameVersion.FR: - case GameVersion.LG: size = SIZE_G3; break; - case GameVersion.DP: - case GameVersion.Pt: - case GameVersion.HGSS: size = SIZE_G4; break; - case GameVersion.BW: size = SIZE_BW; break; - case GameVersion.B2W2: size = SIZE_B2W2; break; - case GameVersion.XY: size = SIZE_XY; break; - case GameVersion.ORAS: size = SIZE_AO; break; - } - - if (size == 0) - return null; - - 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; - } - return d; - } - 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; - } } } diff --git a/PersonalInfo/PersonalInfoB2W2.cs b/PersonalInfo/PersonalInfoB2W2.cs index a080f2920..c3659ac0c 100644 --- a/PersonalInfo/PersonalInfoB2W2.cs +++ b/PersonalInfo/PersonalInfoB2W2.cs @@ -4,9 +4,10 @@ namespace PKHeX { public class PersonalInfoB2W2 : PersonalInfoBW { + public new const int SIZE = 0x4C; public PersonalInfoB2W2(byte[] data) { - if (data.Length != SIZE_B2W2) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoBW.cs b/PersonalInfo/PersonalInfoBW.cs index a14469263..7f26bb365 100644 --- a/PersonalInfo/PersonalInfoBW.cs +++ b/PersonalInfo/PersonalInfoBW.cs @@ -6,9 +6,10 @@ namespace PKHeX public class PersonalInfoBW : PersonalInfo { protected PersonalInfoBW() { } + public const int SIZE = 0x3C; public PersonalInfoBW(byte[] data) { - if (data.Length != SIZE_BW) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoG3.cs b/PersonalInfo/PersonalInfoG3.cs index fdcdd4980..04f8248b4 100644 --- a/PersonalInfo/PersonalInfoG3.cs +++ b/PersonalInfo/PersonalInfoG3.cs @@ -5,9 +5,10 @@ namespace PKHeX public class PersonalInfoG3 : PersonalInfo { protected PersonalInfoG3() { } + public const int SIZE = 0x1C; public PersonalInfoG3(byte[] data) { - if (data.Length != SIZE_G3) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoG4.cs b/PersonalInfo/PersonalInfoG4.cs index 585690bec..14dff8259 100644 --- a/PersonalInfo/PersonalInfoG4.cs +++ b/PersonalInfo/PersonalInfoG4.cs @@ -4,9 +4,10 @@ namespace PKHeX { public class PersonalInfoG4 : PersonalInfoG3 { + public new const int SIZE = 0x2C; public PersonalInfoG4(byte[] data) { - if (data.Length != SIZE_G4) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoORAS.cs b/PersonalInfo/PersonalInfoORAS.cs index b71d8b218..8d398f681 100644 --- a/PersonalInfo/PersonalInfoORAS.cs +++ b/PersonalInfo/PersonalInfoORAS.cs @@ -4,9 +4,10 @@ namespace PKHeX { public class PersonalInfoORAS : PersonalInfoXY { + public new const int SIZE = 0x50; public PersonalInfoORAS(byte[] data) { - if (data.Length != SIZE_AO) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalInfoXY.cs b/PersonalInfo/PersonalInfoXY.cs index b662245d0..5ddc07fc1 100644 --- a/PersonalInfo/PersonalInfoXY.cs +++ b/PersonalInfo/PersonalInfoXY.cs @@ -5,9 +5,10 @@ namespace PKHeX public class PersonalInfoXY : PersonalInfoBW { protected PersonalInfoXY() { } // For ORAS + public new const int SIZE = 0x40; public PersonalInfoXY(byte[] data) { - if (data.Length != SIZE_XY) + if (data.Length != SIZE) return; Data = data; diff --git a/PersonalInfo/PersonalTable.cs b/PersonalInfo/PersonalTable.cs new file mode 100644 index 000000000..3f7cd7fc1 --- /dev/null +++ b/PersonalInfo/PersonalTable.cs @@ -0,0 +1,97 @@ +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; } + } + } +} diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index fb49f35c4..c389e959c 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -77,7 +77,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = BlockOfs[1] + 0x0600; OFS_PouchTMHM = BlockOfs[1] + 0x0640; OFS_PouchBerry = BlockOfs[1] + 0x0740; - Personal = PersonalInfo.RS; + Personal = PersonalTable.RS; break; case GameVersion.FRLG: LegalKeyItems = Legal.Pouch_Key_FRLG; @@ -86,7 +86,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = BlockOfs[1] + 0x0430; OFS_PouchTMHM = BlockOfs[1] + 0x0464; OFS_PouchBerry = BlockOfs[1] + 0x054C; - Personal = PersonalInfo.FR; // todo split FR & LG + Personal = PersonalTable.FR; // todo split FR & LG break; case GameVersion.E: LegalKeyItems = Legal.Pouch_Key_E; @@ -95,7 +95,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = BlockOfs[1] + 0x0650; OFS_PouchTMHM = BlockOfs[1] + 0x0690; OFS_PouchBerry = BlockOfs[1] + 0x0790; - Personal = PersonalInfo.E; + Personal = PersonalTable.E; break; } LegalItems = Legal.Pouch_Items_RS; diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index d9d2b07e0..47ea8a285 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -28,9 +28,9 @@ public SAV4(byte[] data = null, GameVersion versionOverride = GameVersion.Any) switch (Version) { - case GameVersion.DP: Personal = PersonalInfo.DP; break; - case GameVersion.Pt: Personal = PersonalInfo.Pt; break; - case GameVersion.HGSS: Personal = PersonalInfo.HGSS; break; + case GameVersion.DP: Personal = PersonalTable.DP; break; + case GameVersion.Pt: Personal = PersonalTable.Pt; break; + case GameVersion.HGSS: Personal = PersonalTable.HGSS; break; } if (!Exportable) diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index d383b6f1f..d4dc3b12b 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -55,7 +55,7 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; - Personal = PersonalInfo.BW; + Personal = PersonalTable.BW; break; case GameVersion.B2W2: // B2W2 BattleBox = 0x20900; @@ -78,7 +78,7 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; - Personal = PersonalInfo.B2W2; + Personal = PersonalTable.B2W2; break; } HeldItems = Legal.HeldItems_BW; diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index da76600a5..ac9233386 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 ? PersonalInfo.AO : PersonalInfo.XY; + Personal = ORAS ? PersonalTable.AO : PersonalTable.XY; if (!Exportable) resetBoxes(); } diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index e7c837e23..2137b0091 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -45,7 +45,7 @@ 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; protected set; } public bool ORASDEMO => Data.Length == SaveUtil.SIZE_G6ORASDEMO; public bool ORAS => Version == GameVersion.OR || Version == GameVersion.AS; diff --git a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index 9176c646f..8ab55fbd7 100644 --- a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -363,7 +363,7 @@ private void updateNickname(object sender, EventArgs e) private void setForms() { int species = Util.getIndex(CB_Species); - bool hasForms = PersonalInfo.AO[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"; diff --git a/Subforms/Save Editors/Gen6/SAV_SecretBase.cs b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs index d1ab54463..5ad7760b4 100644 --- a/Subforms/Save Editors/Gen6/SAV_SecretBase.cs +++ b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs @@ -411,7 +411,7 @@ private void setAbilityList() int newabil = Convert.ToInt16(MT_AbilNo.Text) >> 1; int species = Util.getIndex(CB_Species); int formnum = CB_Form.SelectedIndex; - int[] abils = PersonalInfo.AO[PersonalInfo.AO[species].FormeIndex(species, formnum)].Abilities; + int[] abils = PersonalTable.AO[PersonalTable.AO[species].FormeIndex(species, formnum)].Abilities; // Build Ability List List ability_list = new List @@ -428,7 +428,7 @@ private void setAbilityList() private void setForms() { int species = Util.getIndex(CB_Species); - bool hasForms = PersonalInfo.AO[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"; From f9816214528ccdb88cf5251f1f382820d3f0931d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 23:04:39 -0700 Subject: [PATCH 071/184] Simplify ability / entry retrieval --- Legality/Checks.cs | 3 +-- Legality/Core.cs | 18 +++++++++--------- MainWindow/Main.cs | 6 +++--- MysteryGifts/PGF.cs | 2 +- MysteryGifts/WC6.cs | 2 +- PKM/PKX.cs | 2 +- PersonalInfo/PersonalTable.cs | 14 +++++++++++++- Subforms/Save Editors/Gen6/SAV_SecretBase.cs | 2 +- 8 files changed, 30 insertions(+), 19 deletions(-) diff --git a/Legality/Checks.cs b/Legality/Checks.cs index a750cd0fe..d7c7374e3 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -431,8 +431,7 @@ private LegalityCheck verifyRibbons() } private LegalityCheck verifyAbility() { - int index = PersonalTable.AO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); - int[] abilities = PersonalTable.AO[index].Abilities; + 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."); diff --git a/Legality/Core.cs b/Legality/Core.cs index 9bc6ed5bc..29fcad10c 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -405,8 +405,8 @@ private static IEnumerable getDexNavAreas(PK6 pk6) } private static IEnumerable getLVLMoves(int species, int lvl, int formnum) { - int ind_XY = PersonalTable.XY[species].FormeIndex(species, formnum); - int ind_AO = PersonalTable.AO[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) @@ -568,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 = PersonalTable.XY[species].FormeIndex(species, form); - PersonalInfo pi = PersonalTable.XY[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)); @@ -577,8 +577,8 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR } if (Version < 0 || Version == 1) { - int index = PersonalTable.AO[species].FormeIndex(species, form); - PersonalInfo pi = PersonalTable.AO[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)); @@ -588,13 +588,13 @@ private static IEnumerable getMoves(int species, int lvl, int form, bool OR } private static IEnumerable getEggMoves(int species, int formnum) { - int ind_XY = PersonalTable.XY[species].FormeIndex(species, formnum); - int ind_AO = PersonalTable.AO[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) { - PersonalInfoORAS pkAO = (PersonalInfoORAS)PersonalTable.AO[PersonalTable.AO[species].FormeIndex(species, formnum)]; + PersonalInfo pkAO = PersonalTable.AO.getFormeEntry(species, formnum); // Type Tutor List moves = TypeTutor.Where((t, i) => pkAO.TypeTutors[i]).ToList(); diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index c3d92c579..2586d82cb 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1152,7 +1152,7 @@ private void setAbilityList() if (SAV.Generation > 3) // has forms formnum = CB_Form.SelectedIndex; - int[] 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()) @@ -1234,7 +1234,7 @@ private void clickFriendship(object sender, EventArgs e) 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; @@ -1736,7 +1736,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; diff --git a/MysteryGifts/PGF.cs b/MysteryGifts/PGF.cs index a036a6bb9..f1472806b 100644 --- a/MysteryGifts/PGF.cs +++ b/MysteryGifts/PGF.cs @@ -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/WC6.cs b/MysteryGifts/WC6.cs index f2b969a1a..47425de0e 100644 --- a/MysteryGifts/WC6.cs +++ b/MysteryGifts/WC6.cs @@ -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/PKM/PKX.cs b/PKM/PKX.cs index 6b37139a8..41c0966c6 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -414,7 +414,7 @@ internal static ushort[] getStats(PKM pkm) 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)]; + PersonalInfo p = Personal.getFormeEntry(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); diff --git a/PersonalInfo/PersonalTable.cs b/PersonalInfo/PersonalTable.cs index 3f7cd7fc1..985213a44 100644 --- a/PersonalInfo/PersonalTable.cs +++ b/PersonalInfo/PersonalTable.cs @@ -26,7 +26,6 @@ private static byte[][] splitBytes(byte[] data, int size) } return r; } - private PersonalTable(byte[] data, GameVersion format) { int size = 0; @@ -93,5 +92,18 @@ private PersonalTable(byte[] data, GameVersion format) get { return Table[index]; } set { Table[index] = value; } } + + public int[] getAbilities(int species, int forme) + { + return this[getFormeIndex(species, forme)].Abilities; + } + public int getFormeIndex(int species, int forme) + { + return this[species].FormeIndex(species, forme); + } + public PersonalInfo getFormeEntry(int species, int forme) + { + return this[getFormeIndex(species, forme)]; + } } } diff --git a/Subforms/Save Editors/Gen6/SAV_SecretBase.cs b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs index 5ad7760b4..0b93e7369 100644 --- a/Subforms/Save Editors/Gen6/SAV_SecretBase.cs +++ b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs @@ -411,7 +411,7 @@ private void setAbilityList() int newabil = Convert.ToInt16(MT_AbilNo.Text) >> 1; int species = Util.getIndex(CB_Species); int formnum = CB_Form.SelectedIndex; - int[] abils = PersonalTable.AO[PersonalTable.AO[species].FormeIndex(species, formnum)].Abilities; + int[] abils = PersonalTable.AO.getAbilities(species, formnum); // Build Ability List List ability_list = new List From 016a0e3aee83c1d04fc3931fa6ceaf2b7ecb8267 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 17 Jul 2016 23:40:40 -0700 Subject: [PATCH 072/184] Reduce reliance on PKX Certain calculations are best done with direct references. Indirectly fixed Shiny button bug (8 <= xor < 16) for past gen games. --- Legality/Checks.cs | 2 +- MainWindow/Main.cs | 21 +++++++++------ MainWindow/MainPK3.cs | 2 +- MainWindow/MainPK4.cs | 2 +- MainWindow/MainPK5.cs | 2 +- MysteryGifts/PGF.cs | 2 +- MysteryGifts/WC6.cs | 2 +- PKM/PK5.cs | 8 +++--- PKM/PK6.cs | 2 +- PKM/PKX.cs | 31 ----------------------- Subforms/Save Editors/Gen6/SAV_Trainer.cs | 2 +- 11 files changed, 26 insertions(+), 50 deletions(-) diff --git a/Legality/Checks.cs b/Legality/Checks.cs index d7c7374e3..5c33a70c4 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -584,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."); diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 2586d82cb..13b715576 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -386,7 +386,7 @@ private void clickShowdownImportPK6(object sender, EventArgs e) CB_Form.SelectedIndex = form; // Set Ability - int[] abilities = PKX.getAbilities(Set.Species, form); + int[] abilities = SAV.Personal.getAbilities(Set.Species, form); int ability = Array.IndexOf(abilities, Set.Ability); if (ability < 0) ability = 0; CB_Ability.SelectedIndex = ability; @@ -1165,7 +1165,10 @@ private void setAbilityList() // PKX Data Calculation Functions // private void setIsShiny() { - bool isShiny = PKX.getIsShiny(Util.getHEXval(TB_PID.Text), Util.ToUInt32(TB_TID.Text), Util.ToUInt32(TB_SID.Text)); + pkm.PID = Util.getHEXval(TB_PID.Text); + pkm.TID = (int)Util.ToUInt32(TB_TID.Text); + pkm.SID = (int)Util.ToUInt32(TB_SID.Text); + bool isShiny = pkm.IsShiny; // Set the Controls BTN_Shinytize.Visible = BTN_Shinytize.Enabled = !isShiny; @@ -1229,7 +1232,7 @@ 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) { @@ -1981,7 +1984,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) { @@ -2050,13 +2053,15 @@ 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); + + pkm.TID = (int)Util.ToUInt32(TB_TID.Text); + pkm.SID = (int)Util.ToUInt32(TB_SID.Text); + 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) diff --git a/MainWindow/MainPK3.cs b/MainWindow/MainPK3.cs index af808a5d0..de552ecaa 100644 --- a/MainWindow/MainPK3.cs +++ b/MainWindow/MainPK3.cs @@ -29,7 +29,7 @@ private void populateFieldsPK3() TB_PID.Text = pk3.PID.ToString("X8"); CB_HeldItem.SelectedValue = pk3.G3Item; setAbilityList(); - int[] abils = PKX.getAbilities(pk3.Species, 0); + int[] abils = SAV.Personal.getAbilities(pk3.Species, 0); int abil = Array.IndexOf(abils, pk3.Ability); CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; CB_Nature.SelectedValue = pk3.Nature; diff --git a/MainWindow/MainPK4.cs b/MainWindow/MainPK4.cs index 312cd63d8..c26762cfa 100644 --- a/MainWindow/MainPK4.cs +++ b/MainWindow/MainPK4.cs @@ -123,7 +123,7 @@ private void populateFieldsPK4() DEV_Ability.SelectedValue = pk4.Ability; else { - int[] abils = PKX.getAbilities(pk4.Species, pk4.AltForm); + 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; } diff --git a/MainWindow/MainPK5.cs b/MainWindow/MainPK5.cs index a1a8806d5..86defb20b 100644 --- a/MainWindow/MainPK5.cs +++ b/MainWindow/MainPK5.cs @@ -134,7 +134,7 @@ private void populateFieldsPK5() CB_Ability.SelectedIndex = CB_Ability.Items.Count - 1; else { - int[] abils = PKX.getAbilities(pk5.Species, pk5.AltForm); + 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; } diff --git a/MysteryGifts/PGF.cs b/MysteryGifts/PGF.cs index f1472806b..a31781ce4 100644 --- a/MysteryGifts/PGF.cs +++ b/MysteryGifts/PGF.cs @@ -186,7 +186,7 @@ public override PKM convertToPKM(SaveFile SAV) RibbonChampionNational = RibbonChampionNational, RibbonChampionWorld = RibbonChampionWorld, - OT_Friendship = PKX.getBaseFriendship(Species), + OT_Friendship = PersonalTable.B2W2[Species].BaseFriendship, FatefulEncounter = true, }; if (OTGender == 3) // User's diff --git a/MysteryGifts/WC6.cs b/MysteryGifts/WC6.cs index 47425de0e..92c24f0a5 100644 --- a/MysteryGifts/WC6.cs +++ b/MysteryGifts/WC6.cs @@ -273,7 +273,7 @@ public override PKM convertToPKM(SaveFile SAV) 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, diff --git a/PKM/PK5.cs b/PKM/PK5.cs index ae9edbed6..bb87d3ebe 100644 --- a/PKM/PK5.cs +++ b/PKM/PK5.cs @@ -332,8 +332,10 @@ 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. @@ -517,7 +519,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 a3add1676..852e7635d 100644 --- a/PKM/PK6.cs +++ b/PKM/PK6.cs @@ -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/PKX.cs b/PKM/PKX.cs index 41c0966c6..900f45ac3 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -243,10 +243,6 @@ internal static byte[] getRandomEVs() Util.Shuffle(evs); return evs; } - internal static int getBaseFriendship(int species) - { - return Personal[species].BaseFriendship; - } internal static int getLevel(int species, uint exp) { int growth = Personal[species].EXPGrowth; @@ -255,30 +251,12 @@ 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) { if (level <= 1) return 0; if (level > 100) level = 100; return ExpTable[level, Personal[species].EXPGrowth]; } - internal static int[] getAbilities(int species, int formnum) - { - return Personal[Personal[species].FormeIndex(species, formnum)].Abilities; - } - internal static int getAbilityNumber(int species, int ability, int formnum) - { - int[] spec_abilities = getAbilities(species, formnum); - int abilval = Array.IndexOf(spec_abilities, ability); - if (abilval >= 0) - return 1 << abilval; - return -1; - } internal static int getGender(string s) { if (s == null) @@ -435,7 +413,6 @@ internal static ushort[] getStats(PKM pkm) return stats; } - // PKX Manipulation internal static readonly byte[][] blockPosition = { @@ -547,14 +524,6 @@ internal static bool verifychk(byte[] input) 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) { int gt = Personal[species].Gender; diff --git a/Subforms/Save Editors/Gen6/SAV_Trainer.cs b/Subforms/Save Editors/Gen6/SAV_Trainer.cs index fbf2da068..2d5be2a82 100644 --- a/Subforms/Save Editors/Gen6/SAV_Trainer.cs +++ b/Subforms/Save Editors/Gen6/SAV_Trainer.cs @@ -560,7 +560,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")); } From de8cebf2a4a872f2eab688d73e85203ff0b47899 Mon Sep 17 00:00:00 2001 From: Tyler Dunn Date: Mon, 18 Jul 2016 14:51:26 -0400 Subject: [PATCH 073/184] Use Direct Casts and Conditional Access to Avoid NPEs --- MainWindow/Main.cs | 56 +++++++++---------- PKM/PKMConverter.cs | 6 +- PKM/ShowdownSet.cs | 2 +- Subforms/PKM Editors/MemoryAmie.cs | 6 +- Subforms/PKM Editors/Text.cs | 2 +- Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs | 2 +- Subforms/Save Editors/Gen6/SAV_PokedexXY.cs | 2 +- Subforms/Save Editors/Gen6/SAV_Pokepuff.cs | 2 +- Subforms/Save Editors/Gen6/SAV_Trainer.cs | 6 +- Subforms/frmReport.cs | 10 ++-- 10 files changed, 47 insertions(+), 47 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 13b715576..fd66a7bef 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -92,7 +92,7 @@ public Main() #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 @@ -698,7 +698,7 @@ private void openSAV(byte[] input, string path) 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 @@ -785,10 +785,10 @@ private void openSAV(byte[] input, string path) 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"); + TB_GameSync.Enabled = ((SAV6) SAV).GameSyncID != 0; + TB_GameSync.Text = ((SAV6) SAV).GameSyncID.ToString("X16"); + TB_Secure1.Text = ((SAV6) SAV).Secure1.ToString("X16"); + TB_Secure2.Text = ((SAV6) SAV).Secure2.ToString("X16"); break; } PKM pk = preparePKM(); @@ -1294,16 +1294,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) { @@ -1437,8 +1437,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; @@ -1470,8 +1470,8 @@ 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 (Util.ToInt32(((MaskedTextBox) sender).Text) > SAV.MaxEV) + ((MaskedTextBox) sender).Text = SAV.MaxEV.ToString(); changingFields = true; int EV_HP = Util.ToInt32(TB_HPEV.Text); @@ -1606,8 +1606,8 @@ 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) { @@ -1885,8 +1885,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); @@ -2131,7 +2131,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; @@ -2470,7 +2470,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); } @@ -2704,11 +2704,11 @@ private void updateU64(object sender, EventArgs e) // Currently saved Value ulong oldval = 0; if (tb == TB_GameSync) - oldval = (SAV as SAV6).GameSyncID; + oldval = ((SAV6) SAV).GameSyncID; else if (tb == TB_Secure1) - oldval = (SAV as SAV6).Secure1; + oldval = ((SAV6) SAV).Secure1; else if (tb == TB_Secure2) - oldval = (SAV as SAV6).Secure2; + oldval = ((SAV6) SAV).Secure2; string filterText = Util.getOnlyHex(tb.Text); @@ -2725,11 +2725,11 @@ private void updateU64(object sender, EventArgs e) if (newval != oldval) { if (tb == TB_GameSync) - (SAV as SAV6).GameSyncID = newval; + ((SAV6) SAV).GameSyncID = newval; else if (tb == TB_Secure1) - (SAV as SAV6).Secure1 = newval; + ((SAV6) SAV).Secure1 = newval; else if (tb == TB_Secure2) - (SAV as SAV6).Secure2 = newval; + ((SAV6) SAV).Secure2 = newval; SAV.Edited = true; } } @@ -3120,7 +3120,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(); @@ -3140,7 +3140,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 diff --git a/PKM/PKMConverter.cs b/PKM/PKMConverter.cs index 9720dae33..5c1bdebaf 100644 --- a/PKM/PKMConverter.cs +++ b/PKM/PKMConverter.cs @@ -104,11 +104,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/ShowdownSet.cs b/PKM/ShowdownSet.cs index 376791544..21f69fa25 100644 --- a/PKM/ShowdownSet.cs +++ b/PKM/ShowdownSet.cs @@ -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/Subforms/PKM Editors/MemoryAmie.cs b/Subforms/PKM Editors/MemoryAmie.cs index 54034e8cf..49534a774 100644 --- a/Subforms/PKM Editors/MemoryAmie.cs +++ b/Subforms/PKM Editors/MemoryAmie.cs @@ -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/Subforms/PKM Editors/Text.cs b/Subforms/PKM Editors/Text.cs index 145bb7ca1..b2b09a7d0 100644 --- a/Subforms/PKM Editors/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/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs index 71daec422..12508f4b7 100644 --- a/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs +++ b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs @@ -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; diff --git a/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs b/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs index 8eb4f4927..bf31bbf58 100644 --- a/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs +++ b/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs @@ -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; diff --git a/Subforms/Save Editors/Gen6/SAV_Pokepuff.cs b/Subforms/Save Editors/Gen6/SAV_Pokepuff.cs index 63b89bd38..915668503 100644 --- a/Subforms/Save Editors/Gen6/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/Subforms/Save Editors/Gen6/SAV_Trainer.cs b/Subforms/Save Editors/Gen6/SAV_Trainer.cs index 2d5be2a82..0e089dde9 100644 --- a/Subforms/Save Editors/Gen6/SAV_Trainer.cs +++ b/Subforms/Save Editors/Gen6/SAV_Trainer.cs @@ -583,7 +583,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 +593,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/frmReport.cs b/Subforms/frmReport.cs index 5ed00dc3f..4050f8f6c 100644 --- a/Subforms/frmReport.cs +++ b/Subforms/frmReport.cs @@ -36,9 +36,9 @@ public class Preview 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; From 046c4258b127fb75d12337b4361b3aab4cdf25aa Mon Sep 17 00:00:00 2001 From: Tyler Dunn Date: Mon, 18 Jul 2016 14:52:55 -0400 Subject: [PATCH 074/184] Remove initialized value for training bags Seems we just overwrite it and ignore the initial value, let's not be redundant. --- Subforms/Save Editors/Gen6/SAV_SuperTrain.cs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs b/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs index 69263f969..79b819c36 100644 --- a/Subforms/Save Editors/Gen6/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; From 5c241c859b94a5f93fd1d32a225013d84a6d1b8c Mon Sep 17 00:00:00 2001 From: Tyler Dunn Date: Mon, 18 Jul 2016 14:53:09 -0400 Subject: [PATCH 075/184] Use foreach loop in SAV_Inventory.cs yay language usage opportunities --- Subforms/Save Editors/SAV_Inventory.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Subforms/Save Editors/SAV_Inventory.cs b/Subforms/Save Editors/SAV_Inventory.cs index 63cf17f44..76d3abbee 100644 --- a/Subforms/Save Editors/SAV_Inventory.cs +++ b/Subforms/Save Editors/SAV_Inventory.cs @@ -136,10 +136,10 @@ 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++) @@ -159,10 +159,10 @@ 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 } } From 85ffe068077b1a72057af3190869c5104fafa255 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 18 Jul 2016 20:25:54 -0700 Subject: [PATCH 076/184] Fix setIsShiny Thanks Wanderer1391! Set value back only if it was the one that updated the value. No need to prompt update after loading as it refreshes when each field loads. --- MainWindow/Main.cs | 16 +++++++++------- MainWindow/MainPK3.cs | 1 - MainWindow/MainPK4.cs | 1 - MainWindow/MainPK5.cs | 1 - MainWindow/MainPK6.cs | 1 - 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 13b715576..59e094680 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1163,11 +1163,15 @@ private void setAbilityList() CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; } // PKX Data Calculation Functions // - private void setIsShiny() + private void setIsShiny(object sender) { - pkm.PID = Util.getHEXval(TB_PID.Text); - pkm.TID = (int)Util.ToUInt32(TB_TID.Text); - pkm.SID = (int)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 @@ -2054,8 +2058,6 @@ private void updateTSV(object sender, EventArgs e) if (SAV.Generation < 6) return; - pkm.TID = (int)Util.ToUInt32(TB_TID.Text); - pkm.SID = (int)Util.ToUInt32(TB_SID.Text); var TSV = pkm.TSV; Tip1.SetToolTip(TB_TID, "TSV: " + TSV.ToString("0000")); Tip2.SetToolTip(TB_SID, "TSV: " + TSV.ToString("0000")); @@ -2074,7 +2076,7 @@ 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 diff --git a/MainWindow/MainPK3.cs b/MainWindow/MainPK3.cs index de552ecaa..16f314364 100644 --- a/MainWindow/MainPK3.cs +++ b/MainWindow/MainPK3.cs @@ -96,7 +96,6 @@ private void populateFieldsPK3() 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]; diff --git a/MainWindow/MainPK4.cs b/MainWindow/MainPK4.cs index c26762cfa..697193b01 100644 --- a/MainWindow/MainPK4.cs +++ b/MainWindow/MainPK4.cs @@ -113,7 +113,6 @@ private void populateFieldsPK4() 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]; diff --git a/MainWindow/MainPK5.cs b/MainWindow/MainPK5.cs index 86defb20b..15f674aab 100644 --- a/MainWindow/MainPK5.cs +++ b/MainWindow/MainPK5.cs @@ -122,7 +122,6 @@ private void populateFieldsPK5() 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]; diff --git a/MainWindow/MainPK6.cs b/MainWindow/MainPK6.cs index c42e920ee..ced541a41 100644 --- a/MainWindow/MainPK6.cs +++ b/MainWindow/MainPK6.cs @@ -137,7 +137,6 @@ private void populateFieldsPK6() 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]; From fb9c18c151ea5da6deb3d9c192e81651a5bb8ade Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 18 Jul 2016 20:36:52 -0700 Subject: [PATCH 077/184] Tweak casting I'm a little too averse for extra lines of code :) Regarding remaining discussion on #136 Resharper gives suggestion to null check Path.GetFileNameWithoutExtension and Path.GetExtension, so it won't hurt. Just because it's set up to work properly now doesn't mean someone modifying it / operating systems years from now will supply the correct arguments. --- MainWindow/Main.cs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 8c4a85053..fa48ba3c8 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -2705,12 +2705,16 @@ private void updateU64(object sender, EventArgs e) // Currently saved Value ulong oldval = 0; - if (tb == TB_GameSync) - oldval = ((SAV6) SAV).GameSyncID; - else if (tb == TB_Secure1) - oldval = ((SAV6) SAV).Secure1; - else if (tb == TB_Secure2) - oldval = ((SAV6) SAV).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); @@ -2724,14 +2728,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) - ((SAV6) SAV).GameSyncID = newval; + sav6.GameSyncID = newval; else if (tb == TB_Secure1) - ((SAV6) SAV).Secure1 = newval; + sav6.Secure1 = newval; else if (tb == TB_Secure2) - ((SAV6) SAV).Secure2 = newval; + sav6.Secure2 = newval; SAV.Edited = true; } } From 89ad1cc896eab9fea7200c09d2a24101f699b438 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 18 Jul 2016 21:39:43 -0700 Subject: [PATCH 078/184] Cast when loading sav6 fb9c18c --- MainWindow/Main.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index fa48ba3c8..cb41013aa 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -785,10 +785,11 @@ private void openSAV(byte[] input, string path) getFieldsfromPKM = populateFieldsPK6; getPKMfromFields = preparePK6; extraBytes = PK6.ExtraBytes; - TB_GameSync.Enabled = ((SAV6) SAV).GameSyncID != 0; - TB_GameSync.Text = ((SAV6) SAV).GameSyncID.ToString("X16"); - TB_Secure1.Text = ((SAV6) SAV).Secure1.ToString("X16"); - TB_Secure2.Text = ((SAV6) SAV).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; } PKM pk = preparePKM(); From 02a208a74d18ce64a9519f4b0038f5ecb4c06f7d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 18 Jul 2016 23:28:10 -0700 Subject: [PATCH 079/184] Break PKX-SAV personaltable relationship Opening Database and having a species in the results with species# greater than the current loaded save file's allowed (ie volcanion in db with loaded emerald) causes Report to throw errors when opened from Database. --- MainWindow/Main.cs | 1 - MysteryGifts/PGF.cs | 2 +- MysteryGifts/WC6.cs | 2 +- PKM/PK3.cs | 2 +- PKM/PK4.cs | 2 +- PKM/PK5.cs | 2 +- PKM/PK6.cs | 2 +- Saves/SAV6.cs | 2 +- Subforms/Save Editors/Gen6/SAV_HallOfFame.cs | 2 +- Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs | 12 ++++++------ Subforms/Save Editors/Gen6/SAV_PokedexXY.cs | 12 ++++++------ Subforms/Save Editors/Gen6/SAV_SecretBase.cs | 4 ++-- Subforms/frmReport.cs | 4 ++-- 13 files changed, 24 insertions(+), 25 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index cb41013aa..74122d14f 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -793,7 +793,6 @@ private void openSAV(byte[] input, string path) break; } PKM pk = preparePKM(); - PKX.Personal = SAV.Personal; bool init = fieldsInitialized; fieldsInitialized = false; populateFilteredDataSources(); diff --git a/MysteryGifts/PGF.cs b/MysteryGifts/PGF.cs index a31781ce4..5bccbcc6d 100644 --- a/MysteryGifts/PGF.cs +++ b/MysteryGifts/PGF.cs @@ -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, diff --git a/MysteryGifts/WC6.cs b/MysteryGifts/WC6.cs index 92c24f0a5..6919d0a97 100644 --- a/MysteryGifts/WC6.cs +++ b/MysteryGifts/WC6.cs @@ -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, diff --git a/PKM/PK3.cs b/PKM/PK3.cs index a2fcb7e2e..5909d9d37 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -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; diff --git a/PKM/PK4.cs b/PKM/PK4.cs index cf5307fb3..8475aeadf 100644 --- a/PKM/PK4.cs +++ b/PKM/PK4.cs @@ -340,7 +340,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; diff --git a/PKM/PK5.cs b/PKM/PK5.cs index bb87d3ebe..0ce2873a6 100644 --- a/PKM/PK5.cs +++ b/PKM/PK5.cs @@ -300,7 +300,7 @@ public override int Characteristic // Methods public override bool getGenderIsValid() { - int gv = PKX.Personal[Species].Gender; + int gv = PersonalTable.B2W2[Species].Gender; if (gv == 255 && Gender == 2) return true; if (gv == 0 && Gender == 1) diff --git a/PKM/PK6.cs b/PKM/PK6.cs index 852e7635d..ca81c2eb2 100644 --- a/PKM/PK6.cs +++ b/PKM/PK6.cs @@ -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; diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index ac9233386..233062253 100644 --- a/Saves/SAV6.cs +++ b/Saves/SAV6.cs @@ -723,7 +723,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) { diff --git a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index 8ab55fbd7..dcba8b206 100644 --- a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -387,7 +387,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]; diff --git a/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs index 12508f4b7..f9deee040 100644 --- a/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs +++ b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs @@ -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/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs b/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs index bf31bbf58..1475e5417 100644 --- a/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs +++ b/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs @@ -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/Subforms/Save Editors/Gen6/SAV_SecretBase.cs b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs index 0b93e7369..9392bb4d9 100644 --- a/Subforms/Save Editors/Gen6/SAV_SecretBase.cs +++ b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs @@ -443,7 +443,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 +468,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/frmReport.cs b/Subforms/frmReport.cs index 4050f8f6c..8fd332e6d 100644 --- a/Subforms/frmReport.cs +++ b/Subforms/frmReport.cs @@ -30,8 +30,8 @@ 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]; From 027feebe77e9a87e18a432f15a4130e053d8e550 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 18 Jul 2016 23:28:36 -0700 Subject: [PATCH 080/184] Add gen3 met locations to Report view Remove unnecessary pkx function --- PKM/PKX.cs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 900f45ac3..3a48acb29 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -321,26 +321,25 @@ internal static string[] getCountryRegionText(int country, int region, string la return data; } - internal static string getLocation(PKM pk, bool egg) + internal 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]; From 985a3eec23caeee3c9630fda83b2e3ddfaad3e1e Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 18 Jul 2016 23:31:09 -0700 Subject: [PATCH 081/184] Update getGenderIsValid never used, just copy the gen3/4 implementation with the earlier return --- PKM/PK5.cs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/PKM/PK5.cs b/PKM/PK5.cs index 0ce2873a6..267559865 100644 --- a/PKM/PK5.cs +++ b/PKM/PK5.cs @@ -301,16 +301,18 @@ public override int Characteristic public override bool getGenderIsValid() { int gv = PersonalTable.B2W2[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; + + 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() From 45d99406f62a8582be695dd161721f3f401350cc Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Tue, 19 Jul 2016 22:26:07 -0700 Subject: [PATCH 082/184] Only list settable & public properties If there's anything private (like ribbon bytes) don't display em. --- Subforms/PKM Editors/BatchEditor.cs | 8 ++++---- Util/ReflectUtil.cs | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index b105f1d52..8b48e71bc 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -18,10 +18,10 @@ public BatchEditor() } private int currentFormat = -1; - private static readonly string[] pk6 = ReflectUtil.getPropertiesCanWrite(typeof(PK6)).OrderBy(i=>i).ToArray(); - private static readonly string[] pk5 = ReflectUtil.getPropertiesCanWrite(typeof(PK5)).OrderBy(i=>i).ToArray(); - private static readonly string[] pk4 = ReflectUtil.getPropertiesCanWrite(typeof(PK4)).OrderBy(i=>i).ToArray(); - private static readonly string[] pk3 = ReflectUtil.getPropertiesCanWrite(typeof(PK3)).OrderBy(i=>i).ToArray(); + 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(); diff --git a/Util/ReflectUtil.cs b/Util/ReflectUtil.cs index e0d843d7f..be844a0bc 100644 --- a/Util/ReflectUtil.cs +++ b/Util/ReflectUtil.cs @@ -30,9 +30,9 @@ internal static IEnumerable getPropertiesStartWithPrefix(Type type, stri .Where(p => p.Name.StartsWith(prefix)) .Select(p => p.Name); } - internal static IEnumerable getPropertiesCanWrite(Type type) + internal static IEnumerable getPropertiesCanWritePublic(Type type) { - return type.GetProperties().Where(p => p.CanWrite).Select(p => p.Name); + return type.GetProperties().Where(p => p.CanWrite && p.GetSetMethod(/*nonPublic*/ true).IsPublic).Select(p => p.Name); } } } From 6029913b5551b46bcd4a44e332ef4cfb61710f26 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 20 Jul 2016 20:40:03 -0700 Subject: [PATCH 083/184] Move stat calc to PKM object ref PersonalInfo entry to calculate from Fixes species with changed BST between gens. Worked fine before PKX Personal was split from SAV (to fix box report), this fixes by requiring the actual personal reference instead of looking it up. --- MainWindow/Main.cs | 55 +++++++++++++++------------------------------- PKM/PKM.cs | 24 +++++++++++++++++--- PKM/PKX.cs | 30 ------------------------- 3 files changed, 39 insertions(+), 70 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 74122d14f..a5405d9e2 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1473,19 +1473,22 @@ private void updateIVs(object sender, EventArgs e) } private void updateEVs(object sender, EventArgs e) { - if (sender != null) - if (Util.ToInt32(((MaskedTextBox) sender).Text) > SAV.MaxEV) - ((MaskedTextBox) sender).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; @@ -1615,6 +1618,7 @@ private void update255_MTB(object sender, EventArgs e) } private void updateForm(object sender, EventArgs e) { + pkm.AltForm = CB_Form.SelectedIndex; updateStats(); // Repopulate Abilities if Species Form has different abilities setAbilityList(); @@ -1634,7 +1638,7 @@ 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; } @@ -2190,31 +2194,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(); @@ -2225,8 +2206,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 diff --git a/PKM/PKM.cs b/PKM/PKM.cs index 977f13c3a..a49e7df89 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -268,10 +268,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]; diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 3a48acb29..b1462a7ae 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -381,36 +381,6 @@ 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.getFormeEntry(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 = From e0b2f164dc1d793d629d8d680ec8db731fa61b75 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 20 Jul 2016 20:43:18 -0700 Subject: [PATCH 084/184] Simple out of bounds checking PKHeX currently won't supply species > length, but if this code is reused elsewhere -> default to species 0 like the games. --- PersonalInfo/PersonalTable.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PersonalInfo/PersonalTable.cs b/PersonalInfo/PersonalTable.cs index 985213a44..59d877243 100644 --- a/PersonalInfo/PersonalTable.cs +++ b/PersonalInfo/PersonalTable.cs @@ -95,10 +95,14 @@ private PersonalTable(byte[] data, GameVersion format) 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) From 583859ffd3527d38a6614e73b3aceb17c6aa237c Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 20 Jul 2016 22:21:09 -0700 Subject: [PATCH 085/184] Change Property combo to DropDown Allows the user to type in the property -> SuggestAppend When the typed text is not within the list of items, the selectedindex is -1, so abort. --- Subforms/PKM Editors/BatchEditor.Designer.cs | 3 ++- Subforms/PKM Editors/BatchEditor.cs | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Subforms/PKM Editors/BatchEditor.Designer.cs b/Subforms/PKM Editors/BatchEditor.Designer.cs index 24ba24601..0d51bd986 100644 --- a/Subforms/PKM Editors/BatchEditor.Designer.cs +++ b/Subforms/PKM Editors/BatchEditor.Designer.cs @@ -149,7 +149,8 @@ private void InitializeComponent() // 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.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + 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); diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index 8b48e71bc..3191354ae 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -220,8 +220,11 @@ private static bool ProcessPKM(PKM PKM, IEnumerable Filters, 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.Text + "="; + 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; From dc11719902d92140be8ea8857d708796dca9d311 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 20 Jul 2016 22:43:26 -0700 Subject: [PATCH 086/184] Improve batch editor alerts Add detection for incomplete commands (instead of throwing and catching exceptions). Add 'error' skip tracking, add counter for actual files iterated over (930 -> actual count of nonempty files for a gen6 save). Processing folder files now writes back ONLY if the file is modified. --- Subforms/PKM Editors/BatchEditor.cs | 66 ++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 16 deletions(-) diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index 3191354ae..8a102a3af 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -55,10 +55,16 @@ private void B_Go_Click(object sender, EventArgs e) 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; } + FLP_RB.Enabled = RTB_Instructions.Enabled = B_Go.Enabled = false; - var Filters = getFilters().ToList(); - var Instructions = getInstructions().ToList(); b = new BackgroundWorker {WorkerReportsProgress = true}; b.DoWork += (sender, e) => { @@ -133,20 +139,32 @@ private IEnumerable getInstructions() } private void processSAV(PKM[] data, List Filters, List Instructions) { + int len = 0; + int err = 0; int ctr = 0; for (int i = 0; i < data.Length; i++) { var pkm = data[i]; - if (ProcessPKM(pkm, Filters, Instructions)) + 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; - result = $"Modified {ctr}/{data.Length} files."; + result = $"Modified {ctr}/{len} files."; + if (err > 0) + result += Environment.NewLine + $"{err} files ignored due to an internal error."; } private void processFolder(string[] files, List Filters, List Instructions) { + int len = 0; + int err = 0; int ctr = 0; for (int i = 0; i < files.Length; i++) { @@ -159,13 +177,22 @@ private void processFolder(string[] files, List Filters, List byte[] data = File.ReadAllBytes(file); var pkm = PKMConverter.getPKMfromBytes(data); - if (ProcessPKM(pkm, Filters, Instructions)) + ModifyResult r = ProcessPKM(pkm, Filters, Instructions); + if (r != ModifyResult.Invalid) + len++; + if (r == ModifyResult.Error) + err++; + if (r == ModifyResult.Modified) + { ctr++; + File.WriteAllBytes(file, pkm.DecryptedBoxData); + } - File.WriteAllBytes(file, pkm.DecryptedBoxData); b.ReportProgress(i); } - result = $"Modified {ctr}/{files.Length} files."; + result = $"Modified {ctr}/{len} files."; + if (err > 0) + result += Environment.NewLine + $"{err} files ignored due to an internal error."; } private void tabMain_DragEnter(object sender, DragEventArgs e) @@ -190,32 +217,39 @@ private class StringInstruction public string PropertyValue; public bool Evaluator; } - private static bool ProcessPKM(PKM PKM, IEnumerable Filters, IEnumerable Instructions) + private enum ModifyResult { - if (!PKM.ChecksumValid) - return false; - if (PKM.Species == 0) - return false; + Invalid, + Error, + Filtered, + Modified, + } + private static ModifyResult ProcessPKM(PKM PKM, IEnumerable Filters, IEnumerable Instructions) + { + if (!PKM.ChecksumValid || PKM.Species == 0) + return ModifyResult.Invalid; + foreach (var cmd in Filters) { try { if (ReflectUtil.GetValueEquals(PKM, cmd.PropertyName, cmd.PropertyValue) != cmd.Evaluator) - return false; + return ModifyResult.Filtered; } catch { Console.WriteLine($"Unable to compare {cmd.PropertyName} to {cmd.PropertyValue}."); - return false; + return ModifyResult.Filtered; } } + ModifyResult result = ModifyResult.Error; foreach (var cmd in Instructions) { - try { ReflectUtil.SetValue(PKM, cmd.PropertyName, cmd.PropertyValue); } + try { ReflectUtil.SetValue(PKM, cmd.PropertyName, cmd.PropertyValue); result = ModifyResult.Modified; } catch { Console.WriteLine($"Unable to set {cmd.PropertyName} to {cmd.PropertyValue}."); } } - return true; + return result; } private void B_Add_Click(object sender, EventArgs e) From 0362268e4105f3d6a39f6f2a5212f64a0b90337a Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 21 Jul 2016 22:45:20 -0700 Subject: [PATCH 087/184] Unnecessary changes Simplify usages --- Subforms/PKM Editors/BatchEditor.cs | 19 ++++++------------- Util/StringUtil.cs | 8 ++++---- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index 8a102a3af..dce279af6 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -86,6 +86,9 @@ private void runBackgroundWorker() 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); @@ -110,7 +113,7 @@ private void setProgressBar(int i) } // Mass Editing - private string result = ""; + private int ctr, len, err; private IEnumerable getFilters() { var raw = @@ -139,9 +142,7 @@ private IEnumerable getInstructions() } private void processSAV(PKM[] data, List Filters, List Instructions) { - int len = 0; - int err = 0; - int ctr = 0; + len = err = ctr = 0; for (int i = 0; i < data.Length; i++) { var pkm = data[i]; @@ -157,15 +158,10 @@ private void processSAV(PKM[] data, List Filters, List 0) - result += Environment.NewLine + $"{err} files ignored due to an internal error."; } private void processFolder(string[] files, List Filters, List Instructions) { - int len = 0; - int err = 0; - int ctr = 0; + len = err = ctr = 0; for (int i = 0; i < files.Length; i++) { string file = files[i]; @@ -190,9 +186,6 @@ private void processFolder(string[] files, List Filters, List b.ReportProgress(i); } - result = $"Modified {ctr}/{len} files."; - if (err > 0) - result += Environment.NewLine + $"{err} files ignored due to an internal error."; } private void tabMain_DragEnter(object sender, DragEventArgs e) diff --git a/Util/StringUtil.cs b/Util/StringUtil.cs index 0fb9dc8b3..f421adb60 100644 --- a/Util/StringUtil.cs +++ b/Util/StringUtil.cs @@ -8,24 +8,24 @@ public partial class Util internal static int ToInt32(string value) { string val = value?.Replace(" ", "").Replace("_", "").Trim(); - return String.IsNullOrWhiteSpace(val) ? 0 : Int32.Parse(val); + 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 : UInt32.Parse(val); + 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); + 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); + return string.IsNullOrWhiteSpace(s) ? "0" : s.Select(char.ToUpper).Where("0123456789ABCDEF".Contains).Aggregate("", (str, c) => str + c); } } } From 1bceb99306d2efabd5c26417c1a576c2df34d116 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 21 Jul 2016 23:13:58 -0700 Subject: [PATCH 088/184] Fix gen3 ability setting main form wouldn't set back properly, simplify loading, fix pk4->pk4 disassociate from PKX.Gen3Abilities (to be deleted now that PersonalTable.RS exists). --- MainWindow/MainPK3.cs | 6 ++---- PKM/PK3.cs | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/MainWindow/MainPK3.cs b/MainWindow/MainPK3.cs index 16f314364..19b827a16 100644 --- a/MainWindow/MainPK3.cs +++ b/MainWindow/MainPK3.cs @@ -29,9 +29,7 @@ private void populateFieldsPK3() TB_PID.Text = pk3.PID.ToString("X8"); CB_HeldItem.SelectedValue = pk3.G3Item; setAbilityList(); - int[] abils = SAV.Personal.getAbilities(pk3.Species, 0); - int abil = Array.IndexOf(abils, pk3.Ability); - CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; + 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"); @@ -113,7 +111,7 @@ private PKM preparePK3() pk3.SID = Util.ToInt32(TB_SID.Text); pk3.EXP = Util.ToUInt32(TB_EXP.Text); pk3.PID = Util.getHEXval(TB_PID.Text); - pk3.Ability = CB_Ability.SelectedIndex; // 0/1 (stored in IVbits) + pk3.AbilityNumber = CB_Ability.SelectedIndex; // 0/1 (stored in IVbits) pk3.FatefulEncounter = CHK_Fateful.Checked; pk3.Gender = PKX.getGender(Label_Gender.Text); diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 5909d9d37..12665a083 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -31,7 +31,7 @@ public PK3(byte[] decryptedData = null, string ident = null) 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 { } } @@ -232,7 +232,7 @@ public PK4 convertToPK4() 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, From 5293c30766828bd5453e6ce42ca11832f13ce524 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 21 Jul 2016 23:20:10 -0700 Subject: [PATCH 089/184] Continue glue removal PersonalTable.RS exists, no need to have a hard coded ability table. (re)moved some unnecessary stuff. --- PKM/PKM.cs | 2 +- PKM/PKX.cs | 424 +---------------------------------------------------- 2 files changed, 2 insertions(+), 424 deletions(-) diff --git a/PKM/PKM.cs b/PKM/PKM.cs index a49e7df89..b61514a50 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -163,7 +163,7 @@ public byte[] Write() 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 }; } diff --git a/PKM/PKX.cs b/PKM/PKX.cs index b1462a7ae..cee44ee4e 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -30,7 +30,6 @@ internal 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. @@ -181,7 +180,7 @@ internal static bool getIsNicknamed(int species, string nick) try { return SpeciesLang.All(list => list[species].ToUpper() != nick); } catch { return false; } } - internal static PersonalTable Personal = PersonalTable.AO; + internal static readonly PersonalTable Personal = PersonalTable.AO; // Stat Fetching internal static int getMovePP(int move, int ppup) @@ -376,11 +375,6 @@ 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}"; - } // PKX Manipulation internal static readonly byte[][] blockPosition = @@ -469,29 +463,6 @@ 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 getRandomPID(int species, int cg, int origin, int nature, int form) { @@ -1180,399 +1151,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) From da1f7c742672bbca9085279865dc437a5b43dd3c Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 21 Jul 2016 23:49:52 -0700 Subject: [PATCH 090/184] Add movepp tables for 3->6 Split from the PKX table (now removed); since PP differs between gens we have to keep track. Not gonna add a separate binary, just use a reference table. --- Legality/Tables.cs | 18 ++++++++++++++++++ Legality/Tables3.cs | 13 ++++++++++++- Legality/Tables4.cs | 15 +++++++++++++++ Legality/Tables5.cs | 17 +++++++++++++++++ MainWindow/Main.cs | 8 ++++---- MysteryGifts/PGF.cs | 8 ++++---- MysteryGifts/WC6.cs | 8 ++++---- PKM/PK3.cs | 8 ++++---- PKM/PK4.cs | 8 ++++---- PKM/PK5.cs | 8 ++++---- PKM/PKM.cs | 21 +++++++++++++++++++++ PKM/PKX.cs | 45 --------------------------------------------- 12 files changed, 107 insertions(+), 70 deletions(-) diff --git a/Legality/Tables.cs b/Legality/Tables.cs index 84437cf83..a35d21698 100644 --- a/Legality/Tables.cs +++ b/Legality/Tables.cs @@ -929,5 +929,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..cb46e15cd 100644 --- a/Legality/Tables3.cs +++ b/Legality/Tables3.cs @@ -31,6 +31,17 @@ public static partial class Legal 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..5ac132dc5 100644 --- a/Legality/Tables4.cs +++ b/Legality/Tables4.cs @@ -66,5 +66,20 @@ public static partial class Legal 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(); #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/MainWindow/Main.cs b/MainWindow/Main.cs index a5405d9e2..63e9d2f93 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1644,10 +1644,10 @@ private void updateHaXForm(object sender, EventArgs e) } 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) { diff --git a/MysteryGifts/PGF.cs b/MysteryGifts/PGF.cs index 5bccbcc6d..b4cf94520 100644 --- a/MysteryGifts/PGF.cs +++ b/MysteryGifts/PGF.cs @@ -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, @@ -189,6 +185,10 @@ public override PKM convertToPKM(SaveFile SAV) 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; diff --git a/MysteryGifts/WC6.cs b/MysteryGifts/WC6.cs index 6919d0a97..6661f9f3c 100644 --- a/MysteryGifts/WC6.cs +++ b/MysteryGifts/WC6.cs @@ -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, @@ -280,6 +276,10 @@ public override PKM convertToPKM(SaveFile SAV) 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 { diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 12665a083..8a39c0cd0 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -222,10 +222,10 @@ 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, diff --git a/PKM/PK4.cs b/PKM/PK4.cs index 8475aeadf..f7e450e31 100644 --- a/PKM/PK4.cs +++ b/PKM/PK4.cs @@ -380,10 +380,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); diff --git a/PKM/PK5.cs b/PKM/PK5.cs index 267559865..d8a302b1a 100644 --- a/PKM/PK5.cs +++ b/PKM/PK5.cs @@ -370,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; diff --git a/PKM/PKM.cs b/PKM/PKM.cs index b61514a50..3b3f82df9 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -303,5 +303,26 @@ public virtual bool CanHoldItem(ushort[] ValidArray) } 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]; + } } } diff --git a/PKM/PKX.cs b/PKM/PKX.cs index cee44ee4e..5bf11017c 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -183,51 +183,6 @@ internal static bool getIsNicknamed(int species, string nick) internal 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() { byte[] evs = new byte[6]; From 1dd4919adce7af336deb31bde19081060545d6e1 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 22 Jul 2016 00:01:52 -0700 Subject: [PATCH 091/184] Speed up form translation defer layout until after translation --- Util/FormUtil.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Util/FormUtil.cs b/Util/FormUtil.cs index f09b2a867..1916f81e5 100644 --- a/Util/FormUtil.cs +++ b/Util/FormUtil.cs @@ -55,6 +55,7 @@ internal static void TranslateInterface(Control form, string lang) return; // Find control then change display Text. + form.SuspendLayout(); foreach (string str in stringdata) { string[] SplitString = str.Split(new[] { " = " }, StringSplitOptions.None); @@ -72,6 +73,7 @@ internal static void TranslateInterface(Control form, string lang) else if (c is ToolStripItem) (c as ToolStripItem).Text = text; } + form.ResumeLayout(); } private static object FindControl(string name, Control.ControlCollection c) { From a41cb8bae00a638a8675a3f37bd9fea33bc262fd Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 23 Jul 2016 01:04:55 -0700 Subject: [PATCH 092/184] Add advanced search to database Can run certain queries using the same format as BatchEditor Improved property filtering if filter is invalid. --- Subforms/PKM Editors/BatchEditor.cs | 6 ++- Subforms/SAV_Database.Designer.cs | 74 +++++++++++++++++++---------- Subforms/SAV_Database.cs | 37 +++++++++++++++ Util/ReflectUtil.cs | 6 ++- 4 files changed, 96 insertions(+), 27 deletions(-) diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index dce279af6..09a5965af 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -204,7 +204,7 @@ private void tabMain_DragDrop(object sender, DragEventArgs e) } // Utility Methods - private class StringInstruction + public class StringInstruction { public string PropertyName; public string PropertyValue; @@ -222,10 +222,14 @@ private static ModifyResult ProcessPKM(PKM PKM, IEnumerable F 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; } diff --git a/Subforms/SAV_Database.Designer.cs b/Subforms/SAV_Database.Designer.cs index 8c9920e2b..04ab4dbde 100644 --- a/Subforms/SAV_Database.Designer.cs +++ b/Subforms/SAV_Database.Designer.cs @@ -150,10 +150,12 @@ private void InitializeComponent() this.CHK_Shiny = new System.Windows.Forms.CheckBox(); this.TLP_Filters = new System.Windows.Forms.TableLayoutPanel(); this.FLP_Format = new System.Windows.Forms.FlowLayoutPanel(); - this.CB_Format = new System.Windows.Forms.ComboBox(); 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(); + this.Menu_SearchAdvanced = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.bpkx30)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bpkx29)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bpkx28)).BeginInit(); @@ -947,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); @@ -959,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 @@ -968,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 @@ -977,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 @@ -986,7 +989,7 @@ 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_OpenDB @@ -1655,8 +1658,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); @@ -1730,6 +1732,23 @@ private void InitializeComponent() 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 // this.CB_Format.Anchor = System.Windows.Forms.AnchorStyles.Left; @@ -1748,23 +1767,6 @@ private void InitializeComponent() this.CB_Format.TabIndex = 121; this.CB_Format.Visible = false; // - // 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); - // // L_Format // this.L_Format.Anchor = System.Windows.Forms.AnchorStyles.Right; @@ -1789,6 +1791,25 @@ private void InitializeComponent() 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 = ""; + // + // 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); + // // SAV_Database // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -1801,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; @@ -2019,5 +2041,7 @@ private void InitializeComponent() 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/Subforms/SAV_Database.cs b/Subforms/SAV_Database.cs index 7b274db36..f9c0f5b2d 100644 --- a/Subforms/SAV_Database.cs +++ b/Subforms/SAV_Database.cs @@ -306,6 +306,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(); @@ -547,6 +548,36 @@ private void B_Search_Click(object sender, EventArgs e) if (!Menu_SearchLegal.Checked && Menu_SearchIllegal.Checked) // Illegal Only 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) { @@ -639,6 +670,12 @@ private void testUnique() var any = result[0][0]; m_parent.populateFields(any); } + private void Menu_SearchAdvanced_Click(object sender, EventArgs e) + { + if (!Menu_SearchAdvanced.Checked) + { Size = MinimumSize; RTB_Instructions.Clear(); } + else Size = MaximumSize; + } private void Menu_Exit_Click(object sender, EventArgs e) { diff --git a/Util/ReflectUtil.cs b/Util/ReflectUtil.cs index be844a0bc..f90a32dd2 100644 --- a/Util/ReflectUtil.cs +++ b/Util/ReflectUtil.cs @@ -32,7 +32,11 @@ internal static IEnumerable getPropertiesStartWithPrefix(Type type, stri } internal static IEnumerable getPropertiesCanWritePublic(Type type) { - return type.GetProperties().Where(p => p.CanWrite && p.GetSetMethod(/*nonPublic*/ true).IsPublic).Select(p => p.Name); + 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); } } } From 419ed553cba9f181b416ec15bc7549f0725a93ea Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 23 Jul 2016 11:44:37 -0700 Subject: [PATCH 093/184] Add randomization for PID/EC --- Subforms/PKM Editors/BatchEditor.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index 09a5965af..e009576cd 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -17,6 +17,7 @@ public BatchEditor() CB_Format.SelectedIndex = CB_Require.SelectedIndex = 0; } + private const string CONST_RAND = "$rand"; 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(); @@ -243,7 +244,15 @@ private static ModifyResult ProcessPKM(PKM PKM, IEnumerable F ModifyResult result = ModifyResult.Error; foreach (var cmd in Instructions) { - try { ReflectUtil.SetValue(PKM, cmd.PropertyName, cmd.PropertyValue); result = ModifyResult.Modified; } + try + { + if (cmd.PropertyValue == CONST_RAND && (cmd.PropertyName == "PID" || cmd.PropertyName == "EncryptionConstant")) + ReflectUtil.SetValue(PKM, cmd.PropertyName, Util.rnd32().ToString()); + else + ReflectUtil.SetValue(PKM, cmd.PropertyName, cmd.PropertyValue); + + result = ModifyResult.Modified; + } catch { Console.WriteLine($"Unable to set {cmd.PropertyName} to {cmd.PropertyValue}."); } } return result; From 2443ace5f8c7ce60ce0c9defe848adf9bce29261 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 23 Jul 2016 14:16:23 -0700 Subject: [PATCH 094/184] Fix loading past gen formats Mainly from database viewer, also skip annoying MessageBox if loaded from Database. --- MainWindow/Main.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 63e9d2f93..917e03207 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1062,7 +1062,7 @@ 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; @@ -1079,7 +1079,7 @@ public void populateFields(PKM pk, bool focus = true) { string c; pkm = PKMConverter.convertToFormat(pkm, SAV.Generation, out c); - if (pk.Format != pkm.Format) // converted + if (pk.Format != pkm.Format && focus) // converted Util.Alert("Converted File."); } From 945ac79b1f9c3ef16a96b0c8db76455a5ce99058 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 23 Jul 2016 14:55:12 -0700 Subject: [PATCH 095/184] Misc gen3 fixes Fix boolean get/set, fix met location, add gen3 egg gift location --- MainWindow/Main.cs | 2 +- PKM/PK3.cs | 46 +++++++++--------- Resources/text/gen3/text_rsefrlg_00000_en.txt | Bin 6030 -> 6050 bytes 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 917e03207..1dc42c095 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1780,7 +1780,7 @@ private void updateOriginGame(object sender, EventArgs e) 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[] {254, 255}); + met_list = Util.getOffsetCBList(met_list, metRSEFRLG_00000, 00000, new[] {253, 254, 255}); origintrack = "Gen3"; CB_MetLocation.DisplayMember = "Text"; CB_MetLocation.ValueMember = "Value"; diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 8a39c0cd0..faee75223 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -34,7 +34,6 @@ public PK3(byte[] decryptedData = null, string ident = null) 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 & 0x3F; } set { Origins = (ushort)((Origins & ~0x3F) | 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 RibbonCountG3Cool { get { return (int)(RIB0 >> 00) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 00)) | (uint)(value & 7)); } } - public int RibbonCountG3Beauty { get { return (int)(RIB0 >> 03) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 03)) | (uint)(value & 7)); } } - public int RibbonCountG3Cute { get { return (int)(RIB0 >> 06) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 06)) | (uint)(value & 7)); } } - public int RibbonCountG3Smart { get { return (int)(RIB0 >> 09) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 09)) | (uint)(value & 7)); } } - public int RibbonCountG3Tough { get { return (int)(RIB0 >> 12) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 12)) | (uint)(value & 7)); } } - public bool RibbonChampionG3Hoenn { get { return (RIB0 & (1 << 15)) == 1 << 15; } set { RIB0 = (uint)(RIB0 & ~(1 << 15) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonWinning { get { return (RIB0 & (1 << 16)) == 1 << 16; } set { RIB0 = (uint)(RIB0 & ~(1 << 16) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonVictory { get { return (RIB0 & (1 << 17)) == 1 << 17; } set { RIB0 = (uint)(RIB0 & ~(1 << 17) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonArtist { get { return (RIB0 & (1 << 18)) == 1 << 18; } set { RIB0 = (uint)(RIB0 & ~(1 << 18) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonEffort { get { return (RIB0 & (1 << 19)) == 1 << 19; } set { RIB0 = (uint)(RIB0 & ~(1 << 19) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonChampionBattle { get { return (RIB0 & (1 << 20)) == 1 << 20; } set { RIB0 = (uint)(RIB0 & ~(1 << 20) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonChampionRegional { get { return (RIB0 & (1 << 21)) == 1 << 21; } set { RIB0 = (uint)(RIB0 & ~(1 << 21) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonChampionNational { get { return (RIB0 & (1 << 22)) == 1 << 22; } set { RIB0 = (uint)(RIB0 & ~(1 << 22) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonCountry { get { return (RIB0 & (1 << 23)) == 1 << 23; } set { RIB0 = (uint)(RIB0 & ~(1 << 23) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonNational { get { return (RIB0 & (1 << 24)) == 1 << 24; } set { RIB0 = (uint)(RIB0 & ~(1 << 24) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonEarth { get { return (RIB0 & (1 << 25)) == 1 << 25; } set { RIB0 = (uint)(RIB0 & ~(1 << 25) | (uint)(value ? 1 << 0 : 0)); } } - public bool RibbonWorld { 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)); } } + public int RibbonCountG3Beauty { get { return (int)(RIB0 >> 03) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 03)) | (uint)(value & 7)); } } + public int RibbonCountG3Cute { get { return (int)(RIB0 >> 06) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 06)) | (uint)(value & 7)); } } + public int RibbonCountG3Smart { get { return (int)(RIB0 >> 09) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 09)) | (uint)(value & 7)); } } + public int RibbonCountG3Tough { get { return (int)(RIB0 >> 12) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 12)) | (uint)(value & 7)); } } + 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; } } diff --git a/Resources/text/gen3/text_rsefrlg_00000_en.txt b/Resources/text/gen3/text_rsefrlg_00000_en.txt index b58af3a31e22d0301a6e6d0917e65ba16f2856a7..62f73ec941cc553f931a5d8b349dbdfa72d7a5d5 100644 GIT binary patch delta 31 lcmeCvU!=dmO^aF2Q>fy delta 11 ScmZ3a->1L9O?+~cxCa0l1Ow;* From 01a1e61d2fab01ac131e1e92daaa644915b624f2 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 23 Jul 2016 23:18:23 -0700 Subject: [PATCH 096/184] Fix g3 ribboncount set --- PKM/PK3.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PKM/PK3.cs b/PKM/PK3.cs index faee75223..3d812b85d 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -121,11 +121,11 @@ 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 RibbonCountG3Cool { get { return (int)(RIB0 >> 00) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 00)) | (uint)(value & 7)); } } - public int RibbonCountG3Beauty { get { return (int)(RIB0 >> 03) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 03)) | (uint)(value & 7)); } } - public int RibbonCountG3Cute { get { return (int)(RIB0 >> 06) & 7; } set { RIB0 = (uint)((RIB0 & ~(7 << 06)) | (uint)(value & 7)); } } - public int RibbonCountG3Smart { get { return (int)(RIB0 >> 09) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 09)) | (uint)(value & 7)); } } - public int RibbonCountG3Tough { get { return (int)(RIB0 >> 12) & 3; } set { RIB0 = (uint)((RIB0 & ~(7 << 12)) | (uint)(value & 7)); } } + 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)); } } From 794b1478a62512e1b7db72571f752f1c27756c86 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 24 Jul 2016 01:31:02 -0700 Subject: [PATCH 097/184] Minor tweaks no functional change --- Subforms/frmReport.cs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Subforms/frmReport.cs b/Subforms/frmReport.cs index 8fd332e6d..7004595a4 100644 --- a/Subforms/frmReport.cs +++ b/Subforms/frmReport.cs @@ -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); } From 0b95833b743301655600099b09b4e9604619a393 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 24 Jul 2016 15:04:04 -0700 Subject: [PATCH 098/184] Add version diff check BW vs B2W2 will prevent flags Defer layout when adding controls (increase speed). --- Subforms/Save Editors/SAV_EventFlags.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Subforms/Save Editors/SAV_EventFlags.cs b/Subforms/Save Editors/SAV_EventFlags.cs index d1fe152b4..019c57eb3 100644 --- a/Subforms/Save Editors/SAV_EventFlags.cs +++ b/Subforms/Save Editors/SAV_EventFlags.cs @@ -23,11 +23,17 @@ public SAV_EventFlags() for (int i = 0; i < Constants.Length; i++) CB_Stats.Items.Add(i.ToString()); + TLP_Flags.SuspendLayout(); TLP_Flags.Controls.Clear(); + + TLP_Const.SuspendLayout(); 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; @@ -293,8 +299,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 = ""; From cd5ed794bca76856001e041cbf3c568a64822574 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 24 Jul 2016 15:44:44 -0700 Subject: [PATCH 099/184] Mystery Gift editor updates Prevent popup of "USED" prompt when opening the form. Allow QR's for all generations (won't work for injection, just for sharing). Remove ".wc6" from Import/Export buttons (translation file). Importing gift from QR now type checks. --- MysteryGifts/MysteryGift.cs | 17 +++++++++++++++ Resources/text/en/lang_en.txt | 4 ++-- Resources/text/it/lang_it.txt | 4 ++-- Resources/text/ko/lang_ko.txt | 4 ++-- Resources/text/other/lang_pt.txt | 4 ++-- Subforms/Save Editors/SAV_Wondercard.cs | 28 ++++++++++++++----------- 6 files changed, 41 insertions(+), 20 deletions(-) diff --git a/MysteryGifts/MysteryGift.cs b/MysteryGifts/MysteryGift.cs index ae40ce583..cff746126 100644 --- a/MysteryGifts/MysteryGift.cs +++ b/MysteryGifts/MysteryGift.cs @@ -19,6 +19,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/Resources/text/en/lang_en.txt b/Resources/text/en/lang_en.txt index 8e0027e2b..201586f12 100644 --- a/Resources/text/en/lang_en.txt +++ b/Resources/text/en/lang_en.txt @@ -793,8 +793,8 @@ L_Saying5 = 5: ------------------------------------------------------- L_Details = Details: L_Received = Received List: -B_Import = Import .wc6 -B_Output = Output .wc6 +B_Import = .wc6 +B_Output = .wc6 B_Cancel = Cancel B_Save = Save ! End \ No newline at end of file diff --git a/Resources/text/it/lang_it.txt b/Resources/text/it/lang_it.txt index b819c06a5..f59a550c8 100644 --- a/Resources/text/it/lang_it.txt +++ b/Resources/text/it/lang_it.txt @@ -793,8 +793,8 @@ L_Saying5 = 5: ------------------------------------------------------- L_Details = Details: L_Received = Received List: -B_Import = Import .wc6 -B_Output = Output .wc6 +B_Import = .wc6 +B_Output = .wc6 B_Cancel = Cancel B_Save = Save ! End \ No newline at end of file diff --git a/Resources/text/ko/lang_ko.txt b/Resources/text/ko/lang_ko.txt index ae0c6f1c7..25078380f 100644 --- a/Resources/text/ko/lang_ko.txt +++ b/Resources/text/ko/lang_ko.txt @@ -793,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/other/lang_pt.txt b/Resources/text/other/lang_pt.txt index f1983449a..ef08a5fe5 100644 --- a/Resources/text/other/lang_pt.txt +++ b/Resources/text/other/lang_pt.txt @@ -793,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/Subforms/Save Editors/SAV_Wondercard.cs b/Subforms/Save Editors/SAV_Wondercard.cs index d5a17bcac..6dd953b6f 100644 --- a/Subforms/Save Editors/SAV_Wondercard.cs +++ b/Subforms/Save Editors/SAV_Wondercard.cs @@ -86,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?")) @@ -295,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(); } From 3274cdaac720a5193f483e8db8c1a8619d296edd Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 24 Jul 2016 17:52:25 -0700 Subject: [PATCH 100/184] Fix dexlist arg ordering Old code skipped 0th entry, but assigned numbers are off by one. Fun. Take the existing datasource and skip the None entry. --- Subforms/Save Editors/Gen6/SAV_HallOfFame.cs | 51 ++++++++----------- Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs | 2 +- Subforms/Save Editors/Gen6/SAV_PokedexXY.cs | 2 +- 3 files changed, 23 insertions(+), 32 deletions(-) diff --git a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index dcba8b206..fcfebd46c 100644 --- a/Subforms/Save Editors/Gen6/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,24 @@ 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), 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 + 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); + + 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 +111,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); diff --git a/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs index f9deee040..4e035629d 100644 --- a/Subforms/Save Editors/Gen6/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), null); for (int i = 1; i < SAV.MaxSpeciesID + 1; i++) LB_Species.Items.Add(i.ToString("000") + " - " + Main.specieslist[i]); diff --git a/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs b/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs index 1475e5417..bc703fa39 100644 --- a/Subforms/Save Editors/Gen6/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), null); for (int i = 1; i < SAV.MaxSpeciesID + 1; i++) LB_Species.Items.Add(i.ToString("000") + " - " + Main.specieslist[i]); From cc1621879e8d6dc44a8e00e538e590d2f90e44dc Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 24 Jul 2016 21:11:11 -0700 Subject: [PATCH 101/184] Add gen3-5 box wallpapers Put the [BoxWallpaper] fetching into a single class. --- MainWindow/Main.Designer.cs | 2 +- MainWindow/Main.cs | 17 +- PKHeX.csproj | 141 ++ Properties/Resources.Designer.cs | 1248 ++++++++++++++++- Properties/Resources.resx | 528 +++++-- .../box/{box_wp17o.png => ao/box_wp17ao.png} | Bin .../box/{box_wp18o.png => ao/box_wp18ao.png} | Bin .../box/{box_wp19o.png => ao/box_wp19ao.png} | Bin .../box/{box_wp20o.png => ao/box_wp20ao.png} | Bin .../box/{box_wp21o.png => ao/box_wp21ao.png} | Bin .../box/{box_wp22o.png => ao/box_wp22ao.png} | Bin .../box/{box_wp23o.png => ao/box_wp23ao.png} | Bin .../box/{box_wp24o.png => ao/box_wp24ao.png} | Bin Resources/img/box/b2w2/box_wp17b2w2.png | Bin 0 -> 2106 bytes Resources/img/box/b2w2/box_wp18b2w2.png | Bin 0 -> 3308 bytes Resources/img/box/b2w2/box_wp19b2w2.png | Bin 0 -> 2579 bytes Resources/img/box/b2w2/box_wp20b2w2.png | Bin 0 -> 2414 bytes Resources/img/box/b2w2/box_wp21b2w2.png | Bin 0 -> 3681 bytes Resources/img/box/b2w2/box_wp22b2w2.png | Bin 0 -> 3474 bytes Resources/img/box/b2w2/box_wp23b2w2.png | Bin 0 -> 3700 bytes Resources/img/box/b2w2/box_wp24b2w2.png | Bin 0 -> 3827 bytes Resources/img/box/bw/box_wp01bw.png | Bin 0 -> 1347 bytes Resources/img/box/bw/box_wp02bw.png | Bin 0 -> 1002 bytes Resources/img/box/bw/box_wp03bw.png | Bin 0 -> 1901 bytes Resources/img/box/bw/box_wp04bw.png | Bin 0 -> 1300 bytes Resources/img/box/bw/box_wp05bw.png | Bin 0 -> 2339 bytes Resources/img/box/bw/box_wp06bw.png | Bin 0 -> 2020 bytes Resources/img/box/bw/box_wp07bw.png | Bin 0 -> 1567 bytes Resources/img/box/bw/box_wp08bw.png | Bin 0 -> 2318 bytes Resources/img/box/bw/box_wp09bw.png | Bin 0 -> 1078 bytes Resources/img/box/bw/box_wp10bw.png | Bin 0 -> 2020 bytes Resources/img/box/bw/box_wp11bw.png | Bin 0 -> 1623 bytes Resources/img/box/bw/box_wp12bw.png | Bin 0 -> 1401 bytes Resources/img/box/bw/box_wp13bw.png | Bin 0 -> 934 bytes Resources/img/box/bw/box_wp14bw.png | Bin 0 -> 1840 bytes Resources/img/box/bw/box_wp15bw.png | Bin 0 -> 1405 bytes Resources/img/box/bw/box_wp16bw.png | Bin 0 -> 466 bytes Resources/img/box/bw/box_wp17bw.png | Bin 0 -> 3583 bytes Resources/img/box/bw/box_wp18bw.png | Bin 0 -> 3015 bytes Resources/img/box/bw/box_wp19bw.png | Bin 0 -> 1641 bytes Resources/img/box/bw/box_wp20bw.png | Bin 0 -> 2145 bytes Resources/img/box/bw/box_wp21bw.png | Bin 0 -> 3354 bytes Resources/img/box/bw/box_wp22bw.png | Bin 0 -> 2965 bytes Resources/img/box/bw/box_wp23bw.png | Bin 0 -> 2662 bytes Resources/img/box/bw/box_wp24bw.png | Bin 0 -> 2534 bytes Resources/img/box/dp/box_wp01dp.png | Bin 0 -> 1443 bytes Resources/img/box/dp/box_wp02dp.png | Bin 0 -> 1214 bytes Resources/img/box/dp/box_wp03dp.png | Bin 0 -> 2132 bytes Resources/img/box/dp/box_wp04dp.png | Bin 0 -> 1483 bytes Resources/img/box/dp/box_wp05dp.png | Bin 0 -> 2718 bytes Resources/img/box/dp/box_wp06dp.png | Bin 0 -> 2412 bytes Resources/img/box/dp/box_wp07dp.png | Bin 0 -> 1930 bytes Resources/img/box/dp/box_wp08dp.png | Bin 0 -> 2702 bytes Resources/img/box/dp/box_wp09dp.png | Bin 0 -> 1300 bytes Resources/img/box/dp/box_wp10dp.png | Bin 0 -> 2433 bytes Resources/img/box/dp/box_wp11dp.png | Bin 0 -> 1980 bytes Resources/img/box/dp/box_wp12dp.png | Bin 0 -> 1603 bytes Resources/img/box/dp/box_wp13dp.png | Bin 0 -> 1556 bytes Resources/img/box/dp/box_wp14dp.png | Bin 0 -> 1686 bytes Resources/img/box/dp/box_wp15dp.png | Bin 0 -> 1802 bytes Resources/img/box/dp/box_wp16dp.png | Bin 0 -> 2071 bytes Resources/img/box/dp/box_wp17dp.png | Bin 0 -> 1602 bytes Resources/img/box/dp/box_wp18dp.png | Bin 0 -> 2564 bytes Resources/img/box/dp/box_wp19dp.png | Bin 0 -> 2720 bytes Resources/img/box/dp/box_wp20dp.png | Bin 0 -> 1859 bytes Resources/img/box/dp/box_wp21dp.png | Bin 0 -> 3670 bytes Resources/img/box/dp/box_wp22dp.png | Bin 0 -> 3310 bytes Resources/img/box/dp/box_wp23dp.png | Bin 0 -> 3478 bytes Resources/img/box/dp/box_wp24dp.png | Bin 0 -> 2047 bytes Resources/img/box/e/box_wp01e.png | Bin 0 -> 1986 bytes Resources/img/box/e/box_wp02e.png | Bin 0 -> 2139 bytes Resources/img/box/e/box_wp03e.png | Bin 0 -> 2523 bytes Resources/img/box/e/box_wp04e.png | Bin 0 -> 1612 bytes Resources/img/box/e/box_wp05e.png | Bin 0 -> 2438 bytes Resources/img/box/e/box_wp06e.png | Bin 0 -> 1963 bytes Resources/img/box/e/box_wp07e.png | Bin 0 -> 1279 bytes Resources/img/box/e/box_wp08e.png | Bin 0 -> 1625 bytes Resources/img/box/e/box_wp09e.png | Bin 0 -> 1792 bytes Resources/img/box/e/box_wp10e.png | Bin 0 -> 1109 bytes Resources/img/box/e/box_wp11e.png | Bin 0 -> 1160 bytes Resources/img/box/e/box_wp12e.png | Bin 0 -> 1009 bytes Resources/img/box/e/box_wp13e.png | Bin 0 -> 1940 bytes Resources/img/box/e/box_wp14e.png | Bin 0 -> 1832 bytes Resources/img/box/e/box_wp15e.png | Bin 0 -> 893 bytes Resources/img/box/e/box_wp16e.png | Bin 0 -> 937 bytes Resources/img/box/frlg/box_wp13frlg.png | Bin 0 -> 786 bytes Resources/img/box/frlg/box_wp14frlg.png | Bin 0 -> 863 bytes Resources/img/box/frlg/box_wp15frlg.png | Bin 0 -> 1363 bytes Resources/img/box/frlg/box_wp16frlg.png | Bin 0 -> 1006 bytes Resources/img/box/hgss/box_wp17hgss.png | Bin 0 -> 4579 bytes Resources/img/box/hgss/box_wp18hgss.png | Bin 0 -> 4378 bytes Resources/img/box/hgss/box_wp19hgss.png | Bin 0 -> 3164 bytes Resources/img/box/hgss/box_wp20hgss.png | Bin 0 -> 2885 bytes Resources/img/box/hgss/box_wp21hgss.png | Bin 0 -> 3988 bytes Resources/img/box/hgss/box_wp22hgss.png | Bin 0 -> 3845 bytes Resources/img/box/hgss/box_wp23hgss.png | Bin 0 -> 3184 bytes Resources/img/box/hgss/box_wp24hgss.png | Bin 0 -> 1746 bytes Resources/img/box/pt/box_wp17pt.png | Bin 0 -> 4695 bytes Resources/img/box/pt/box_wp18pt.png | Bin 0 -> 2957 bytes Resources/img/box/pt/box_wp19pt.png | Bin 0 -> 3256 bytes Resources/img/box/pt/box_wp20pt.png | Bin 0 -> 2272 bytes Resources/img/box/pt/box_wp21pt.png | Bin 0 -> 4271 bytes Resources/img/box/pt/box_wp22pt.png | Bin 0 -> 3646 bytes Resources/img/box/pt/box_wp23pt.png | Bin 0 -> 3753 bytes Resources/img/box/pt/box_wp24pt.png | Bin 0 -> 3487 bytes Resources/img/box/rs/box_wp01rs.png | Bin 0 -> 1115 bytes Resources/img/box/rs/box_wp02rs.png | Bin 0 -> 1456 bytes Resources/img/box/rs/box_wp03rs.png | Bin 0 -> 2380 bytes Resources/img/box/rs/box_wp04rs.png | Bin 0 -> 1387 bytes Resources/img/box/rs/box_wp05rs.png | Bin 0 -> 2319 bytes Resources/img/box/rs/box_wp06rs.png | Bin 0 -> 2126 bytes Resources/img/box/rs/box_wp07rs.png | Bin 0 -> 1644 bytes Resources/img/box/rs/box_wp08rs.png | Bin 0 -> 1531 bytes Resources/img/box/rs/box_wp09rs.png | Bin 0 -> 2370 bytes Resources/img/box/rs/box_wp10rs.png | Bin 0 -> 2393 bytes Resources/img/box/rs/box_wp11rs.png | Bin 0 -> 1787 bytes Resources/img/box/rs/box_wp12rs.png | Bin 0 -> 1454 bytes Resources/img/box/rs/box_wp13rs.png | Bin 0 -> 2386 bytes Resources/img/box/rs/box_wp14rs.png | Bin 0 -> 1451 bytes Resources/img/box/rs/box_wp15rs.png | Bin 0 -> 1161 bytes Resources/img/box/rs/box_wp16rs.png | Bin 0 -> 558 bytes .../box/{box_wp01.png => xy/box_wp01xy.png} | Bin .../box/{box_wp02.png => xy/box_wp02xy.png} | Bin .../box/{box_wp03.png => xy/box_wp03xy.png} | Bin .../box/{box_wp04.png => xy/box_wp04xy.png} | Bin .../box/{box_wp05.png => xy/box_wp05xy.png} | Bin .../box/{box_wp06.png => xy/box_wp06xy.png} | Bin .../box/{box_wp07.png => xy/box_wp07xy.png} | Bin .../box/{box_wp08.png => xy/box_wp08xy.png} | Bin .../box/{box_wp09.png => xy/box_wp09xy.png} | Bin .../box/{box_wp10.png => xy/box_wp10xy.png} | Bin .../box/{box_wp11.png => xy/box_wp11xy.png} | Bin .../box/{box_wp12.png => xy/box_wp12xy.png} | Bin .../box/{box_wp13.png => xy/box_wp13xy.png} | Bin .../box/{box_wp14.png => xy/box_wp14xy.png} | Bin .../box/{box_wp15.png => xy/box_wp15xy.png} | Bin .../box/{box_wp16.png => xy/box_wp16xy.png} | Bin .../box/{box_wp17.png => xy/box_wp17xy.png} | Bin .../box/{box_wp18.png => xy/box_wp18xy.png} | Bin .../box/{box_wp19.png => xy/box_wp19xy.png} | Bin .../box/{box_wp20.png => xy/box_wp20xy.png} | Bin .../box/{box_wp21.png => xy/box_wp21xy.png} | Bin .../box/{box_wp22.png => xy/box_wp22xy.png} | Bin .../box/{box_wp23.png => xy/box_wp23xy.png} | Bin .../box/{box_wp24.png => xy/box_wp24xy.png} | Bin Saves/BoxWallpaper.cs | 37 + Subforms/SAV_Database.Designer.cs | 22 +- Subforms/Save Editors/Gen6/SAV_BoxLayout.cs | 4 +- 148 files changed, 1809 insertions(+), 190 deletions(-) rename Resources/img/box/{box_wp17o.png => ao/box_wp17ao.png} (100%) rename Resources/img/box/{box_wp18o.png => ao/box_wp18ao.png} (100%) rename Resources/img/box/{box_wp19o.png => ao/box_wp19ao.png} (100%) rename Resources/img/box/{box_wp20o.png => ao/box_wp20ao.png} (100%) rename Resources/img/box/{box_wp21o.png => ao/box_wp21ao.png} (100%) rename Resources/img/box/{box_wp22o.png => ao/box_wp22ao.png} (100%) rename Resources/img/box/{box_wp23o.png => ao/box_wp23ao.png} (100%) rename Resources/img/box/{box_wp24o.png => ao/box_wp24ao.png} (100%) create mode 100644 Resources/img/box/b2w2/box_wp17b2w2.png create mode 100644 Resources/img/box/b2w2/box_wp18b2w2.png create mode 100644 Resources/img/box/b2w2/box_wp19b2w2.png create mode 100644 Resources/img/box/b2w2/box_wp20b2w2.png create mode 100644 Resources/img/box/b2w2/box_wp21b2w2.png create mode 100644 Resources/img/box/b2w2/box_wp22b2w2.png create mode 100644 Resources/img/box/b2w2/box_wp23b2w2.png create mode 100644 Resources/img/box/b2w2/box_wp24b2w2.png create mode 100644 Resources/img/box/bw/box_wp01bw.png create mode 100644 Resources/img/box/bw/box_wp02bw.png create mode 100644 Resources/img/box/bw/box_wp03bw.png create mode 100644 Resources/img/box/bw/box_wp04bw.png create mode 100644 Resources/img/box/bw/box_wp05bw.png create mode 100644 Resources/img/box/bw/box_wp06bw.png create mode 100644 Resources/img/box/bw/box_wp07bw.png create mode 100644 Resources/img/box/bw/box_wp08bw.png create mode 100644 Resources/img/box/bw/box_wp09bw.png create mode 100644 Resources/img/box/bw/box_wp10bw.png create mode 100644 Resources/img/box/bw/box_wp11bw.png create mode 100644 Resources/img/box/bw/box_wp12bw.png create mode 100644 Resources/img/box/bw/box_wp13bw.png create mode 100644 Resources/img/box/bw/box_wp14bw.png create mode 100644 Resources/img/box/bw/box_wp15bw.png create mode 100644 Resources/img/box/bw/box_wp16bw.png create mode 100644 Resources/img/box/bw/box_wp17bw.png create mode 100644 Resources/img/box/bw/box_wp18bw.png create mode 100644 Resources/img/box/bw/box_wp19bw.png create mode 100644 Resources/img/box/bw/box_wp20bw.png create mode 100644 Resources/img/box/bw/box_wp21bw.png create mode 100644 Resources/img/box/bw/box_wp22bw.png create mode 100644 Resources/img/box/bw/box_wp23bw.png create mode 100644 Resources/img/box/bw/box_wp24bw.png create mode 100644 Resources/img/box/dp/box_wp01dp.png create mode 100644 Resources/img/box/dp/box_wp02dp.png create mode 100644 Resources/img/box/dp/box_wp03dp.png create mode 100644 Resources/img/box/dp/box_wp04dp.png create mode 100644 Resources/img/box/dp/box_wp05dp.png create mode 100644 Resources/img/box/dp/box_wp06dp.png create mode 100644 Resources/img/box/dp/box_wp07dp.png create mode 100644 Resources/img/box/dp/box_wp08dp.png create mode 100644 Resources/img/box/dp/box_wp09dp.png create mode 100644 Resources/img/box/dp/box_wp10dp.png create mode 100644 Resources/img/box/dp/box_wp11dp.png create mode 100644 Resources/img/box/dp/box_wp12dp.png create mode 100644 Resources/img/box/dp/box_wp13dp.png create mode 100644 Resources/img/box/dp/box_wp14dp.png create mode 100644 Resources/img/box/dp/box_wp15dp.png create mode 100644 Resources/img/box/dp/box_wp16dp.png create mode 100644 Resources/img/box/dp/box_wp17dp.png create mode 100644 Resources/img/box/dp/box_wp18dp.png create mode 100644 Resources/img/box/dp/box_wp19dp.png create mode 100644 Resources/img/box/dp/box_wp20dp.png create mode 100644 Resources/img/box/dp/box_wp21dp.png create mode 100644 Resources/img/box/dp/box_wp22dp.png create mode 100644 Resources/img/box/dp/box_wp23dp.png create mode 100644 Resources/img/box/dp/box_wp24dp.png create mode 100644 Resources/img/box/e/box_wp01e.png create mode 100644 Resources/img/box/e/box_wp02e.png create mode 100644 Resources/img/box/e/box_wp03e.png create mode 100644 Resources/img/box/e/box_wp04e.png create mode 100644 Resources/img/box/e/box_wp05e.png create mode 100644 Resources/img/box/e/box_wp06e.png create mode 100644 Resources/img/box/e/box_wp07e.png create mode 100644 Resources/img/box/e/box_wp08e.png create mode 100644 Resources/img/box/e/box_wp09e.png create mode 100644 Resources/img/box/e/box_wp10e.png create mode 100644 Resources/img/box/e/box_wp11e.png create mode 100644 Resources/img/box/e/box_wp12e.png create mode 100644 Resources/img/box/e/box_wp13e.png create mode 100644 Resources/img/box/e/box_wp14e.png create mode 100644 Resources/img/box/e/box_wp15e.png create mode 100644 Resources/img/box/e/box_wp16e.png create mode 100644 Resources/img/box/frlg/box_wp13frlg.png create mode 100644 Resources/img/box/frlg/box_wp14frlg.png create mode 100644 Resources/img/box/frlg/box_wp15frlg.png create mode 100644 Resources/img/box/frlg/box_wp16frlg.png create mode 100644 Resources/img/box/hgss/box_wp17hgss.png create mode 100644 Resources/img/box/hgss/box_wp18hgss.png create mode 100644 Resources/img/box/hgss/box_wp19hgss.png create mode 100644 Resources/img/box/hgss/box_wp20hgss.png create mode 100644 Resources/img/box/hgss/box_wp21hgss.png create mode 100644 Resources/img/box/hgss/box_wp22hgss.png create mode 100644 Resources/img/box/hgss/box_wp23hgss.png create mode 100644 Resources/img/box/hgss/box_wp24hgss.png create mode 100644 Resources/img/box/pt/box_wp17pt.png create mode 100644 Resources/img/box/pt/box_wp18pt.png create mode 100644 Resources/img/box/pt/box_wp19pt.png create mode 100644 Resources/img/box/pt/box_wp20pt.png create mode 100644 Resources/img/box/pt/box_wp21pt.png create mode 100644 Resources/img/box/pt/box_wp22pt.png create mode 100644 Resources/img/box/pt/box_wp23pt.png create mode 100644 Resources/img/box/pt/box_wp24pt.png create mode 100644 Resources/img/box/rs/box_wp01rs.png create mode 100644 Resources/img/box/rs/box_wp02rs.png create mode 100644 Resources/img/box/rs/box_wp03rs.png create mode 100644 Resources/img/box/rs/box_wp04rs.png create mode 100644 Resources/img/box/rs/box_wp05rs.png create mode 100644 Resources/img/box/rs/box_wp06rs.png create mode 100644 Resources/img/box/rs/box_wp07rs.png create mode 100644 Resources/img/box/rs/box_wp08rs.png create mode 100644 Resources/img/box/rs/box_wp09rs.png create mode 100644 Resources/img/box/rs/box_wp10rs.png create mode 100644 Resources/img/box/rs/box_wp11rs.png create mode 100644 Resources/img/box/rs/box_wp12rs.png create mode 100644 Resources/img/box/rs/box_wp13rs.png create mode 100644 Resources/img/box/rs/box_wp14rs.png create mode 100644 Resources/img/box/rs/box_wp15rs.png create mode 100644 Resources/img/box/rs/box_wp16rs.png rename Resources/img/box/{box_wp01.png => xy/box_wp01xy.png} (100%) rename Resources/img/box/{box_wp02.png => xy/box_wp02xy.png} (100%) rename Resources/img/box/{box_wp03.png => xy/box_wp03xy.png} (100%) rename Resources/img/box/{box_wp04.png => xy/box_wp04xy.png} (100%) rename Resources/img/box/{box_wp05.png => xy/box_wp05xy.png} (100%) rename Resources/img/box/{box_wp06.png => xy/box_wp06xy.png} (100%) rename Resources/img/box/{box_wp07.png => xy/box_wp07xy.png} (100%) rename Resources/img/box/{box_wp08.png => xy/box_wp08xy.png} (100%) rename Resources/img/box/{box_wp09.png => xy/box_wp09xy.png} (100%) rename Resources/img/box/{box_wp10.png => xy/box_wp10xy.png} (100%) rename Resources/img/box/{box_wp11.png => xy/box_wp11xy.png} (100%) rename Resources/img/box/{box_wp12.png => xy/box_wp12xy.png} (100%) rename Resources/img/box/{box_wp13.png => xy/box_wp13xy.png} (100%) rename Resources/img/box/{box_wp14.png => xy/box_wp14xy.png} (100%) rename Resources/img/box/{box_wp15.png => xy/box_wp15xy.png} (100%) rename Resources/img/box/{box_wp16.png => xy/box_wp16xy.png} (100%) rename Resources/img/box/{box_wp17.png => xy/box_wp17xy.png} (100%) rename Resources/img/box/{box_wp18.png => xy/box_wp18xy.png} (100%) rename Resources/img/box/{box_wp19.png => xy/box_wp19xy.png} (100%) rename Resources/img/box/{box_wp20.png => xy/box_wp20xy.png} (100%) rename Resources/img/box/{box_wp21.png => xy/box_wp21xy.png} (100%) rename Resources/img/box/{box_wp22.png => xy/box_wp22xy.png} (100%) rename Resources/img/box/{box_wp23.png => xy/box_wp23xy.png} (100%) rename Resources/img/box/{box_wp24.png => xy/box_wp24xy.png} (100%) create mode 100644 Saves/BoxWallpaper.cs diff --git a/MainWindow/Main.Designer.cs b/MainWindow/Main.Designer.cs index e34d12b1d..71725ea01 100644 --- a/MainWindow/Main.Designer.cs +++ b/MainWindow/Main.Designer.cs @@ -3022,7 +3022,7 @@ public 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.bpkx30); this.PAN_Box.Controls.Add(this.bpkx29); diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 1dc42c095..244469839 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -2778,21 +2778,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]); diff --git a/PKHeX.csproj b/PKHeX.csproj index 639f5f1f5..282ffe131 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -113,6 +113,7 @@ QR.cs + @@ -556,6 +557,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index f25c54622..131bc6ca5 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -9313,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)); } } @@ -9323,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)); } } @@ -9333,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)); } } @@ -9343,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)); } } @@ -9353,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)); } } @@ -9363,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)); } } @@ -9373,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)); } } @@ -9383,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)); } } @@ -9393,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)); } } @@ -9403,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)); } } @@ -9413,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)); } } @@ -9423,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)); } } @@ -9433,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)); } } @@ -9443,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)); } } @@ -9453,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)); } } @@ -9463,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)); } } @@ -9473,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)); } } @@ -9483,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)); } } @@ -9493,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)); } } @@ -9503,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)); } } @@ -9513,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)); } } @@ -9523,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)); } } @@ -9533,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)); } } @@ -9543,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)); } } @@ -9553,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)); } } @@ -9563,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)); } } @@ -9573,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)); } } @@ -9583,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)); } } @@ -9593,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)); } } @@ -9603,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)); } } @@ -9613,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)); } } @@ -9623,9 +9623,1089 @@ 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)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap box_wp07e { + get { + 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)); } } @@ -15570,6 +16650,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. /// @@ -15580,6 +16670,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. /// @@ -15590,6 +16690,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. /// @@ -15600,6 +16710,16 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap slotView1 { + get { + object obj = ResourceManager.GetObject("slotView1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized string similar to Subregion ID,JP,EN,FR,DE,IT,ES,ZH,KO ///000,—,—,—,—,—,—,—,— diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 7e1d76c9a..da26da620 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -2830,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 @@ -4204,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 @@ -6046,4 +5950,436 @@ ..\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 + \ No newline at end of file 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 0000000000000000000000000000000000000000..8c9904c324f41a3e777c65e9b4be5b0defcc06bb GIT binary patch literal 2106 zcmeHH{WsGK7$2L+npVq8EZ6FKjcuCONSK#t6p|cL&ERAhhwbWbU%){FG_a^v%l4LP&S5qd@r&p-KqcB+PQdoU*F-V zio&u2n6J|ORpphLxtPIlgtWRRNzj6-Ll*T#R3t47Ew*vVshN*IcDxFd;c)Dhvkw7B zbMVM9Ov40m6V^){q#b~R-=4nXF&R8W=8FRd+B<4R^71`Pl#-ck*SO_Sjk|#ZS$1*I z!rYWzcn&hVsa#+rO$S6f3Yj|CnC;?_+&LR6L}JIq1kS+KU#b5F=hhhvq%$a9bbScQ zmduRAKj)i{;;dXBfW{%*OmnA%LDTa_SS`7P`JMp`2n~1_9k7&HRAB^YO8Ky!vT2YQ zuH(zjhVx>3)VxIt!8<7%Ksb`Ebf`{*6|1gse2i-f{@aMWDUZO%7}PK6>=A8I&>AOG zEPFa>K;-=yNp{dx?KPef4zSd}TG9L78ZhT_N*^b@{0vf1FywFyZw0Bv|JYJ*ilU!2 z?mhfAHr3sTr%AegMvk=?_D8+Q7VYogB?On?F$vI_u(N`pm(=Pzl(fW{g0jLQfT>0V$ zG%x#nX#r`zR4`*xQILY>vx{oGma3M|0xOBHoER!vr@1jA-^=vPAo-DpCn_r%2)W zFHN-(O=qv8D_Ug{_lL94sXYdfsh#jGU5nyIsy^U;)RyLz7q8&?%K8r`+vZDe literal 0 HcmV?d00001 diff --git a/Resources/img/box/b2w2/box_wp18b2w2.png b/Resources/img/box/b2w2/box_wp18b2w2.png new file mode 100644 index 0000000000000000000000000000000000000000..ef9de9670ac027f7a5d1b147efc105e1fd3a3bfc GIT binary patch literal 3308 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 C{Uc`p literal 0 HcmV?d00001 diff --git a/Resources/img/box/b2w2/box_wp19b2w2.png b/Resources/img/box/b2w2/box_wp19b2w2.png new file mode 100644 index 0000000000000000000000000000000000000000..cd136dc34e9e3ca765ff2971aa4738c7a183f6d2 GIT binary patch literal 2579 zcmeHI`#;l*8=uR}(5c*NqqEV%36o5|6PmFWiMs$QRw{av+Hq=>a zL>fXAlcFJ%7P-{E#lCLKoI2~f^KX1#=Xt%}&-;13pXdF<^ZfE$BY6rHb94mx#WXL7*Rc|ACU8*(th0+#Qei zi9Zt?8J`#eM1U@ZT%g9IsS)u=4Eg{XOR-7w0D;u9U7Q@xCIu~5Ui12VWCzH|0J-!% zePvi!?ED~nF!y%o?RY(I-(^g5Nss@#pw6V7N#CD-1NdJx5T-`UhUuOKEK}sFE_!oE zysdp&dU^~27CFFgmp(L^jCL>#lP}0N7wW@l^IgNy-w=WuC#M@v{B9lfGJ9Lypab>To9{${S53n$Tsn0?3lSVl*{hW z8u272ERa0OSfQ&m%zUi0q)ejKt)6(wGDH7rAcLIDA9xX}9ORq`GxnXG<<^gDM~8?d z+n`fJBB#Qnr(90v(Iem0Yn~Ur2dmbxa60&Lst(X*u&Qwm7f4uC^$t9i>^uzLt8|gS z)Qije!<%${WDn?X zE?|Xh+)2sUcyoZ?ukrFNdfDIGEeYOQ9%<{h;C3o}`9=3bX<_Tn*x=S7g!I<_=FkJr zu2Wx4VN36Se4LlnPJf|R_zsub`)spO=|yPR?je5AEzK>Sag74+XKM`?FX$Wem zZilAq?`_m#2J@bixd6)GCRObwT~g_h4L0>TGqFOw85ip9aeVwiDvj0^gHxJupK_MM zT2O>P*&Q9u(#z#Dgn#1@9E&36AVj4P53kL5Ke#4DUr+A^d8!H8Meo6{;3_xW{ zKAp&mxRW!fah9POwYc$GQ_T1=6$})aE)reE=#%3ygOu)rtN=0|H{X-{_QQsWQR{ea zR)0pdp$kkDaX>7%cOJ5X=y%#Iub|h#1)igO8%Nn zw?Gm7RZqOqWg%y99s)cKnAs)3OWOQYY%{hIdWl2~`9{%RBi?Ii$A(;9kU_6_%t9LJ z!@&tJFu@_jo?rNDl$m8KuRvvP{(t>W5LYygN`0RgGwJnjzc{EPSpM@seS-sH`**>w zQ&HYtc|i8YZZ!)nXhqq2?47G0GWq< zqWW}p%cE0hTkq`Aqg<%m(1&!S-Qf(Njj@ax(18=MRLc;`ocJKJ zw^p7MH9FV;aGSdv`{k)nGrijC0deAEXGDw}*r(hEhuTu}&zwohNKgn4l*MCLW$4=x zP?UWi&AjExVH1&W3EPPKsIs>%^%5l3t@(bDtF_7}>Vjl;?NFx*W6+khuyL*;OhCcq zh^B>K4=@HXWWM(09D%jn*)!@Teb-C#^vV|wa`xcF%<&3LU2&eZ4%0SkMTu|i+uLr4 zJ;MZuRJQ^o@Wsz-X${43JNZVJBlzuQu_3epnV_t_AB$!f$uXQlqcq0?@jf%_%;<%U z|BQ(?g1->HV&Bb8_Isuxt{pcej5@Bb?*1%wp1c1xgjYD={&Bz)0kcmFx~rR>mY;B) zJ+P1OxH2~KhF10IBfy?4$_~(~v-430D6LIB2>RMZOt3{mdAf#Q%gZ6-&AcrUU=`F! c?0ob$gh8)}IJ|m*^v{=e!FxE}#RX^n4;xW)&Hw-a literal 0 HcmV?d00001 diff --git a/Resources/img/box/b2w2/box_wp20b2w2.png b/Resources/img/box/b2w2/box_wp20b2w2.png new file mode 100644 index 0000000000000000000000000000000000000000..f45fa34b60e73a2d5c0c8c8a203b6e936e17179d GIT binary patch literal 2414 zcmeH|`#al*7sn&0N=d1xqFT1aOzN_^)Fo3?iy#Yvkh!)|jo^c5)iBJZz9`$;Nh8c{ zE)7bEA}*nVnq+h?30iTtxU{vpG>T>a#`oEIp7(h_&pFTe;kE! zvy+2|#Ay=6oRpU2AN8E_Bqnpq&dm-4YRW(LF<2G^k_KU1vDYxAYq**<3WZWrQ`5+Q z%fEl0Ur@jwDp(WN3=IvfvDs^DqmtSG;y(iamjvWO?8YUF$pcQlu^Y-93 z#dG9qII?F{DEV%13;_fL-;N|3MiR){riR9bmL!v8GzcUsbat@A#s_Q`eg9p#u~Is| z3sN$7eDHc><1-lrN+9mI%`$@kUovQR4oliv7x#)2+kRh8Zhxz!bF()|{!y2aPQ`$d ze+I@kfPYng0R%nx{ki!O0~wGH$C}fcdEQz1)pc>dVT|GkK;gk*^yj4gS(6K*dRGg( zH=ggTxaBdDp40D| z@T1tcJ(uC4ODhtR-q1R4Ue|feN8BhQ>@+~T5U0OpksC(Ro=Y`h&w)#{XO#Ui4Hhhu z%Lag2W0{eJ0sABHCs&cNRT4chSCWzg`{|Y>Ok> zK5a$Pw)Q_*ZNsb-BPWlXjQBiyyYIoLmNVVFw4xQ~vF?DTV(-|$KMqg%l-T#2@L}IU zbKPuBv@F+2gH}@Ln}*9J*uFd0xfutc)Q2-Q{hn(NsYSG?X*&eL`gV!5`kZx4>y*{0 zNQQe^MLkNud%Vid*hF(4B|wV7w{ZJ~#Ug$F^~qV8dqJ7gE-L;X*-IpXhV1I13OLh; z_QdcI^dwl*D^^*`9vS_C!S;mdHx77)DSSH|^m1Ax=k5ugDW!V8u_I$=usrXECZLX< zeM71bEnoXnge$l9E==_k?kC95rQ5nhWJV^tc3r7I1b?QSenZnUcHw^}+aiyCHL^oJB_9E?-eunilLtt>JWJ^q9HowA|BhMCx_SykmDP$c{n`eT%2UaUPgY<1mB0R0~ZIb}r z;_~+ntEA)**?_`&ga$HeW6Zbqi%OKs)8-X2qOD~b*7v*~T(r`;?LLN&HCD;&sEAK? z8MvjShB!s~qx~uF5HNfxki8t={lE{Ku`Fuwg6yn35L~8OP!t3ty;r^J7$UivwbC?G1w_= zuEHE27*Es?67gKsMz6%f)~CAo;>|=RyDO)@Yz2kXs=PE?20e=60P=bn2Nsgsp*nBl zo$@D;D;{%!X>9J64wI4i8TPe#IWj zhAqi16#sMi!n(ZUo2yx>!1cnOA>ZKL?1huis7>DKaG~v>H!&$$kH*}c=Z{jm;V_<` kBk<-SFbSR=6eS$WZA}G?ivw|$|9(H`YiNfC`=GRc0Dem~AOHXW literal 0 HcmV?d00001 diff --git a/Resources/img/box/b2w2/box_wp21b2w2.png b/Resources/img/box/b2w2/box_wp21b2w2.png new file mode 100644 index 0000000000000000000000000000000000000000..822ea66ae3b72595b68b98739229365bf3ac7631 GIT binary patch literal 3681 zcmeHJ`8yMiAD=X5mfIR5bTBM2HABcX*J$J8_)P9A%$muO+(*SCw_N3DL_%`aoFQin zxfwpos8AFlef9Y>zR&0VJn#4GdEU?adcA&n-?PLR@$o=-0001=F+4ztUmwi5XD_aCB2MU--|D{hrdFa`Z$X^m@P=gP zWTyLSvgQ=y+Yjvzza`ge6%?U$5we|KZpB48Gp+Pf_>oGbQu=R+&!!n$Lxsf}F$#~G zN=eJfBl&G2gVQegG0g{&7zSi;)@9sQ+c@Z$4ZKQf>c%f@c}NGdkOED0;0LeRc3QaRZFIc87*w4_;bca59VNH@`gV88WLbE2W4 zBB_p6bT{SZgT?zE-hx^@l%>qG*z66lxd_$o*^)poBEZ!DN#K>qOv`L2a6!&>c0F1g z5x~1rf-0V|$LMP}ABI06kvWE))`&^V70eOcZG(BUdK*}e2rH#3t}{~GHN1%2JjZE+ zz{R|{x&B!1z2{fLuE92&2=7i9lLe6w8cVs3t#j16Eb(@uh_{g2?e-JWFW?zNRd*L(_A{=L@%5sorG8Q{@pzZC>FM30&ggst90aAbKuJ*l!0{W+?QWRWg ztu<-hizF>-1q*UZ&-f#FQP3&9-p+PCSHn~HuJ**y=u;N52hrZM7X>kqDuR#EcN)Qn3&Fb zrpcMHK#N;zEo*+M$cbcll=~c;jXtdldq%V5?*f6B#x6e=D5U!L-|m;Qmif(I$UE0THEvcjL6#`+L!^t(>5B7$9DIb(S~~5`bmdr1ZCr|x z*e8Y)-#H_WwALyC*>0{xA16EeI_1V*XX}gBThXECUe=SB!K?j;dCqU2b2sV~1)0u>Du9&(`ohw>@da0GWbj(g`FZ5Z(#522 zUGpEz{g?Xvu%eRU26$HPTBlwj>0{`H+2@6@aPOI@>oRWvhQQ(mme=sJ*2WrWD_eGWO#)Ah&C8O#e^ zL5-N}4JGkoDISf=uxBE#>xoM_Gm4(2KlZjEE(zd^w9|4x7BROYL~Kyx{8;&Hy-bYJ z?J)8tti(HEnTqJ-o3Tf3EJS^>BJA_r*LqVOTzNg84eoYyAO%>$Id zafrII`!3@V%N`&?V=>8*Te9Sd{i<67!WC{M7i^0XQ>h%ZSR!&(1vK4}MsB|zeCFDv zPqQTdb&RyQUC|Uk=y%Y zAI;&4+4=gD5Jb)Pqv$(q8L7SVt}tuQ#jw*xJEvLrmp;!^m*Sh zagR}#&yxwC+BmQ{EG0OjTd7WhL{h{FKc|Gh|D*mx((>4n&m=o>ihY zcLe^qN=bXiBNYgG!u}u)BzD-eZ?vu+YkdGk)+BlQ4B&($uI9}LSlnA|8?6Py<;L10 z!+nPMgk#Kz#>^ijTnRmzbbd_JCmBV@eUpUIw9sgAJmIK%S5UY46vigNOBn6k`KtXQ zpmFnRJ5z58xQAUZ*QQMjKK{U>; zOyX=e?ak%t8l#BkYL|XJ&r^RK-G6mT-7}Mb`y!Cb@;Yp}G|6wB;Zy+flng_Fm#t<}TYk~gNJHI3$wH?iZ*5{DgGT;IKm45 zr8XAdx>UL@IEoFb?RYsyI;d8&ge^?K9KR$VAKw4|Q&P`F-v95$29{~}vyN-GGj8h( zs7;Dv=!QZ<71)a*}DEFWf@X`{>SSWt_= zoI_v5JAv`Y^4pQ_MNIJZO=jlgG=pPG&zGHWtx_Sk#i0EXQFB-0ea;6*RNZLs%)fJg zW2Kri-wmQ;)2NkF*ihzt$)+#GMy4wTpByK8D5GeH*?;V$kxub}I!5*Usp0c#JZ>DSU|ifLhB+ hA#w+;k(z!Tp1imjG2$wj8vWL`= literal 0 HcmV?d00001 diff --git a/Resources/img/box/b2w2/box_wp22b2w2.png b/Resources/img/box/b2w2/box_wp22b2w2.png new file mode 100644 index 0000000000000000000000000000000000000000..d455de3c6eb4424957657076c4e0c37c17a387df GIT binary patch literal 3474 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 literal 0 HcmV?d00001 diff --git a/Resources/img/box/b2w2/box_wp23b2w2.png b/Resources/img/box/b2w2/box_wp23b2w2.png new file mode 100644 index 0000000000000000000000000000000000000000..3b70fd5871d04a9111824996d7fe6553409f01f5 GIT binary patch literal 3700 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 literal 0 HcmV?d00001 diff --git a/Resources/img/box/b2w2/box_wp24b2w2.png b/Resources/img/box/b2w2/box_wp24b2w2.png new file mode 100644 index 0000000000000000000000000000000000000000..850b528959b30f5f52d6d6fcca21f55e4dabbdeb GIT binary patch literal 3827 zcmeHK`8U*y8y-ovhLGhl%GTHirOYHmV;M4}&|pMLvV54&*tctEl6^^8E-4I}Ff;~< zTQbJJM4I6yV@V9sjl%8g{u|$OpL3q~Iq!4M`@{SE@SgLM?6HTi`$E@s+T@MP^)rEv- zL(*y>t?wZt%UxDh3KF2cCdmzLKlJZKNE|EK!k5&(5BbI-3N=mM6!@a(c>0)R^RTc z^`WCFDiLR=+y7NALw$66A%<-fhzr{%Cj zq7|2b!}AW@cN2O9gRld4jl-q}l?0k@3w6SKC%HvFpqe(g`(~{a^Uaq54Ha=Gs;4qE zmNNMOP3b$2uP(JFvo(tmN4)`Qu=t8s?|QYIbK=E}HKk~tb8KTmp%=0xFa}-s;VBg+;k*_e9eakbrj%io_d5CWxkQ9?>INZx z!v$<)_G$O^Y`WUa*6Y^e^+q@)F?p@`g$r_y?Rtgow&kHc}ku=dvZtM9HCODIWoJzY#q5~2tT;rfs_8%lIjuM9E$)jS>eZos zPgb|~4G|nyyKGlaawF(@LqKQVmj{gO*MCFQWxj5cU~lr_UF@02-5$B(1eM8Z0s1rS>)w7##p>EapQyVNM`=ux|qGr8`88P$>rt?k{wXwO` z%Nz5D`Owt_jis@s+PV_{pFEiuijIc2y!y|32c4idYS=1;?>WEp1DY zs>rv8LyIx@_k6R`F7er2?=EzeA~xh*)wAl=FyflOj^PxnZSof2UGJ8&6QSx1~kxYWU`dngy)u%Xz6sB9-=60rzC|0{( zsp>O zX`*=yP|W8I-sPcN49xL~(LU3SCU$b^pJ(!^%FxqOQHydsMrcCe6us(*L8`3I zjbnE}p*4c=%yeV>%EW-o{dy_nL^)r6W9+%g z<@;W7G-5rWb1sFo_RkMew5biU&?|%zo$dy zwOzmxe9DsHa14b$`>=H?!@T7;ACg~`LxXv)M0F&0%SbnzxMeI0@Tebqt{s=oVnYt zmqje*bit$cMnu?k7E9>|Rbdj_2W#igR*(Yj6;;|x_N^&Os)njVU^`EkGVsE5F7|24tV%Cm zR5P)s(S0dhZmYBp`f@|a;w#%H@z1;P_c583ic9yp^Uq%nLsaXy*UB}N75fJz<|k`C zps|tT9@eEpAFm-C?vUf(2IoO#Tg$Ts%bbDy`Hx$t?62OThqgq9i+P8>4j+xzG;7}v zNE-MI$@dGLlLB|h&u(PTi@f;l-8pKEHo;}e&h7a5I*qXBk%j5S+s*ZFoRYF8pSk1| zpG%ZGz84~(^TAw%M9}omME?+{RZvymd}iH97x)%N^0!N&dO$xJEFe!g+;sQ@&fnhp zq?^R{dR3JN`v5gEC@Rl&e<$Pn)4h*V`gY<22vV_#Z?)Xr+nr(EdZi>sbNqt1#M!U{7kbYn{W&ck0dM^ zUCo1m$3Q)UzWoh?Si}j^3K#-ds_giRL!zUUM zT+v6hN*eyflA=f4%J>{{R>6JdI0)!}948jP%1-}#NEve+oD4u+>yY_u+ zFTT7&kGmkqgKBPZL8)Ip(vAb#RTNS({UtsJ7!wk9Xb551t}KCgUU#v4T>z7R4>#0k z6lu6p@v!rs^$w(y!Fi1QLU?NV{ojKjW>Bwob^Dc0rQY)UW@_hNdTB}v7c89E zQzo4_3`?tiv}PYKkK?=$9=kuS(AQJ6+Fj=Xv)$Gj-S*4#BhM4#ZjSnvXxmlo=b*j2 za*lpo5I;y{V-&^8U<5XK3D5A+RlhxG{eFqYF5;!vTree z)P?8`v85}mt}Fe#MjxzgYAa~_EiIp5tW=khscNWz0*J*ub^&BLt8v5H62CL`lbsH; zaWjkTq$gT4UGX9dBN`>k9=q-~?tXUV$he=eW biv1q*&4&eH|GXHuiJ>Nn{1`ISV`@ ziy0XB4uLSEsD@VqP*9@8HKHUqKdq!Zu_%?HATcwqL@zJ3M8QPQK+iJAxXuq~&OuKX z$B>G+w=)j*-Z9{D4SqLm!ehDOGls`?l~tFtOqpP`NXMAT^J4sw1B;FwW0&h`{P-jF zf%B&W@%!rbOq~63{gwRv_nhng{Jghb@ws7Tx*B_v^3JrYq)4nPOgu z{F<@U&bxQ#7WpYs=b8h4xtq6E*+*+N*e$zve%h@1cJ43MU+Y$dc)r=0$M|dgGxnuz zFBHV3oa8rOIX`XHNt>27yJsc!L95O@4`159@?-i^zWIv{z8IR?d7IujJb!9bQOpJV zN0#@etZM%n|72pJ;jdYH_vwD!c=jm6&UXq*&4&eH|GXHuiJ>Nn{1`ISV`@ ziy0XB4uLSEsD@VqP*9@8HKHUqKdq!Zu_%?HATcwqL@zJ3M8QPQK+iJAxXzD(fjPs| z#WAEJ?(MXLymu``n1lc6tE%R3Mu*K)Im9K;B){ia|Jk{gfh=!N-)N|-v70|%z=hK_ zOG@qQe0#_J6@mR%{2V|yKS;4z_v`)p8ONI^$KCHdT=(&8ZR!%fN#CYUwDPzWelJLo zZL-$&bDrzpA6Xdx=cwGuxeXwEZ;2CI^s2f8p0ZExW^QKw)~)_VTe)yw}Mo4A(3vvBd6K`?80AXLPlnqN?eKJ|Oc#m~%*@3#kP2oj(HT%Vio39)c|K@eB z_x<&xya`r64#l0^`SEYmnX_;+#H;>V10A3~m)kbT+Wgz4r*pnkUD|m;d24a9ek?>{ zuV*XIwvbwb$yTR!Uru9xBkq4A-0hV@X1wIe<|VaHbw!g5R(^VSK|k(_@>XG>PT>o) zLrx@kUwxVx&*l1YSrh*zGpw&QwY%l34-k*9S4`3+WlF)y0#i@(f>r0a0`|H zv!w6SyDc{ve;*Zwh8Wn|O7B()pH+LTzjTX#^?1wj1%%Z^jcx>$R?fN-cyF$mb;ACN zL;H+^*gb!r@{m<|tDV16pxJY3d3)W*MW|t{=TEMu8vZ`wgqjYHnmtRMc+^7g$^JUp zUA3f)35+LmN#?BFW#juwpIzxI1-@Xl4 zqI4T144wDyxbXUZp_u%iZNg@uUFphq6NPBN_|x_Y1%L&2WYO%DAVsKSQ&SJte-iML%wGe`8jj zYbOzvirw<5l}|e0&VOVw-rhLdO9;5@t_ds`<;!gi*hQP#$W+*)S~;Zrf!XkO*^f`O z&?@H}%+-VU$h7#^gNVrCp`^Mm?ZZgFID00!8M^R_)V`jLeA^5P`pr4^sy;*p9es2s z84C2IcX`L}++aDpX?g4JJ+o66i^Z+CIdfZ7t!k#CUgX07ixQ4~ep!Js<>lyjR;TV+ z;=?^NhlR!xK3`F^xcV%;bMCbs5E5_n-0(V8XLk*+!&|vNQJ|Y_d(`*1#RE3*P(uf~ z=(8ewYnt>sGSf%9FT;#|VjdA~=gi-~AK`(``l}+2>^5_ba$&Kx^0BJg`z+OVYQ|qf zj*bR0I-ZW8Q4WsiPgg?00`{R{1^~D{U6LgG{y|%{o^n^sA$;+0Fd*d}RHZ0~4>TGo zI_WEy1w(hRgqy;h&*(b+Bv%m)km0@X34^nGxGf-&@5_^|ON{aOI};tN?$KJDJbBm* z`r-kf8SW)({IJGvltL53SkzW#x>hS;z-l^`mk~odE(|t7Qzgm#6#lGOWcV#*^s7v_ z-U(7^YGc^@`G!X^?ZEdBt|^uPA)NQ#=mpTJ>4n<|S0eKCSXi;M_bkR#l3ooCO&(h@pi1h34+HR+F3|CQ zW**df_Qw)itn`zkAV40H`yhMDT%sMCZLeOH+h*KebPqgz9uZ7*g72;S&r7;1)PpQb z^!GGJR!!Znrk(}1GX=e!DMH?4duvym1Y;%Y<-Y2WP;cXk(*eogS$S?=rs&^}$qZbTk`0PCO-^MR_Fufuf zs&dArSqD;A5%q{13_4=?vCLXpP*4HY?QX?57&7G>4I{T>FSY0ipiVlhM3? E0mr&VbN~PV literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp04bw.png b/Resources/img/box/bw/box_wp04bw.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff6a9a187c4a335f990b63524e8d94e25f51464 GIT binary patch literal 1300 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&rg9%7#PSJk>q*&4&eH|GXHuiJ>Nn{1`ISV`@ ziy0XB4uLSEsD@VqP*9@8HKHUqKdq!Zu_%?HATcwqL@zJ3M8QPQK+iJAxXuq~&LmG4 z$B>G+w{soy?pO%87Voiinr7M7{~)z*V(PTWb47ioq9KbtHgwMqy{mFJr2c`U#!3Gr zjqH)Pe%?NR{{54rKfS-6fA3fP|M#cBtZs&1GfM3imswud54`?%;f3QqU)Tfd|NrtX z4qT|eXMz54p{uMqubkvJADsSJLCbPtNyzt=>=%x&`5;+(ptH{WRoB_97s>NJN`5^y z^-o?%k)GlM7U$(-e?Ssv0-Yt^>y`(RgBmb!FbwqJ;&c2;2bs^z^aQ?A#` z+wa~KbpLAatfhG?o8vM~K1FO6QGI0`e>*Is{nwQ(xB3f0fyTtfFl_hfSk=5h_x83&YiQPXVm0mAianoMpOY0i_`tv0dwoi?na&v0yiC-^Q z0K>F;|Gzm`BH0B*6Sgl{!Fx0J1^>nsQkUA?f*-v$&YFI8-y+eiD_pN$KGw57eoC%V{h0wv`C{lKA>nZ1&ct ze{;6K5O93z7_zBREwR^9^HSj5<#G=79o63YSt+${vKwxR2W@wGl6U2bA5-lazxjdr zF(==mMv%%=998+fR+G z!-uO`7WQ}k?z#0eX1`19_I4+E1o8GT@9|WFOtoE6v?=#s!!^B zW%m{6aZ$U)d=?kqyTxvdz0NIlx%*+Oue`y<;bwEg`cL+g{=Z*( zyz`&w;%ooo9MWa)*@E)Lv|nPO&bKaPn0nXCCoZo)yP_%V$|A8)f9c@JzrWvn*&XP= z9GnEVcn2-Y`*G{uv*<>BqV_p18A>;J#ogbTJo=jiisP^uy(Z%)kOExE- on;={}h$3tIiYGxeb^qnH-mfY9$gr{+Sb{Nly85}Sb4q9e044l|8UO$Q literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp05bw.png b/Resources/img/box/bw/box_wp05bw.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5ad29d2bcd7f7c68cbe499f5db119f44025d23 GIT binary patch literal 2339 zcmeHI`#02S82@&XOR=V=#8RUxaY8X6WJe@q5LPlS;}*u4VHk-WVoQY?m%?gXV%?3I z91O}Np;65@aw{V#kqTxIIa${s%~6aU%xyb ztDgivoaV|-RON#QxZOYia)8qOeClpQb5GN)2q|y6+->-m9bm7Bg{th2f@fppi0&{L zh;Hj!W)@oN<)-E6yYbIEfb7cnFQ*E1EiW47uFOY>#A0#1ut>vgvY**K9F#o<mG zuw*(sdd2MZh`a!IjRWR~y2EgS87Xz~rt1XJr&IC%b zI%OmiTDt1% zQj+{oURHT%4#ef=7xkDY`6S3t{i}F3^W$^Jyl1T>$OZ&Q8eT9vl(WSM6h=o;u|soA z^-)J3tA~O%vDN^36@S9;j_;1^R~&Dgt_Z8zoQ(4~7%$!Ma}ipy-y3Okn0JF3QweK- zhr-&0KnMiDHx_m#ZcQvtBZ9&}_+Gvohi5s=Yd#h}A`b1qIf+D@jdONH0Qf2IV?6uJ7SjWkKIuV&q{D-<%9Io4ME&c5CQp?Dp~*G+{z_yvTJOV@n>7I|+y2H(;s-zom`oZ#&h0I-;d#F9E1IuxOM|C@pMrnp$ z6K{@h`Sf|i>LjzkVVAS7$@@6T9@n^0Z&B9$5{}o9?*u!`%ICjzlY55S8Zu`@<@0F{VHsINsQP0?x_*p9 iq_w`)iIMuLi3yl=*C{?7U2eYdec4zcEo&`&68{2sr5lR? literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp06bw.png b/Resources/img/box/bw/box_wp06bw.png new file mode 100644 index 0000000000000000000000000000000000000000..d64e5a3a790e51ed63135421dafb485a58ce82d7 GIT binary patch literal 2020 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&rgBeIp)bQv9QY`6?zK#qG8~eHcB(gFvFf#=B zgt+dgD7a8j@SvmO#f*jzD`o(dje^k-7&##jw#CdH=v&SLkH}&M2EIce%qXhi)c_Qf zC~=J_3C>R|DNig)Whh9@%q!8$OD$0_(KFDq%rUO>1LmnPPZ!6Kiny~g8uM-&@VGoy z`Tzgy?sE6j=dP{0_vDC5N@ssaZ?lJZW8U7kb^Gn*W^G`<))s%n_Fez;;^}*435FMW z-t*k{u%p{f(mH}?lXs=|YG;cG;l3S(v-(OOPBE?B@k~Ou;(GCltBpm=d@H`pY4SVv z_F!mOpzDm?AEK@$+FjI>DRi^nk!xX_e!cnq67K0co?q@rQlDLLDobHGi#LDY4zAZH zZ?&vmQ)am6=C#K7Bc7YQ_NlIa_GQk~NlWCD(?5Qa{(t(ud(4-UHx4FE_-n6Un3Z_w z-^<$QNZCUN{T{f=&v~};yXzeb-{Z@EZnT*%q(1-W^S}2CPR+85Dem#yr$4FPZT|iF zKa=;ow!HGncTdhd)%VNlCLc@wz5mI@VlFGm?>uo|vN->k{WlJebQMjsYn{&i=u&0; zQ+|l+gDWO(dY=2LRxtfbv-SC`ZBLi!Pg^#-LjF;X6WjfhHlH_It^2g@|Eq65lVcwJ z5k5NU^0d!uJOww;`Ck(c^x$!8)9(*DR&SWM#&^f5EOF&oxw1c8=cufH68$O5?|h`5 z=P$!+jmmnzQr;vOp3r-`b`9Ud1Ye6s$1<(1wFY1N@^Du2mItxt7lyH)nrZeB?A-0_ zU}wHNlpWdr(`9$T5y`&~wmtkZCzgNTWIdP@d@WKVwWp|Hh{hE?{C^T%h#KoM~ z2lOAQM5^AO6kc3)uE_IJ|Hi55@2;m=K3e2|jBi@-yXz^zd!}Ahl=10apP=?0Bms0s z*|op7be6AqdDztb*OcE|Bkz5c$y&-{*kS*$E_a&ydCeCoG0T1e#n)}>(mIs$zXiyQ zJ8gAFJv|6Mjd*^(;k7s>l% zO2W&7g5im_k+Tb?Ue$9mxo!2K+rl&Ki{9Eu}yzsG!Y_+xgp8wvFm)o=ZKBn1~{of8uZAF*1KHOXL;$J>EQ~YK5U-Lga zRW!8ar*h4MfBCwv4d%aa|8d}NJSYnH&F8=OUlANcd*=7w{XZ4r#HYU_Co82{-hbl{ nbm?hXXG@+<5T;sAd$5hQNplfjw<&^?)AcEbxddW?8eR=RL5ULA zh?3y^w370~qEv>0#LT=By}Z;C1rt33J|jv*CsZ>Kf(EjHkBxqbKl z|K~@)-7xIU2tQ&X+&R(fkI|jG!c8ya?o|Gp^laypJLmb?Qq~~ zTitgrX%L^Nd`7q2Y;MfK)tgRptXC?pxfh{UaKdwXG+UXaZqVrip6g;&dEON5^WN&D zH&307&ur(54Zer8rd#PoNEBHqUsU{j!@lFz;@F@A-6sT}O|zcux9&mc&D56giPm=c zI>HuDmYmjQ-aSWbW$FW!>+6Jorryt8&HMMCc=(BW@r(WR%;8e{#suNW0f$`0oQTK7I^EhtPHn|<}Hawcy$wbYMWtZmLYkCGEM-}o1O z%a|_mL8+)^=hJh`CTmxOmPtMgebRSc`ZNol<;$Ye2lSS^W=UF{+`77@G4@>f{_VFu ze6s_(_DF$Y{`F%wIP$uIG55B+@^`A;pYNf1rDflr_C$W(v@nCma_+;&Njl sS)=~H%`0qgsj}|rkV$muGwVMtulrzK;=8Ba??Ktv)78&qol`;+0BRk5)c^nh literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp08bw.png b/Resources/img/box/bw/box_wp08bw.png new file mode 100644 index 0000000000000000000000000000000000000000..a668a18ca0a8e92d3a8012d09447a923a418d9a7 GIT binary patch literal 2318 zcmeHISyYo(5dINzWDx0Q#ODZaW~&g@mH53GEz9kF$`{B4BVB0Jy`_o5RBZKojuW9*8Yt$MOs5b!9nq zw+oy3Wum&r~!v!s7ZLr zK7fReBT{XN`=}3*?xB%y z#fP?t7qkHG*25Pnby&@PW@R1(#yy>r$Tdl+uh&ZB>-`Pc7GrMjzlM^qOl93L;xQU& z_OOpA6|J;GBb$;x^`Y@8W^5d?vn3@Ol(u?}*M}I^ee(NJa~Q|hUGS@A?)5I3HKi+S zmXqwWTJZQU#0tqr(8=-jvrb-tpiR=MTmgQEu&rxYc~6JwVBn-Z4x5>tR6C-M^` z)J7LSj&SLSO|kxArHa5amK|YhQ7|nHPObZ0O$wHeh8DE@vmBdQGpQ;k zZrr}wYv9VZGu1bqpC5WReb+?hb#q^rQvtq3$hz8KvU8+zCrsl@K!bV8$2n2Gf#}8b zqi_yFV@7)vp?YOdZff&|Gs1IPXDlxC+P>{(!QMrrEMiAG-Id#**wS+-qTQ9-tryZD zjelA_BJy695lf{=s8R;^`K$fBzbB1cZWwqC(bPk8g&Qyl8*wcSVp_3@39jpuWV&jA z0dFuvF^BCR4xH(Io~GFEL%x#w!`F&isLqzTK*3=L0tT2jt92J#4SHczYZ1;VcI;(o zP31zqYdCs6fjY@z2@U$wI`zvaaDI@1m63ehJcCBU^p zT4&a=Y>Zl8$pqI!q4tDY?`iA$4fIVpJJ6vPlNbSI%t>X9Of9itHFGeT3~K3S&o7y? z@%P|Rn%pR!Eu9bL(4{++AW>0bY`dx|gx4HI-{EN!LQX$;2|+2CwaT{P3mjXmg!-S7 zoUxelc_TMi4o(HM<*braLvL|m8gqTV{*JaKt|qT02;ga`5GSuQJZF~oMdc4OxH^sQ zF1HF^8eW<^Z>P?lpohmo_{Wqfe@4>Kpf^;QU3d6v^M_4^V<*a`6IBDf38N+YE}J%^ z4%U#c!oBehVqR>$l~2*;7BS6z2pO!s;bpGuK)oq*;WI?8#qhsKBjv!KQF6ja+lc;P zRbBv>(4VP}cOZo3+WjsFPFSvWyATX*4>B~YU@#{fqzrhKG|jxwdiGApKf#aeWvPS^ zSrR6@of|`*upQvFt*A7qf4zbi^%we=?w;$E!{9YnwR6U2j$2bK!s1hl6{!14a5erb zKJ`!RBZTl}3&+8;%|`fn@R61BY2pAbMN-usnr&d@ZqKRW^wO}^P$T~<7 zC3kvs&dR$)bd25lLA(>=qP}3S(?6Xus*b`6fkCsvj;XNkAO={)rK{-S!&kC)US}w{>^sA1DGD A<^TWy literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp09bw.png b/Resources/img/box/bw/box_wp09bw.png new file mode 100644 index 0000000000000000000000000000000000000000..9c479d569f30f0958ac3b65371385e73241f1312 GIT binary patch literal 1078 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&rg9%7#PSJk>q*&4&eH|GXHuiJ>Nn{1`ISV`@ ziy0XB4uLSEsD@VqP*9@8HKHUqKdq!Zu_%?HATcwqL@zJ3M8QPQK+iJAxXzD(fq9Fk zi(^Pd+}qoRdAA)TTpr5YUE2TflDo%CqtsJV^om)gOD1zZy|13+s;snfF3*QX)~{Py z*>YGu+q9V*Xk~B)83sguFt(PBL+!1gn8xY@6WUA7-I|T-6TsdihcbdX!J_SKg(vz>cI8? zJoYI5y&+j^uhq3m?ur7#ktPNKZYBpE4u*}W91XMnTX(GbF7>~?yuSC=zRJK?r7w^3 zz5gBfv9Pt7g;7C_r6EFqA<2=UgB6A2xUure|1;m?<B~h2xG2uyZeXzu@cRlHNzb}sP5*5EZ=@Ct$crA@4feP?*4T< zJNcKvJF_gCzSV)|{}1l)urG7F-`}-p6}u@$03m{|>+E8)?R|^CB>(=By?9%G+?1-= zUmFkqt_!J&d8mL9K#0%^$dUWny{s-fr>wfy>g(^hn@>;9%2*%x*abBWfE^v%yXzoux8M*Km)=_YdC`^Em-=PzeP8_OF&8^0w#bI~r77w2 z3d4R_tRNzY-SX4g13gs}w!JX4FLJZ>n0MuedidhJf6avx>)!P2lNWUj<c{Q;e{;D$}sovZ8eS<|i*zxnkq z&&}2yX!R^~2kw#*{qO4OT^L-nzjDuSps5zmuJqn2JA3uPE!&mAytA}A=&&<-%u~D{Yho1@SU<=TEINc;OXk;vd$@?2>|Lcv26eV literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp10bw.png b/Resources/img/box/bw/box_wp10bw.png new file mode 100644 index 0000000000000000000000000000000000000000..3f18663fe3233f05382e78e6afda3d4767a37fd2 GIT binary patch literal 2020 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&rgBeIp)bQv9QY`6?zK#qG8~eHcB(gFvFf#=B zgt$f&YzQd05K(a>q2onH!-I~11059?W+a>dsviZTAu#Mi;QfX-?|`18eR=RL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33JBJyhC#&d@Akrf=N^>+tZ{hLRcE-|ULZ-+udR)y~)ZwOeP; zIo@v2ted{5YQ`Z|cFy-p#OsxsRm%-mbc878?EKx@D7ALxp=rr2IV6XTc3x|=Lu(Bt&B*DDBAOlL3E;4i|+T!pReU_hInA<28grq1!<{~gGHO_albzo zD_?KFS+rqU;Ka4TJDy}rT;ZB1dx$98yTtFTKfCEk#al)#rKvOQ-`x9n{13~vJEuQi zY5Ki2a+{2DismdmH}7}X({5JxiO*Xdc6-mGy4-2IWptDIrvtSXfn!=&e`oycr;ym* z{|YD%4YUmvC;#5k@$Q@ZiCqQvXobQUrD*m3mIi_ff$CX7J^ycjYYX0Y-5PN8? z(vBw=QmlSn%+2I7x9sOnWV^npYlYmh55?y>x4yE`G1P&?yy&56(WU>Q&LWcEo)0lw zZyDZsnju*&aZvTSn8O;Kw%OpQtmT?6bE@dtNrs0K(`2j*PyWm{jpn;%qP3|MD4{E~ zRb!3w4toKQ=>@Af^ejzg`qh<0&pPCL?y>WXgIm`qt!mf&bEnv8trh=iOPhlK(3Dro z_PPCe`26j6R(-y{z2d>Y^F=)qmS*hod$91g{d>!}igi(MgDal=TYvhZ(YFuVD_{Iu z|Ktu+$JDt8oxj)n@?Ei-eB$5t$~QpKfN7ik*f{2c#3v=I>si*EhfCQ_aBxjX`Wi6=J-@2{4##+g68^|sx+_m3gWch+zJeTMCz^4HVV&t;uc GLK6T38fBUQ literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp11bw.png b/Resources/img/box/bw/box_wp11bw.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5b5acee6c25b509a19084883ae89b91bf343fb GIT binary patch literal 1623 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&rgBeIp)bQv9QY`6?zK#qG8~eHcB(gFvFf#=B zgt#Uw*pPAIM8%C84G%ud`0xU#Y!r-!z{m-Kf0ZICK;Lo}ctjR6Fz_7$VMb96uLhu? zM2TxeNpOBzNqJ&XDnmhHW?qS2UTTSgiJpO;WsY&39|Hr^NlzEYkczmgvriWtcHm%< zz5W0H*@t^KSUHJ4woJ+N?RuqgDNz5-pS}NW-s?Z*J*?w?M*05)v9{2@03ltL_Bq>> zbUF?wE&nm?ch##}F-zz78VYNQylQUcCu}&$8JPILoQH2`##Dufr$?rH?c2zrG3QCh zTsQ6Skxw!f{nTB{(h_=3Xld$f*LRCQKX=wWud$}cNnUe*$$||hD;I5j^GVfw&)$ru{>%uuSWKo^K&M%xBPA0 z5yexsb7roluuPFpQ5D0F6TUf{Jug4k3cpqBS9IsrlE~*e=KJ@a+^=lDZ|_O|otN~A zr_R22?}>L_MfGG?z3+DxZ8*6!$_p5rm!onWB9m*M&9PBG3tSvsURlf4=qoC%g0GTi?19Q_E(qzVqdqT71#r+p~3w zc0Lzt_0_u?lvHqH?zJrDQ&O*upFd$ttXEto)*PFc7JZ7PU1steIR?8T;oCWvzU(|T zwQT-mneAqo*DOz;&Cmbz{zNa3bY8dRbj;Ibz`&R!eeYh%#M8FhHFAnt{@moQ|Dgno zv^n)xL_RS9!y%~Vf9oM7_nalFtj(c*c3(E17x<~qkT~&iH%m=XK*W{d-Q>_`;k|-k_=8B ceD?JhyU^m}!uz?`yawfcPgg&ebxsLQ0Hao(w*UYD literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp12bw.png b/Resources/img/box/bw/box_wp12bw.png new file mode 100644 index 0000000000000000000000000000000000000000..5082da7ce790d7a7a6ea01a74bd672b5366626f0 GIT binary patch literal 1401 zcmbtU|2xwO9G@?{V|UV#3=hYXZ&6CdaP10HHYT=d=xpXowJj7=W2p}1&X+oyi4B#E zKEf8J%TP_6BI(&Q##E9o+vDu6d`Z6C>R-4Y-rru&`+2?J&+Gj>@882h4;w)&As`UQ z2o;3HYGZ}gQVn#qerL&^S#8ii;fL`9f$m-VZjB7q)`q8pqS8R1Es`&$W9E#$qy?e$ zz(_hS?+?S<;OXSP62DjR5c8mRn`q%rh?f^savl&MrI$T-^A; zTU%Tw)HEN3>-}rb8SL6vu>joUs^c&lEVXz zzIsgS{5p)XKp}d0h7q*>c}85fWdGL8X+&-NwLvsht5ADuQzBJ>rxE+l0OXQ`PNs)5 zNTlHVm_%L6VHi9O?IM)x%(Va^{sK`FO?`%uUlXc68 z!1jjq>+=yexM%oR!gVV{TG8LGy+XfU?FiAX3O@29P|@&CPjJh}Iv^MO5r-3E!u1*$jviY_0!agw8bO-U*(bh)A*^8!&G@11EL3= zxnLm$)NYuzCXueJe=Vi&9SsbVnQZWAV3SJ7b&=FzuJ}0J*H7vJ?0OcawO^i z)wS1~kBb~fn_S(`$7#6fT@aDD9nc_G8XrUw_S$@4Uy`3sVrd{b{k&)%PL+u_aErfS zGMPof`zZ{#nv%_S51hy|9zjD`feN?S;NIR+Z4ka2IL=_&F z5v?r3sh|S=BE`v{-k~oC)?(=?+sor|-Okce9<6v#K?pPH1Rc1kLFc<4x}toAkS`L` zFf9OgRxDp5+_Zj$YEwIvQ*fRy+o!!{ot01HLu@@CRfK$0(l)wwEge#*18rg*0i9Y0 z=o`(H^5un*3G!q`{D700bRQ?K{xjKFVKS5~nwf8}CbW7i*Y-{g5Pm>xJqxu!+?R2@ zGxp%n;Ih(;)D0riSYdT6rs0nw63aWoyaf&JS<~M^ap_bcH!Uq2Ocl2J)2mieG-lhU=Qpr;AHE%<-~a#s literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp13bw.png b/Resources/img/box/bw/box_wp13bw.png new file mode 100644 index 0000000000000000000000000000000000000000..afe892e45ad2dd13211efcf872559ea8b45830f4 GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&rg9%7#PSJk>q*&4&eH|GXHuiJ>Nn{1`ISV`@ ziy0XB4uLSEsD@VqP*9@8HKHUqKdq!Zu_%?HATcwqL@zJ3M8QPQK+iJAxXzD(fmy}V z#WAEJ?(KEMyxRs6Z4c#EyT7=h{Ds5TssD-LV)uSI+p04&43qcE^KdlvsRR{F=)c0f zr(5Tr(Td|uZ{_X%%V(|OzY?#%{?+%NzJGVR)USX4>VEE|Ey}r{OX^q0$!}RQdC8+9$4Vp1 z^hd|4RTGyw{Jpj6_TG@A3l4vo`|C%Q>5dS~rx)0=a=zA7?u@zmvnu%3{$2OtL$_|v zUpZxkpYGJ_&nJFrzx4R#*-yW|oj*8zTFIo4Anzv6VuLI9HaT|wn!;U|-|lu+Tr)6q z>l)jD`NAvuWu;7|r>yYb`QW>mXjW;~$~|`dQ&#k+o1cDt+~KLdulLg_&eHXn$DHn- zT_Bq|TQtjbQ;6x)3yy)ImOnb8bmKU$=&#@P_;qT((AL+J7hV!wGmCfYbd}J50k2Md zFbrMbwjgTpD%o|v18iNdwyapS>-X%p&TH>oS#B9vEq_gR#kT&HvxGxScYa%B)x9b+ zFm!je_^O>NW=V#c?%KBaSNE!ufuY^m%C7_#Wz~gjeR-?Ns%wQ6OIB8EnQW=TxhstU zQ!DJ2#ya`FUfunpT<1#6(&&YJSu?FQvZj_T$>rmXWXodFTJf$?s*!6|HP9(dujEz; ou2`^(9lx-w;M8X?OaAj)@9TVYs47Jnn5P&#UHx3vIVCg!042|!sQ>@~ literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp14bw.png b/Resources/img/box/bw/box_wp14bw.png new file mode 100644 index 0000000000000000000000000000000000000000..101a47e66589a45a8c5a387c083622bd3df207d5 GIT binary patch literal 1840 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&rgBeIp)bQv9QY`6?zK#qG8~eHcB(gFvFf#=B zgt#UoBy@CiOqeiX1rTi5ap1&-6Blk=xbfh@iw`e8d;sbi1*0J_j6xy#h)#8@ssvz4>p|>Cl9Og|Caw+^X}ob*QLJmF8#mG%)H>yw3RjI*VdZNyZkKs#P!lIw$J5k(=Art zGcMd$W_c*^?2N^SWgf2B_0L&+`jqG$izcb>Xpwoi%E^@f_q~{9t}+i}TK}m}?@^w! z`quviNADcU?V8uNe|>&$8OL*RETmzG~;K zhqxR+<#JMjJ6&IgOGefVg1eDzh;XFTawZC3tY)(UjP zo#1tco_=2N_?trtzyFR&*FIdjW)AdNx5eSFa^LK;1h*F?&d*YhEy{bi?A%4cbKB0% zS**OrM&N1jr!(``3%c+4^!v^l%U`3#XYsy*fH&4Qwf})Zfe}+b_kGpK|1EQU@;T=4E1xT)XG-W* z-uS=bc`<+b?%+>T{vEf?wz~hjcHLZ1RGk05c78$2;#r37?Z9X#{oAgmrwO!E)gNMK zmfW|!JAJw>4(;Un>#ry2ZV|rqzhn2#*4rYs%+ouJ=V*t#+C4-04#-ORKX&5leys$C zx7Gdaa!;#&#}ou+{{YGe_Z5V^(+q$3sq#W$wZf)$^%&3WipkYRTEPeluQ_m2X9G`jqHP?N@QNAzV_S9{=<6oD2J|OzF z=3baun>R4-U;Vsu_~yGQHcS5(o}YE@d)@r(=UaYCefnJcS{;~f(#~8=1o|}g|H5wX gQ-bgAUwiwFx7BsyO%dan>7Y`~)78&qol`;+0MkA>-v9sr literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp15bw.png b/Resources/img/box/bw/box_wp15bw.png new file mode 100644 index 0000000000000000000000000000000000000000..390e4af8a0353e8493f89ceac8ec08a0cd765683 GIT binary patch literal 1405 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&rgBeIp)bQv9QY`6?zK#qG8~eHcB(gFvFf#=B zgt$)d$XMYJalpdkfrGEakt5%+dxV*X(T z9+$}`KmXTPK6iM2?bh^WshziCudIm3f5d6ZmvKAJ;`YA^8@-x$GRIqAzfksHq5o*V zXWo7Nn6N4kTd{mb+39_`;_G&Qn-vj%#C+#wULLE$zh95%e|5EavhMYftI6^8?E00f z*FV}?w7BN$)Wdt?7jjPDcGuZVw~H2Kb(6rKO9Md{KKB~k2ez}6_5 z|EqEg`uR$`z53<-IZt$C^mqPOn7-RSx$?x%bH>%_r$71f{e923;EXZjY3IB@Uz?VE zirN{t@7Jk^ao;n)?wfRXdxYJInI>C)pAdf4U2)PgugqxL^f^z`)RQZroICALioU1o z@LS%mOnaXbx$k7CweyZUKVEWpKAeB?)W$!?SHsV-v!&YA0+qbizFFJ-w0VxF^X`6| zh5I@nCjHc(u=;nr^S`f~y4LS2+A;m#S=5Sxbx0m$hDwE>^u6&@!XPy rcira@kYE80AHqs^03Y4__Hq*&4&eH|GXHuiJ>Nn{1`ISV`@ ziy0XB4uLSEsD@VqP*9@8HKHUqKdq!Zu_%?HATcwqL@zJ3M8QPQK+iJAxXzD(fib|- z#WAEJ?(G%DzGemyhKqamM@2^N+$7ZLqBPMX<>{$QPv$3mnpEEG`Rw`kk1EfkzgGR9 zte7=nh2tW&PAQdP!0^5DxeDl`3of?jx_JVd)n3)jN$HR>3Eciy!THL9&Ru!dl8e}U zucY2RAz+%ZXy3G{U`6+{6+yC9;i_PYe+EcYOSAtu`=fjO(=JJyO#+5LgQu&X%Q~lo FCIHOZt4{y` literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp17bw.png b/Resources/img/box/bw/box_wp17bw.png new file mode 100644 index 0000000000000000000000000000000000000000..60a7109549ac4a8750bfad43db0fa9b0d3c1dcd4 GIT binary patch literal 3583 zcmeHJ`8U)L8y(3WLW;44MAYSz0XNt7MWvcCwSDK}JJE ziLnkcjHnrvG4`?cdjF00e4lgfbI-ZwIrp4s4y1GOHqi%vVk(fvz z5GE!jXfzsw!CRhvlq4{wH!${SA55rcpf?EcyyuUB_72>hYYh@Mg*aef;MY- z^m=*;FI5xP|9f+L$Kk+a=k^=ylAS&C`XeS7XB6s^KUho0(#@k+wYM;mX$7u&i)Xl| zn|(=L#r<#h*TTgIY{eE~(S^GW(UI>>Bo%cgA~EiX(h6Xswm z{h#kz42c!wv~(i;wWHG(WnkxZ2X8dISe@=O2wf^}4woTiGYLx6!!y25j;Qd)2=R4xEroPA>fjvtPhHLrx?q3in3lz2wDfh4vS&P*GiOT_s$p zN3rnPE3@X|)Xe7v777X|BCmg0G6feB=Z1hF7Ktp9m0 z_wkITZe3n!>Ph=^K?K)wXD>z;&|}+w_k`oCRhh1UaL+LP@$muP3d<@`?NkEB(ANEhVzxZ zHF_T!cobz@JYRI`H7k3=M>jcx8#kpZC6hN zk>xw)HrKaByHZwLw8ODWmg(p``UbLARxax%raN0LSHp#LnBhf&9BzG9ZL&>E@*6c{ zioty_o(5l<#{(D|cgt*zQTtDVY<38<*(KMtO!&n~n6|K<1%N|>=7Ukfa7r6d#`+)a z67kOU$7?766pyp65*d8_Ry^F<;#8#%kH3*KlC4~@%Zc&ts$T9&#dte?+TMPFk;O|& zhgOy(v{gwMmwAV#3t0`RZ}+Y?>d=kgNE!UOT+~I?Efl*b9}A7W4Sv7UuJ$7?Z7l*T zH14IPqFLK_2^n-%7k}SgA%_yu2{oQAwnCJ?-*g7x$R8he3QC8!7z!8{eG(vpgyz(W z))#s@w_9pO3FmdVIeKFPx-Y>wTFg;-#1i*m8R|3rn3eO-O_wIsYw5JjMQ#q|Hc~(7 zBF{?~BbU+4tnggoSlifeTn(hg`!3K7mj#bkeorZ%bUNALSBiFpbcI_*`4;j-=Y z{beXR5M4X?9?>bHJ7>)R`WqBjVXBe^s^rde96#~(oro7{BgLbOh!f9>xo3$h6Wo>D zp)tlP9ag8%dc$2MB9i%F_ra&;!ZSCOh^Rv!^sp&IBi>FS;7WFwUTm4rUeHO%!jCwJ z^ID#$4dzU8z|j*9!+v|(&$QQ#^O3Er+}sE}H0o0I@o_9I%1AyEsV9d+du`{d(8P@$ za9uwjD_YiB+l8nvVVte31VdB7C&**}JkJz11ecmFC)^(>WKVoVZWp z(YN$}gWq-T^xiC};{7e-UCN1!#;!fgv`?)5v|D_{1~Zv_gf{a_P7OhyJm*%Y35e-v zoVis!Dct)3-u^ITBCqq|!;byENwRm$5t4+;$VcnNH=+=JrP?z2L4&}XIzGxy^2`8P z`<_8w=Lwxwaq9J##$lARmz2Q8O39oT-F@tsYifY=B0+3_zWI}Vvzfq(V@{ZMy(TV1 zc@kGMQ=R2r6zTC9E_HyfbG+@5FhK3DeuT=-1l*aJBxcN!e(ryl$B_eA@5jBjkiE#%MI9s`3U5p*sR(*x$ z#i|x?uWC>qjGW?K&;zm(JV2$-8?tVV!-qNDtj#NG#^rO4jhbF7OW|Z@lGWf%s_RjlA^`<7*!TP`*U?L`kEe zm2Rk~Wn6-Xr?>uaBp};-?p1LuD{0E`}3zT0d^Hlsem}FmyvZKJurxi z9#ifW%H1;JamA>ZsZ0?J|Fn!h?(KQ>WTCXA@|MEgv@O))DEEMG&3>MHQ1GbgT)7sB zw))mC?n{_FIy;l$6l44G0y*Sy+@8P|TT!>sF}4|ivf*5ze5t37Y>*5j2@lRcT>fFp z`G@#CB_q`rn-`}$=;W^|5pQd56y}vIQ>Q{~uOtV@3=*2|YM?`}v@yaprABp6K>6fR z0bVrj%awdhWU76OUD}eziz26M?+cQCif{Mk?ics~lZiK_=m@xRs$N70qdbxfTw6ys_ABMD<3WUE=*>Mt`)skyfoo zeOxwje{7n}OK%%nKS literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp18bw.png b/Resources/img/box/bw/box_wp18bw.png new file mode 100644 index 0000000000000000000000000000000000000000..717fdedafcc44a23f91743dd488b76d4ddfa1526 GIT binary patch literal 3015 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 E7yJS6%K!iX literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp20bw.png b/Resources/img/box/bw/box_wp20bw.png new file mode 100644 index 0000000000000000000000000000000000000000..44fd667c3322d6976fc825b7816bfa2f694b6c27 GIT binary patch literal 2145 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 literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp23bw.png b/Resources/img/box/bw/box_wp23bw.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff2848525aa26d4694a1dc9371e332f84de61a8 GIT binary patch literal 2662 zcmeHIi8s`X7ayZBB=aH?roro364NW&SoM@o{dGmgM#_zm)&b{|@KIeSyIrnq!Irqj{w6oG~&D|gn zNXga3@w~KCq?sTuE3L(bE<|bD72)9F00Pkq6}N*SAdoER>=|z-pf<>_;!R}j4D)Ja zMFCLDbm3P7@jK5pGMRi@5%W#a%=4moexp?WZ~W`P|DOX_Zp#cvw^9IH{1ZVS1oNMi zQATz!q$CvY>fr<(SJ(Rr|3v_ywLPX+t;}1r&uhvl-q|u9a>hb=t@=%^DxBr(64IUq#VMx&G>`C6Ud<{%W(enas zFUiB}lsF6NadJHRYmP#|qu6{yZ;E@A> z_xKJ^pO4?jqBoG>s2+28lO?r>c&j<+s|m_3U_||$GCZKU49L(IuNt@5C@;%~!WKEp z+4cJbk!H6YVy0Z|2TZj@3s0V>?bThhMQIohZrL6@TK)9H>s^by>=Nvc@qx99sr9G4 zoL1^PgWNlNxB&mu1rct#m5(a^^BH0s#(rlk++6w$xmo1MP%*H{T>CxI*0ul9x+!OF zHsS7zuK9_%W^v2tOjs?kyYbhT7u07W(Y~yHl*$Rm1lofED<5oC{+zf&9-a5r&w7y^ zucF+Wn*>AeR%i7aYPv^c1Gz~WXwiOFQ@lzvBOB;#b_d4$e?*y+Lh&}c)v2Z^e5)ps zW-f9^S(jYSP=mz~CHfQhd1CwV{K3kSI3o32AiMv@NF_PzPQGT{BAeBfXX=ntJ#hbl zPpDS5X_q}Ez*0$_D2oZv%8|XKji$cOF9AEMI?t&hrM553MN!ub^$~lRkP&VjG*UIL zoaDjJ7Vy7eslJ%7n*iULcr!xFBOx<6$QV99PjHfLD2kU)H5GOM4mLcx$Zy_EM=R{& z5(Qhe5^i^(Ax2b!y&B+8^n0kf|Le~Xbsx&B!(*CjMwB~;4%N?e$Fn;S$f4qWC2j-M z7s+5uJ*S8xp&6vps$|L+tfSH22{hC?WV5A*Kbw}*4o1H1kBw4C`ZmU2>M#e+j4Gcp zg~zu$a`h}ekpg5H9?rl)i{r?)D!GQ{hBAZg^k@6X#z@IqR(nB6-?|az52Ix9W-0FL z3`zG%m|Bg@Txp9&XR6t6w8@n~yGO@>)9+A}+DBH0%0BxO{@aiW<)!EzxU4pD%TAe^ z=U%1PseL)#cp?h3~>2`^dwG6hkq-gX+-`3jJPpDjni{ zr0K|=i=cA8F)oG-7~k*`k4W6{jTth?Hr*QM_nAXV36S!Iy$k{E{nlvMX20~=%XK_=;)%?x*_HYZtPc<#A2V(Rv zpwN#i%}1*8Z+^qN^2-k;q?K)u(Pu-GH&mVhF8T$5KwK2z&mMWeWbFGhB{`3f9d1)q-4f>rZaQ zI0;I1s+w9QStP;Tg#EDIW;>Kdrmw7JL2b}W@ojYO3)fEmH+{H??TyrXv+e0m2ER;J zTo^56s^RQlc?R17)9cj|z^$CiVOgO{E4ed~2kT}7a~69Sj^W#?p|md|i5?LD7RRDp zfAuc7d$>0QmEx@bnn`Evg>7zQhboh7^-*IU;-tsHDdMk$6d|a1Z8}TwW!lG?=5$-I z<*M*zI}(va-sE@&s28#zT}j#ZC0}$XHT?g99pK#D7bJX1b7A8eTQIh0BB&tFrR40J zMxFj6a#A{?Tgf2Njcyqy_y^CyA2PmYh`oiqyYka622SqeSDR#AyEwVB13C;onl39V RK}w$<$khq$_~2wv*54*7yk`Ia literal 0 HcmV?d00001 diff --git a/Resources/img/box/bw/box_wp24bw.png b/Resources/img/box/bw/box_wp24bw.png new file mode 100644 index 0000000000000000000000000000000000000000..b832a3a77f52199a8040bf485800f144ac4edc56 GIT binary patch literal 2534 zcmeHI`#aMOAD+a_sZtJQ$zje6PYz#_oW_qUxqrCtUp`rQoV$YT5m^WXqJTlW zdWpGQj2Ib7@xEh#ri*DW$qDNOfv|4Ni7rY(Ad(RL8E;gOCYo%32hH&b03p*HpW+zQ z;z)RpC(jeW&7c&q>!10jf&b$MNW&c%aXc7^_Kk%=G`jx>i37;?4zUQOV6Z6Y->`#n zhSnXS!bGv8MnMrM=b|oAu3U@>gMb&qBPqzpFp8!n(i~~~@8iih2t*o%adq-eAigQf zDlWH^ch!eUto=L%H`Vo@w0Qh}Bc|3V#{X`%WN!;sHzwn`2A}66`g_C z$?YYgD`(Hb-HJf_T)ijJLe$XW{htqgvELrk5u|$ZMT}x!!3ul3t2G<|r}T9_6W_FI zjSr6Im%d~8>ZMhi>_ot0NFlv}sdJS$8a>^1XNk07h4r(Lz+@}IdDjW) z1p&CZ4ZFNYdfUDpr_Z8!n67!~HN*V<%`VxC&k$ICe(aEGN5vA!s-EnZ(?yQ19fotV zfFtc$S<}vSLZR4puOz$L+b^KR9^NWq!XCygEzWdAUbkP#dS&gpHbani_eyQ1Eq1VL zkI||>TGdzHtlqJS_$UX!9+0sPD$B`m2bIWhqe4;}e?q;h z5aT_OE<<$aQt=oGq*T%bpMb`Xr$+`S5mV3%VsKvU5OYgo5&^F)?Oc>1o0v|T<7nu5 zE+eA*iAM>|SVQzGd%w{PKPDSFG0!h*Z_BHW+PAi^#g;vq>lC1pQM1=brYC@o^2rb! zKS$DX3B|?A&q27CbH5H|iZ}@pb7rA$&lkt`c9B>$`u2*R)oH?{qntQ8=jH%6p`ce+ zmI<>pKEK?MF(C5Zcv|Z1@s^NrMBiD4^h7wAY$ z-A}6NY7PVrR|&CD`@;tupIbH_m(LYQ7`)ztRzMOZ!#WxHe*ULPjNE5jiI@?uN6mq3 z=&{+Envn8O?s8=@{tQX|tM9sjQdTfLt(!4t|9U^&dm#d5a}hp6=lCa-`E4$k)WjX& z2_Cv}$3q5s&eC|B5$j*I${+J=&QA9?IRr*`HN-m)Wj0o)uh|55;}O&{bKV&V$*dc= zTav0pPW!z5#%Stls)kD8>$Z75zc)!_EaiPZF?~IxNbjcH!s_}?`==D$n;M3e*24fW z!{xFXP1FeS`BIfe9mupY^INrlNC5=~jPzPoUw@;=bY9ilKXVm(Cw*Wi^RMk*15O+` znPlBP73mn~0f8%4GtoC|n~g8E#47-Oj}6UiK#LdR7?6&ao3 z@UP7{?M(T|V$(n38p|w^)pFpG(jc7@3(b1;*W=kQvaJByAS~EhTZS zBau7jCO$Ww6KGH1Mi(?TKy}|b`xJqI-uRcY`&2v({zLZ5Y->{@TW)$FED$?w&BEQQ zvz;+OsTTBK^0{9KsuSwO7DUU-FzY#K_)F(p#ms?JDFcrC7sMD;uhq|9GdS5#%Wx&Q&aN^R5oiQBp68S5Hw ze*60-E`+%!GQ(;t<;0+*_yoE;6{e{R($YN$dOZ!@rtxoF6LcpM$IiGrW`mkjj>-TS kr3oeN`6j*R?bTgq-JwHE!MFE56+aya28DBNat=!UFLf_W?f?J) literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp01dp.png b/Resources/img/box/dp/box_wp01dp.png new file mode 100644 index 0000000000000000000000000000000000000000..6217cb3855a40b2debf4bd9f8a9a8c4189d85e22 GIT binary patch literal 1443 zcmX9;4K$N$9G@~@^U-8RxyH)LS4MQ=o;GLf6~~Fn$0D|LedTtBxWj03SMFxhC0Dte zj%nxK*2!%OrLvkKLM69$<@8}JSINg-UA!^e2k$x0`<&zMO8&y(GdLKgQ4dp5s5|8teG(d+O|wGd za!@Eo)%r5%JRKbcKHB9%$8)1HQ*-l@&ZeNUl1{U7y;v!^PJUkAUIAx(xe+K7+9r%f zjm~FG*Z8oisOBL#34K*nZr}+pa!L8M9qZr0zP;W1Y+2erjsZ27^`bp%^$NK4Z`q)H zRnR{^*P+$EA{8%&EFCf(^(R5E*WjXWmO9p_nH3M|q5zfoq^FU!pQ`*Y;N$;r#X#3V(-P6Bganm8HE z8b#Y{HjsZa<|{hqD~HunKaaeM#QE^?ySH*9CBz-N0ptXfuvcuT>KV#8!ss$V5RPS^ z`2KQ9Z2RozYTKhhpS&5~MMY#|5SD~5q{eC%|LYg0_j0#kxK_$PgiU7-_^r#@)0idI zXrsD3kcpLA;s=#lo@T56%DpLMUt0M_`N7tPz^u!GqUnte)~4FT_kf0lKT0@@Aw5NH zAb#`)frGsInLO1>Uk84}DxB{u%p?0&A-GHV|xKwc>pK7#;JcuWM%zBi} z-d_l65CxTK(7nYYuVg|az3*x)mflaK>fm{YD!k8@O{Fv3YdDa?pHS7d@5}J!z!Vh- zd-H@*fkVhEbHw;2LKlCeljJ7#d~0#BoEg>C>v7c;L2O{N)dJ;pVP4kVFE!{jg~VN& zn9O@T@H_fRPxV9sR;~6B&^q$z2LR1m=(XTo2WDUU2J&1z=`8r-(%dk-RVkCWpE4wc z8tLmOke@~Zw~Fq^+nVyr8z<@&LhPo}>_yBikOFD1^uo&|#mRN=?}_ercrEb%T6Z5m zSh?b4t9RsvVN-@#=|%clVgzH9rs|Oi>AHdC{gC2(L*jrZa6B42Of`$k!wFY zSgRef$(}RYV@9Ds3O?^cqubbb3DcZZ;J8ebjvtoH`leE0cszhk`)R(<`I7es^+iC# z#?Cvp>iFim4J79-=jkY?cPe86)IcV(Q(-C%l(I;y1(K$}MU-EG_!`h`uB20jn@ZoU z1bKiI!o{x6xppMGb?-sgZSf-~58(bd)RG)1L@Nc%W3;$?J9iL(vA@y%kLqBzF&wxc zhq1Goj3HmlYC&KOt?lV*k;DfhDklv*Al_`CTb5pc>yn)muN0QkP|_CqmX&68oCozeJGz&{ai8DZiZHE?wPK+}gc&V<`3VAcuUO zi7xij3^~E8nx0~qpBZAz6ouN4+VGb03J{B5t}6!Z`(A7ZGZYmDMbP9yC;9&aNDIXd literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp02dp.png b/Resources/img/box/dp/box_wp02dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4e590bcfac04b0c07042b4c41215c1b24f3969cf GIT binary patch literal 1214 zcmeAS@N?(olHy`uVBq!ia0vp^i-5R_gAGX9%Nn{1`ISV`@iy0W?4uUY_;mnX=prAyFYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoq zfu3cKah)H~9DPq0$B>G+x6=<6-Z9{DjosvZ;^NXBEYlwt#T>gg>0sN313U&y;fxvm z_a4Un__6f#?YS2(zb)JS`Olx%<__k!K2rW) z@cG!Gd3*O_(f4BN+6N!+?JRnNu4~cXLxL%9rmpRnZ!Y%j_xF1{FMX`5o-e?>Zo~I; zQ~SQ({@o%`(7LyLUCEyN_x#&6oEx;JIej@5_Tm2h+w}`(_I#hWdd}AtiyckhnSzb( zRj(_$Cj96D*FA0@peuKtirg=vlaz8ENk7Z{O?`**3htE1bme`(CY;izHLX zMv+C~+nSD7KR-25{Rm^-dN2{sCAgrgq~ja6`-F|*+m!0=MeI9#&pO=d-ut&xR=?#m zT=4ksJ-?l|<_R!Eg)S?e5?Ii+RABF>sq-Ja)h|$cy!W}*kK%a(?2_+o!w=5?++uM8 z=pL?rbD&1||8b_wK{qyU|ITUHQ2QR}h#TMEAsirT19WMhjUwNNYFiNTH>iUlbcyqp zc#EcE@ z61o1RSEGCI#|ir@n8D(-Wje#ELgz1fOd+5AJDSP`7jWIa2h8Wcg_Ir4FFmkzNotAx f^Y;C>FYJrv72bNm;%5RZUKl)G{an^LB{Ts5+BH>7 literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp03dp.png b/Resources/img/box/dp/box_wp03dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b842c2800c4c773c9594b5876a53ca711e6ed94e GIT binary patch literal 2132 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 Cx7kqu literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp05dp.png b/Resources/img/box/dp/box_wp05dp.png new file mode 100644 index 0000000000000000000000000000000000000000..87320348725489d3cbc4552e2fbce42d4862dede GIT binary patch literal 2718 zcmeHJi&xTD9H+GD@|EO{kH=YuGF&!9{E#pa1;duvU;R#>jXz5!hxhY6>*Rno{XoaVpHNlWbDx-Dl{pc zYP}n}3+hdDqai_{4ayKWEaK$hLFSp1=U*El8a9Ncsoza>?omD|E3~-;-ZAAa?6@2k zSU3|MetX;Sd`an;V#Sr0t5U&~6D>wca!t#ng(V6V;+KWd+`EOW_#H8p<8p0%ebCDE z^N@UlTS?DIorSs$KAh@9@bklulY2tht`_@)iqEi`$cG8rugRxg!T)f_9~tVAQGH9A z??3E^h*4MDHlm5$;8Ri?U+|MCHIo6!hfj6RYFL{_g*o>53r-Li<6Z|*>}k?7Cpb3V z)Q$M91D|-pDsYcwz>>(|goVNmsO+u>^+ui6HiMuD60mM*qUaAA$G!c1t`_1BNG4jOs{R&e%%_n3-Zk zUMOTAx8JGPO2(b_ILBn%EGlWb%4>MAlIb;f=OO+(dh{*H&tD3z&~}IoE=*Sy_g5cS zd|C^v03y!eP%ph*vm=`~&tY~xHgV`{4KO}!oBT#ip0OqL?cP$g%#L6xS2B432iq+4 zOig|%Xk%#$kqowueA`YdG3MJEn26$a9(|t3QMV4B`n+hPlkF zHB=ZjU~8DD$T;=|qV4my1BvAa(+~HMy1P%f;O{#08)535h!me#=5@Qdw6e~91v z>qKt9|2!9zCcno`(oMQ6;s;ltQ|*96T6f__ zg(DNPHRN4-vh$o{D30#@iImBhQ9asT74QMk4VV^62Y%B>2*$w0;}v7$810iaxc<5 zt)aWTfww;?=@rUNgdAJT(`dp>#=?gbG4G%$BA8SZ+Kw8yrzgM z7j)Pj$%}224+1@&>Tv~gF~T)!m#@q2D{mF!Z7ZdZBFAM3UO_0Z6S1$z{?8J(HvQ;T zL#-q8+ts5tCe&~DzPICzMa{S}VH8tVL`+{Qnkea5v*Gd_x5@8k3?{OS+05w|~5O>aw&T^CQHeYo-Um$emwgQC`Vo7SEETxHGOrhcw}_qI+3>3KPxd>b`fM bjVf0BxJYG;kKOGM?FS(QfrMB2$7cTxzg}w3 literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp06dp.png b/Resources/img/box/dp/box_wp06dp.png new file mode 100644 index 0000000000000000000000000000000000000000..6213fba0f87ce549153075d1531d82975caa2675 GIT binary patch literal 2412 zcmeAS@N?(olHy`uVBq!ia0vp^i-5R_gBeJ2J62=^DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(gFvFf#=Bgt!953kn)`R1{pOD0t9O@nS~9hZQq^oY(*q9|fZ!FziF%^qUR9 zw9d#-666>Be`EuO;P33JzzF9o@Q5sCV30cq!iV5+$w?CBgY=CFO}lsSE{) znRz98d8s7|CVB>XmN~|Ce!%kOsHcl#NJZS$IS(f-w%}<=cb-)HU;SL^cAi4vvUb_Y z7nU>Kp0BdQ&O2x6pX7aV{qYySRn)Xw+273jNnxYol32Z$Li+xl*I&Oa)7^bB zsKWcv+p697cf0#N^Glk1Zi;qr&XRmz2Jo zb5Oe}zG~vBjYsc16^Q$)x{X{U=w)xp-)9wP{lS zBd+kd|Kt0cT)gq0i)~ueue}VC-6?wi;9i%uS(*L(4>^Cmn?CXTOc%@2V#{+Ghh8?V zpLO=f=kKLLjb0Cq=4a0N>3F)o>HL3_Zy#%OguXs@|Fk;uxFoYpl1|+>JMAqoXCBNp zOe@ge$Xa+^=1^FMRZ3525ktObOU;%;pC?YfSrvF`=Ak@Y?u5x4H&f3%R%w`f>a~;h z0ao2+-$$GFpYnOQ@50rk#cb<2>R!5P9TzK}?p$%Tn?rNyG|8OSw)H_u6$5aFvV9XWx8SiWyR;s z8x-TjqZsuvW|SnDl-XIF0td5PDUemWaJBby9yQq_AX|U0$I}bWo`2*mLAt~Dc1#G$ zI+^$f$XmyT7C<8nWu3|&S$qAfAsOQ<1L6oJ6})ud@%5x3KPh+mja(RFNOtO zbey5s`j7q_M5FZ56wYWiS9j`m?0zP&&FQjY@|sD^72Zlu7K_g7pL6C~_oQUjT?@XKjLyWr;XANtRys|jv8J>$41L$&;S zi~TX+kdsf4&G`HG&m|ST->c7T|9tNAX=q%Uf8O``^z^tTMel08tM%Vo?T-Oxpr`6T zet-4`JMN?Mp2vSSO+OJ}{Pv?eNOZEs@;tr!=YOBmx9)TRWvDN8_sZ)sq3P}Zd5H&t z$s6b9w@&MptPx6P`z{nMP<~c1r*)b0u?SW657S&uxNFO>_%)lUb5QG^IXNCj=1tm&cBT9nv(@M${i&7a15;OBk z^zu?m6ioCC^el6X>--oPm>zq&IEGZjy`A$gZ;1g<%l5tZ_WqYH-e_!57O*QcIYG%V zNHN}Kt=&S_CI4<*-&Pxtemm|-+tH7qeE&OwzjP@z7|oymrfa_MNBzuep?`iIV%j-5 zJmgPsP`K&$;`JK5_Z1)b1s-2__yGISvMB}yA$QV4o-fD=RSr+_OL_QSN9DkBG3HlcMpSMUQ^`3@Nt#-gW7NEYmxY(l=H- zH32#9oXqY=Yp0d3>;Aqs|D5B+bp~RSWBPhGCcg2@zo8w)eArXZeqJea#B}?VmgL(=z7SeOHxupt)|5(t-|%_H=9*E=U2OC{@`OQ@3JbBWwX=Rwz#En@guv%R_q{K z3O0mqVQW))BNFR;TnB2R{PEkW-?u7wK42B)yex9M%PdszfMn<&h5)yHbyFVdQ&MBb@0LiVFRsaA1 literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp08dp.png b/Resources/img/box/dp/box_wp08dp.png new file mode 100644 index 0000000000000000000000000000000000000000..5be5005e5aa6f43e0b0d0e693e9e070de0453da5 GIT binary patch literal 2702 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 literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp10dp.png b/Resources/img/box/dp/box_wp10dp.png new file mode 100644 index 0000000000000000000000000000000000000000..02d940dcbd083d409b2d5cc88f3b98991721da80 GIT binary patch literal 2433 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 literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp12dp.png b/Resources/img/box/dp/box_wp12dp.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd6edbbfea3140a9445a709424126b0c19da7c3 GIT binary patch literal 1603 zcmb_c{WsGK7@v-uQSGIW4eM@FT}f8Ch9cY7cb2TMR3zEF=ADV-6z6(r-|WkB%Z&`N zTVy6RZ^crEsZ%nPm+LLlk(Q*AywzRz+&|&|@VtGV^PJ~ApYu7-rK3#x20gqU0)g1T za0NUyu}ovhNF9yeUjm)f1g&^aIu%jfWiqWPv_qWToe_w;f^{naYc;iQjO)pG1cLDR zr)kNlGc$O$>+&Lc|1wMRBd7g1Eozv$D3bi`bjOL?G7IG5}{*(&?F3 zhoh{y zxq0c!bVJK?kdvCzZMA@BH=g+ou3zwnB)hK{y}9-xwK)zthXWh&6Xi}N{;Ny#iYA;y zQdk$Emm9nKeP+1{r}Fi+APS+CTx*KVWPsWmlpBMQEQXi8Qp6pX)r-d@-{EyK&8A zTkuM-u)hZ5%;`h^j_nAGH^P%BU^ot626i%FGQa0TWGK{~mAgsn?A4qYf}F;}6T{$v z8yunhCNZs}^NDR4N2qv1th5Ambi-2}swKYeLDW8^u2vjd3iC@;^P>sk^25*#GKtiM zbe@KN)UY*ET*`tjw>KuHajL{D2-?Q<$*M}UP@HhPjnPsD#@{izX;vjV1?eeGY#5w2 zElLOe5D$s(_4s+j3Hl;NaJ9Yjmw=gQg|t7!#vQ^Fi3gb`I;!!hqzipZ@GV{JJ`i|> zBO;5GIQ2JMf~!!PZvk|&o0D6gk(mZ0Lb9+{|4GH|V18^RMhktQ@HpRNDLYApF(4%8 zG4N)D%VW@{3?!bG_r!MMFqyf9ZGIA7|EbG_js17k{wjwSoGF`#7lBCFx~nM$YJY|o z(JTS8$*mpvE{jULHntBrj&v})CmJxOnr+R-qPu@)oXJV!IVL#@HK!I#CGLItN;>P? z@*i`jWyOQ~Y}k??897ql`;)+lfKRVK$2Xr2lHGJ@v%DwkT?&JfI)zw5W7pfPgcak* z?f2~f6T}2DB_}>oW+U-8)08MiB=qKK^kq&3_6`0uI`4{Zt?tjlN&!f3&eHv? zgx=`P6w^7Do6D$xeZ#5k!#m1fdVS4qJiZgm;+;ttwgB4xbRVwbRH?m*)M!}fEuW#X z!m;)p_EDx~RBncGVn*FzEU8Qd`|#K*cPuFo8#h#^kp;%IoKqE4i77QOt3$nwN-7y# z4OWMgykHS0tfiOal;s*ae<9EPou8AOMO=g0TS&P~ajJZul2c4CumUpWlWhUQ3j-p{ z5%hrvqu1&A_CO}h+~ipep&|ELso; z{dkHhklK&zo_olBw;JUq__FZf4Q4GW?=viSEc{?Qik^*~wx3^d>KSX|(boI$+$l8_ zk+lEUlq2P%3gwq6x@5I`=mAZiB8>1@+WR=1chFXq?Qw?vE(btqROz`@d- z;=Z8;<-M_VT+s4XzeH$VjB6}77@$zoC5l;>2S2293)67pSX}~dK$mAQ^^)tP?^WzZ=7bZ|mJ(Kni;Thk@ literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp13dp.png b/Resources/img/box/dp/box_wp13dp.png new file mode 100644 index 0000000000000000000000000000000000000000..507aa06f32ad34fde93e34b0bfd953c66858554a GIT binary patch literal 1556 zcmeAS@N?(olHy`uVBq!ia0vp^i-5R_gBeJ2J62=^DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(gFvFf#=Bgt!953kn);R2=xwaN);{7e6+9_;KL}P;eBChQLS&fuAepdIIwa zLrIWd@c)qw7=pjEs{-Skv%n*=n1Mm=AP6%a&I}0#3QCl?MwA5Sr!i5{+8+a(S~;pE6X{rxVvcJX_?{lB08esH(4T*;zn{q>if>;E6o|90}h?Yl>Kvfg_=dHT8e z;P%~}l2`JQ*tX7|;rKSTGv?IC%iLhLT3P@|>fY27r+>U`z2$pmL7A}e3aHMYzWH%r zwz*+5Nb1`l)lWusRSRJTfi&+H+BxO%a`7yv zK_IEU+7qW^x?-t}{a&z(5RTo`gW(FjrJG{mIM^$sYPdb;|#taD0e0sxhF_Wu9? literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp14dp.png b/Resources/img/box/dp/box_wp14dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f4cca608c817d52d8f2721c83e2b3421a5a448e7 GIT binary patch literal 1686 zcmeAS@N?(olHy`uVBq!ia0vp^i-5R_gAGX9%Nn{1`ISV`@iy0W?4uUY_;mnX=prAyFYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoq zfu3cKah)Fn0~@=ii(^Pd+}r5~r`|CWU=^L^9K>N~#Ud-)dZu-n#F*4EZOetq5kKjRGFxBVQ7bGHkK*E7s;%Xx3>^4+mv z^N*iz`^`B7FRc*FYya_D`atHF)*s2Ozgo|6+SDBuUUXo2wUfw?68{dS`R_ObA6&Lo z))H71D$XG4(x!Ihy%|NM%HC@=ziHCmdEz4+4^(G zY)%0s83^M`>x*@vip$$~W=CFey|bo5CwcCH`1}0x>=n8G>_GDq$jIL-6}MeD9JOPn z^}~CXkJ8??R6hq9_lV=2?e_=!UT=PU&lu=VEY4f^>@mO1pJj0>%M-sq=QynP2&_`UUp z(!Uve=EbFVs?QvFTLh$B?)WqaMDO@Mqw)6BS3ACUV2ztj9{KtsJdgCwzmcE$aO-C4 zYQ^n_{vC%Z-~M5-kNfwp;rAImERuH)8XZv0TjqJ^>CC^%#(T=j()FL1J>v}2+57G7 zf@9xaKmYzIdT)(Gy>#Ek^8c#Fd%l$-DM-*gH;l#c3e;>G2=e_O$`}z3-M=$Nx z2wU-A@aE_FQ?I4#fGt%&a_Hhc*NY48mFaDfS{Sj*_u9AUB3A#7R^vU~iyeD&dCf1Y zy!&+K-$Y4ZDo(EuKhE~?+v<}4#W9_`Z8q1Zv;p-?-aBeIdBKW2Twl zr~qXX2E}a!6Cn{b)BTRm0)3bAwOp3AXJSt;(tDJ4G+FYs%d+x?b2@J)rqmlA2Bp=m zY2_PXeBq>rIq#b+nZM^4?)uLIbeZJ6)?$^#zf*y^;mjw!1AN&cz9E|QN8rHC8v=LP8P7cdmM@?}x#MlEruoBm q3C6U=Z1kOGMTiYS3WX^V&`QKn;17{CBYMZm>$ zSYfIJOTB<)$f%$)ooFLQFdAB^$QVUMi3AJCJ(kM~YtpluADca2&hFXseD8U8%XY?! z+?-cAQz#U-s7Qer&b4sJsE+Wv^#YOvrv+JJQ8=aXvFCeOI7q^_hfyduP!~M)Ggv!i zMkZxZD9l#kSaAPPLOlGrB3rmSJ6@Weott{}03|c^(BW+E;RD&;o4NknpdWeiSPI24 zKS~gmkhf>7a${wUh$fhAFDfkxExL$$uU&ia){`e9f6q0B)uMIL@2!71YF)OpD$fn6 zt5S{^9NWs=5n4Eh`xMXC&s8lgT{4)Yw@%K@^4WJ*x8(Dcf#13IUBkv^{dS1;lc@<# z8X-P2sM(mJQxrb#OtE5?x$Y4^>0-;o^cZL9trOpbn2WL5xg5IF`7l~MIuz_{HfWUX zA6(m}5O*@XDQ3$ArX)H))ZN78REpW2tyeRvFv}y25=l5n)lI8jc|o#yK8If6;->yO zBz+r>4fhB~S)N{T@o4IDOFvI^H(8&Av}u`7ZAzBnU60VS#Q%(}J56Qj?<~+Ft8SiX zk;mYeuZg>FN$Pk*%a%2A+}ij;xWD?ednVC{slNvn{wH5O^O<{m3Y+~X5@xe^qk(K| z;oW4x!dzOr(ViekUWZ*|9tp?u3$=(tr#GS&P5s8O5Cx7orpokAWSFF;h15=5MOYWg zq#pDrHLZMa;;nCS?B5=tVEyJ|lPqSe9Fi}gMte!A@mD6#M_vG1HnXI>yg_a7S7MfG z9~0NSLC}|szPCL<`5(qO<>9L6mXUxC%p!rV++Mcs;RDDSsmG0z{<+3IUhaIkV%I3= zW=y+NAkoN#WegUoh_PXMp+tz!<8_=rX;(!xG+QWa_3>cpetUu>8TZ~v@U}qZA_+}z z=OqekJ>gG?NQ74t5N20yq8{zkgF2TJs3L#g*I&qS=#9fz)g}$8&k;d#6l%N+j~L#L zR@3=+Vaw(hi9|+Yno5Xc9TifKBg<VjmS_d?{ZJy;V57 z^=X*#S|77Pk^?o4USdzz8#)kH3JCYF< zUOXXl<;n4CsYhHy&h>7zjHLkiN7)@-f9x{oQIm;j+k*(#h{p^&2`^M+@V5`^jn9)3kIw+5|qbwsz6K0y)5QS>U9alC^h6 z0zT<53t_T2YP>o(q;w_U+M!W4u!CQW0EiCcpP>zuzq*oUHcU*MN*0`T3R)l{rYQt8 zIO~+vkW89EaY2zF@F)v1b96{@L6I zT+XB7nxE>3X<~u~kBWngjiecLo&5E+F0G{D{g@@F1e7CrM}RlaG0e`(A`0-R zPeDX7j4l}>9g4*e>O_}hIyAQ>n+<+&nfMYLf1Z|+D*)?^!+3HxU+$e!t+e!C0oyAw zvjy8jN|V5Ip3ts@?K~livH8hy!eq5AA$D|X$e8Nx?~dIoxyImUHa zs_CQi(|-LB+L*Nc(sSn{=gX@4eq8jCd};V-?^J=8nvdT5{W>Q2{^xGx>??0_bd-W5 zJ{E4d-0^h9(PLUkvtFpoh;UglTk7%^zp&*V%-Y*p`%0D9=b4E3PU=i`smM6e(H_6^ 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 Z(I8~95AN(XDjpsL;$-g%R1^L0{sV;cZ$1D3 literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp21dp.png b/Resources/img/box/dp/box_wp21dp.png new file mode 100644 index 0000000000000000000000000000000000000000..2829795ffb8e0b34377ef21f48e0c7028dbc7d8a GIT binary patch literal 3670 zcmeHJ`B&137N;~9)XaiF(P_k7f|o{`;=aHa#RWxi$;?F5M%+`&5?kCtTncj=cgb8P zvb4}NwcN=SP0O+jQFCj`tzxpt=lmP*&F7rY{hWL6xxd_d?maing=DJ$Rsn-RAO)fw z-gQSgJG>+#v18?|<3e_1SG23G4XAEdb!o?uJZtS_4Fc8Qko!U10|H5aTpTIDPCPR5 z>Vr6;@ap91O~Goxjuna@Oo|^YE(*mv*?;kG2mXgUfS1Ji@9YUE#+Br@{r?S++c#;= zol(n1+MSFBfqv=uhr7ChDQ-JKcnshb;}#JVbAfs;5EMxb4v*0d4~+TMK=+ugaj5=f z(oWrdBHo%3=Q~lHetrtOAFrRL5x>2i)aE{sqP@o98rw#XaDm;Kp9Z9W*HMN~+n;V< z3~7IQrL9?A^~%h^_B4FadQ>~&`RDha>%>oVEJ}qdD{Ho97O+Y<-m>EcBcb$Ze@Va^8i-5az77YwNUuDOP`0kPNK-8jPSgCmvrb_17qXZ14q-i^B5Ch|{k4{v7jg^ubJ5uHm_Ezru+yrMuZWeNAu4cpJ?| z*{scpy^ok_g_jIF)gXDQ@1t-^O9dyIz- zcuNI<#(dz`7>W-2LdIrl<7N`mkt1iS7rPDcZt*=GPg2ZVbQ;3!CEy%lzDgvAuU3dk zwG5FjV%DG%ddZG?KP+r-_p3q!UjbkM8^Yy8)}tMO{}>DwZAAIx8th-C9LhNQqg-MyQsr+} z#0`;(al^47LpLtICZgTT&VwWfH*Ek@c(2D`3sGtd^$% zPh|1a#n!^XTxoeops@G!i~-H;H1wr2AGRJK+e#5U&q?PT9Qk22C{Z?h*}lV}2Q~cq zMXc8B?}63uivDAFp0Yv>eT-z#r+k+0R7!XQK+iIiJ)%u}h&B%O=xB$j00gXR_h zcCD}pm?2LtVkrp`mv-lpH&K>xf)(6Ao%d=pQcT-(P=)MJXkTAM>@JiwQk&Q_FsPGl za_JFEqbm>*VS<{}l51h{M1sf*U17QvolPm`sg+m9iHsl%6#)GOFU~n#rch_O*CvQr z0`KIDeeYe-&6-qJO?Elfmpm+U#quywGF5c;4&27G@rx0)Wt0BWLZY0H{fSlYdv&DB zGyv}PP4B@72n#UPZfEL|9h;cWr*v2T)CZBiCv|*``=h2cWFO#E#;aT~ExT?aQ=(2u zcL3Y+qRRO<$6=jNQwTP=>AXU%Q|e4!QCz}p9MQ5J(Q}h7k6UXtM9Tf_>UjUIsUF7pb+1Ve zo;OrKay{&$>X+&>6=E|xeV2e~M}svxjEP5i#S^iCW0ZTS{JU-&%AwohjH1WxKGTwe z(d4-l*uGKD@_|PUc;SaRnJk}(!S#isRZCDrN63MER`^rr$1f~m+ho&&^APXSq4`>$ zAh&X!sSig96TeaOcso~bN_Pyir{~Dts#DLk-|yD+M*9{$_DH_@%l44+4WIS?H<)!U zMB2#*eXcqksh`Y2Pw(jw4}8t#fOk#FDmpDflt$zdUMk7`HT5b5i4@&x$m@Q-TZT%N zTmzZCCsdB=F&9|scKgug8rLx1lklHbN-LWVA8Y;p&d)dLYrgYx*Vp6nwCac}2TJ;+Pae?){qw3h(p)cG#{x zHU|lIf;20y88$cWOR9O3868>2JQBou!Y*#TcMtnR;()d3hxK6fIU&4SszOY!K(iGC zZ)sS{bC1)?C#UesrH?*q0IxI1`1!b1$!g@*=_8FNwC5TdSw#t?FnL?44PsEPEYtM> zqQ`pVQh$7PCLxx=8@~A)4J#D___7Npbv~&%tb`k4&>mU29216m;Uvm1&^G7lmeX9I zONx=Q=0F?vpkwM6-1RPU6k(LEpjZU=SFg>tzv;a6i}K}{H^Ng|7E=wg0C7WNh}SWq zmPewu;HSqK{DkH^+E(`iS9zj2q$@%TzBVLX-pLCLDaC|Ba1EW_$_l+jU}?{u5{&`( zVr74YI!C}MB-m)`8q-~1wN}nno)@mz>% literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp22dp.png b/Resources/img/box/dp/box_wp22dp.png new file mode 100644 index 0000000000000000000000000000000000000000..6247766670f68af78a3bc0005a4310eb96eef4f8 GIT binary patch literal 3310 zcmeH}`#;l*AIIks5;8VzLPZl(WJWHX3LEAyo4K8G#854lHrB#Ug&c>EQj4&IT;{S) zuA5Mr`*Jy)%%!Nlm|TYAkSKK~-<^Ns`#rD6!SFOWDrKj2GB`YF3_)q#Ds&WA(Uvkd2~4a zAlm%6xm~2y4Lk^>;)=sK`osl|6->muvsJ_L@vsQQ{0!%@O>FiB?TrL z5xkomOn0`V(l5h5-S`$qbEZiTo&I(`1mgvXU%M~;y14|j0W(F+=K{gD21_o9KR-U2 z;d*SJ(vI|t5;j(Eu6l^w#TQSrW=2^f6_RdopG1;w*qG#gOqa>I{Vc01Rzyr+4+I~< zm8W8tlJWUL=_>2$fK3C*rSJvg7Y)M~Z1QYg&#Ul)L8Jq%IPKtQOh7+f-;<5+%oExZ zFpvbh{&C)IzMcJrufG6=q3%yfE*@}`CC#4Jvn=NkY5Irkm_w>Z0Fkh_q#8wbsS3DL zU}C5>sAV4dz*tecGi#_ke%7a+HVYa;@${{JO}ud;rfhr_tqhrEuWU&4hF10&m@>kv zP&NH&;^4p*!Fx9OoC`xcjBHh^W4Y0wrFW8q(S2k3C!+Vn1Z6C)Wx##GH(B-BOQ^tz zsSOL~_xv6B&Ev9Y*#|7JTH*k(4*E~%EmW!NxXB?l@-jQO zK1@UX8bm~MCFGf$Z3wp=nDFcV@Rz}n7l4lE^oKOwNXNie@@Ujkf2R;GSCqYiT5p!W z6?qC-a@@Ots?_2#D+8U?t{;=cZlX@y+2?gvR4UCOq6D%np@HhQ$CaUh3!e?aw!*;F zguy^vqdYC-Wm~J1nf0&pkp^SIw=MW*j8&ci7(mzjm}Azq^9H^UIkT|g!xyhk#lN|_ zZ4{VPnrila*1632y6>fS z`V^W|&IvB&iVDQ9@LqbO25Yu1>u6v@`z&@(rPc1ttCwDc9kDcAyOcQl2)c&mdU z)o}g0MI8KU*wy=PMyWaQ39j;G8ULs%8MY;*@{iY@bge*z@yy88mtLzMxiHk@rcFQg z7AiSk^BHH!X1JGgMFz;F8E(M2-{(rQD4(8sW9lXe`p1T{iSY7kPX?W6qp${2fuT1h zmHBzk=ftRAxP0rMR}%*?4&}b1@#?fCgMsCjb8qZVi{&Fn@Dzxt?=3m=Lai&CPo6Y} zP+jk;HC?lxToQ~#lo)U!l*9O+5X5x$bb_FWR>pt4tIT`Gtm>Hyi+J2o2W-9~wu-Tj^J#TjZ{K4A%?5{V z^Yy4aMo6yaoiR@JXLCjt`|| zTsPJ3GL~UKuvSxQr%Dp0io%JeN^%E~#y!`C%d1muA0lgEgKn!SO~Xlk#M3;D&@+T- z;vJG&?&-LjhaQl>`I)*qoo;`qTG{(hDYdnho7raqcgbuZm0E4NU~N(5t=i+Y>pw#J z!Hfh3RNVV8s-IGlwz!8?L5R+UG8}RMN`^bGu@6Xa+zX-PEM^^r7EM{413bY~Q&V;X zDxjc{vM&=l^4k50;g}j&O;13sN?hwqC$|*E4FjLJYKRQLB+cY7=Vof1n zVE%R#_S0b=;%-sm+?;gF*PGh87n%`vfN##Le0Xl9VR!PugLByz;wl1s;__hoU8vwq zwNG{hhnZTj!bnn4-ewdhLi)KT`IB!Tj#o{49MBq#-#VG{V~a%hx9|qOoLBZYLoQ_b z%8K^U!*>%6mPeKJB^|oILeaw-LG{nGY%0n3Pij)T*=BS^C$VZMHzJX=QM6Q%nNTLb zzw7}dHlWTLPvo!j>!;qFnMZM*z!nljoieP2+jR7Tzz+ig`|fe#A)xTbAp>Q@&W z;R0+w==6wOoZa=zP?SpyjT%C}XbUmPNmnmC>3osdXy5>@CMS16bNc?$xt_x6^*D<;sI~fA4W@KW4&p^L2$=L6Me!y=4`3mm6!YdA z=dNRId1I_5CW6`%!?g{v5Kk<*`Oo;pj0L_cEGBt;Z@hCYd~21n*zxRqiN3wCpcUL9 zXrGsyXMf}z0Qean3kcYliK0i6{gIQ5r>3e7F6Nz94)<-ih4pnGDi9@$WoHQVaN6ZK$;y1{y zKj1Lqo)~FLNomgt9hp9-b8m7xsQkJOR`j0l6m9wpRgrxB$*`^;cH|+)Ne4?29IfcR v^%?`cxjv2PC@T7TKnkw)-yvNpD%z3r^BzS!xr5pM=i$U*@t7K?;N<@TrB_Oi literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp23dp.png b/Resources/img/box/dp/box_wp23dp.png new file mode 100644 index 0000000000000000000000000000000000000000..3a63e589712df753aec2760d03855c53a6811e6b GIT binary patch literal 3478 zcmeHJ`!^Ge8(*wYa*=97?GMDC7?i8ZQZLTA|XfB&;ec|Pa)>GPcDoF^5Jvp#%K_8%1ROqnngIn4fwPgtZ!h&Ld}!}oHS_GRy|69(G4+C~BT z*Kq)V=qd(jPKt7W$xI88gNvhbr<(mf?)JPIc%K7A#Pk3DoPMpcX$zQzSgF6)zV%~! z`&Y%*&d!hdB)%Z6JEmK=+?rnfNHuQf(Zl%?mSBUe1wLnnkBUFr9eG{SzfN#;q^fCl zF>yZDW+KV@!g6dy``75sxY%X+hVCThuk&}?uX07`&plXVYz=Q9!|ct6E$S)w!wK}%wnMn zYkc)yPL(o(Gv2az5<5b&Oirx-?h|4Y+`+`y)C$uGvrxyY0iH9p@0t>o*Sb5x@=Iwe z>%3$4*pNZEWP)?kIB7b>hTrJx=HHid9HKW?PSl=ux$-94Mx!{OCDZ2l5{r^Ms&C}X zyr?-cukoDT_U;n>CiyeVOU>a(fDcEPsIC_ud>$MKO+0}iz7VqBD#Sy0UM}^J4a)+j zoTG+v7;IYvBJ!$YltU91G(W9y)w9P72zM|tdE>finS$+x>S?YS`MS9o#T~ZFU?jQ}^096K^`=pe z>6X#wAI4@d25!E7#FZpnbNh7*nPm^ zuHNN}{QHK4xi}$$ia@LpD4!1*Tdk%S1uMviNE>@^bU(3!Dg>8yTA3 zHPsi?7Qs)Dm9~yw@m7Hro%kswLJX)r^m=!AVwRI|?@1+|2HeJ=1js5a0YY2Q+ zrUk?5guT)<4B!j*-B(Vko}0I6yC)S$uHWDDTEs&IpAZMIiI=c)(|7&qQP#}-b@z^> z`GIhn|4vaRaG%U~Esi3nz_XgA<0+m|Ho;^EPbk^xA$vX4vAR5+6bZyQkzl>la4V^c zq7156=oB5)FlE#^K|9zICy+srEz^Qe4oZo@bYWYN1Eh-1vzwr;T1V?}aX-LKP$?L9 zRO@K_?ufL|J3U=?#bK$w)98i~c1f2|$-#SOA=wx87o~V@KMezgGaBIv&e}K0C;r0! zoX)94#G1S?rP9n&^{p88AwDVC7@0y8-&Tn!zG#TZn$q%v{}c$r9d1Rh0wMi135rk9 z9)-xT5mID_s{oHTleC-`ZaCm9?AQA>{?ngq9Dcw}`(@2OzOKR{Sp47+nw5?y=mkP! zcTSq!l?2-l@sW(>e47axyW(| zMlHzKvnqvB-6EV=U77UXCVBk_W%aR$O!JY)O!EV$(p!0|A+lwZ?nlW6_E@}Beqh`g4=-JTeL&_*K+nLY-Rm6Oz(9NjOnWe^4;VWi&s@}Vjfl3-e* zlC-nu#~0ZC2eY}*L4%My28ag$#!;v`EWG!Nk^MN&>4@Juw z!`M&!r8Hgbf^*gFY^0!qb~>n&cg9Z)u3&P>Go zhe%@?0ja6-qnZjb0uL`^b&r=CaMU%Lhw-iZ-aC;7_@YEm4?lJ5Rry+KlKYWBi;#}F z1J&CKHf-4)1>YDSki(Hoo)8G-6C#h1_l>Dh8pbe(8;MLA4Bx;{P9Yh?-QF0JLIW#? zIw*F^6@WkA7#;a^cF+oTR z>|4j3t{~sw@_><2t6?UbBj>Sp^8zUc&=VR55$ZpE3+Fg6<+qb(y7+b^HpBYz*{(X!wC>*lh;v(%I Dgn^Iv literal 0 HcmV?d00001 diff --git a/Resources/img/box/dp/box_wp24dp.png b/Resources/img/box/dp/box_wp24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..211840590572a7543ef7e363462a7ab9c1bbb2d1 GIT binary patch literal 2047 zcmZ`)3sjP68YY!&1aoKvu}mA9+A+rx+OQQ%w)jtlG7g8zUTE&xtz(xXB{Ak8wT-#}o+2o4X1Kw67oCMp!f zpD+&r=@5u>k9n-=JslGblIRQqDI+?So{>dOON20~r&BWAQxY?___%wx?@RW+7y*G; zGY{i~W6s5E$K0-O4*k@MvU%|5P!As;AA28rd;4Jo+&0tdKyYuaejUv)a_shwx-@#y zeSgiK9*57h6%D#q&zRWnCil2hJLA+{9AnGqNd1cV837>@)zt%4CA?GHrulLBU6G7;m}3QgyBuDG4Fe^- z#h03Xrb|#Dr#GnM?N|T1R)+HmTXD?cr1amC4G`{a$RxVgmfR7hA)4@iU~jCJ+kMHD z=9t{=c1L(W8v&Gk-D8L~yNrh@**=-Xj$O2D?ZR7qbeS@zy!yjR^*ZIB2HC~+vgvsO z9F2x89aThprsCLx!dMz*P0e#vO6TgjX?{v%pVT7ZO|=YYJ#pzrc6C~CHRJSbUD1Tneqau0|B0Y{;B z8wSSib8~Y0LxL}ls-f$%gGJ0sdnsU$YUq>4e=4ffS7BQ=SceX;grl~ zX33`VFOv2s@MbLFUIHn*HQmb)0hLkxMdnA?j;2wlMw(`eAs*z|A2|%{zO{eCdUm&k zX8dZC+1`m(2=H?gb0tYp1lnVZ%=UtMXDwi2WJUKEy1uCx0kGA)*&6CO>^O0+Zvic9<&l_8zuNFy!%CB+*_ zA}%Fubwka~t!O@<__6MtJ&A-J-mL(YRqaf=n*GHOv8J1eDvZ2490B~ueVAo`wnOY6 z;a~iut?-1fh&;Jeip9Wej^xi)38iD9G~jUy@WgH2M7F<%#3kq}p}L?AgRU2!d!<~{ z;833X6-lSXFFdfsE_hAL1K~DSx0K~lkXX{~`*#{*q3+;M`9e9nRY2-=?CPx^-K6#$ z*L^rC?gSp?dgeSM>0GF2`P4LjKHFgq_y?Q(X!(uW285;~$ZNTeLlS4lq}57GHOxqi zq$B4|k1=hjVJ+DR!+ASXLgZXOe?)2|(|3$lDRedi{42ap2;-j25vqS=Fw29vwipN# zVdUik%`o$C-x*`0=}30~4=;j}bA{VyfNcRa+NQq_oSDFMSuhf3&O-xAwfy>lGg0oC zW%h=L^Lr{dYMa&C^Xdd!Us$X0AT8^uB!y7&%VZj%2tXfGCwv>g_=KHh9{@9s6=E7^ z(g-Je-UW_Gf%FS9l2_J54Qla4mT<5=sJ=}Cor zFNd>hWx+F5@iR`Mw`Mo)6Yxs!0&m5_L&exaJUjYiiJ0rnB$}!N_t;35?+qb#v<<}d zS@uY*|0CZs{@(JVt+~t0d?{<}I(US6LQzYrpm@Epj5W$L`wj3=CB9>uvlG%W^eEOlEU8A&~{T*%bnY8E>00c@#M(F-Qtso1n0abj{-NT zb_(7jV}NjX;NRuXR<~PQU;oTCPQ>;69{NEd=~ejQ^4QK~L~k4gs}fS#I~#=eGZ2<* zeGB9yDdQ0j4b6D7WF0C#VPp|((RA<++JKl#to`qf;p*VI znxMWt**mIXIeiG(7j$#h9>-VI$z0_pu(TCN>J2bB#hdd#cBcO`f%M#evi>0Nsk2Y? zKW}k!0#DUnml&sdhu%uOZvNTLZ!rpA`ob`OY1KJ(#q#2G3+@Q?!acA*Lk<%n@XaBV GEB^ujZRt?} literal 0 HcmV?d00001 diff --git a/Resources/img/box/e/box_wp01e.png b/Resources/img/box/e/box_wp01e.png new file mode 100644 index 0000000000000000000000000000000000000000..f036eb6571c9dbb35d21a2910659c9982e2fb9e3 GIT binary patch literal 1986 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngBeJ=7p|TFq!^2X+?^QKos)S91_oag8Vm&QB{T zPb^AhC`ioAE78kKEm1JhGtjflF|P9i7AVr5E{-7;ac?Id?0am$<9s`J*V}*p*~?Xp zrU|(&m*bFrVVz-Br{Hkp+S|`_rk&6IZ>U_Z|2^Mp9+0ei|KIOu_3hJVPkg&^`tRKS zw}z+oew*AGu^~ox*V}q_rTf#W_nv#1YrQ=5U(~sl(qU>h)G=oZ{Jl#c_@nlBUG8bCT|f5GUloKLApMPeJOa-x=%ZuZL&hA zXUo2wVMml+zclPP_nq62(|hXa_1;;jEA^j#ik(!m-Q{)vQ=c6?`HuYVac{jXjc2fU z`YihPJo{*&)#+ZxEBo}0g#0;Gd%Edq*2S8|E>CV3?Y#SB!(E4`>w&s@z|LFv{?yEa zDjrEf3-i~BZah&{#k1)1UnieKK~F!uo)i`N%6n(cbd~$M7k?#N3hNyPg+ci5pmRKG zjzW`H{QVhKIOkkZvcT5$+=in2i|%hq*coMVUqkTcwwOF~%N+B7pV>fN%3$Zc*jSg>zma~gL?Wz41|M}yeKkT+q(^u9yYXP$f1B0ilpUXO@geCwL`_&l$ literal 0 HcmV?d00001 diff --git a/Resources/img/box/e/box_wp02e.png b/Resources/img/box/e/box_wp02e.png new file mode 100644 index 0000000000000000000000000000000000000000..3039df29f5da57904be151dad2e5e4ab82f52a75 GIT binary patch literal 2139 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 bzJ4({#n-jH`Z&St+wbb-N$}vihoAim$ea2` literal 0 HcmV?d00001 diff --git a/Resources/img/box/e/box_wp04e.png b/Resources/img/box/e/box_wp04e.png new file mode 100644 index 0000000000000000000000000000000000000000..6a02eb1fe07c510aa7b90cbc734d2537fe5d2f41 GIT binary patch literal 1612 zcmaJ>e>l?#7@v;HCRf^Yf52t+2z`_w+5pv931p_>nR~tPs`3 z2+dl_wK}0oN!P4t=gUefs8FRzT zFurH~e!fG~YKpZPQoP!aJ7?_Vu+DLI1y zQ+aI<#WCyXBP*dEaS#^6yTqNzM%;fh=1`gYA%HDWEtbUx-`qymFv$>zQl7Dz?tF1F z4Y}Z^Hm0A6ualCdDPg(>bBdcJiD$u8bl)d~x&|Bs4rUq2oq1s!nfpbxw zH9)MrCntY(>FcSIgsf{C5PFk^5zgE=6eV3P`mm!ydYTo9t$uBEi&~UkzxLJPg3KiM z7o~|8L@!vy_6$fKcr)=kTq?X{F%+}5NZHml zjTf~10p&WE37YJ!xF+53oFBbphH#6W`LUO?X|(_$Qe{KLXl)a0KSnv9^Riai5BI+O zlvnZ%dOgBZ8A z9;aMV_u}7i>95TDU5Vo!0Z}WOBZ~dmy(;w>sGs=|ll^@pvm~6Pp?vB?RO%3j-NZ|& zOg?v$a_VH{a^4hO+7i^j8=k55A0bU4iVY6LFWO~MoN5d+? z)>Bvf=eJw-ntWb>G?TR1DdND{2eTU0-mX1ZtpP^3;ibos>bmCAMB9m|!%or%o!O^> zx3G;teOE+HzYFC5o%a8&1XbMvY)#Z;N`nWb8F&jonPa;;GkQf;Zkn9Q$abg{N^_Y?YWO}VkRLMd( z!5o8=q7C4?a;A$VO&}77%$!1B1r*0Zg*eM}yebgeX|P6ac_7uaa|&G#yd(To*#9JH z9qNbSne0b=U?>;Y_C3#$+gw(lHN!(K4%)7M zF=c=66CF)r{I=wHQwg?p7Ei)n_f-zHD0$9BziG|3LlX_1_65Teqy@8u_Oya)N$}!mC0z>`r zD>*?_ypGiKER1U|1HSm0K3xqItMAf@{dM+LBLUV*s-mw$$<(lVm~QX cE>x>F$R4?%;&2TI^v@pV>qQ|6i2IKI4Yc|bS^xk5 literal 0 HcmV?d00001 diff --git a/Resources/img/box/e/box_wp05e.png b/Resources/img/box/e/box_wp05e.png new file mode 100644 index 0000000000000000000000000000000000000000..9110e6b5162c59d7317501b39be3d3e8307b31b8 GIT binary patch literal 2438 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 IJ{XnpZ^Ea~60+7Beu&9Ry*5a9&MCm`~F$K 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 literal 0 HcmV?d00001 diff --git a/Resources/img/box/e/box_wp10e.png b/Resources/img/box/e/box_wp10e.png new file mode 100644 index 0000000000000000000000000000000000000000..bc26468659380ef90bd050ef52a01a1e6310c1ef GIT binary patch literal 1109 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngAGU)tdCva~60+7Beu&9Ry*nkl8Z!XH7!fW>4exBa_ zyLR>eS>NR8-FAI=j^AE>CF_Fll2=D>`@e2w{w9)Yz1M2J_`7faj(>S}I6UD-%(hpD z=I;OdGjgHLGlzer&&@^iB+a7b&Mw;2JnQTN6e8C7q11{u3(}0?#Pxt3Y+BYUZt}nh zQ;~Izr}(nWnqfp4ue_AhMEhy?V=NL_TAM|2pwOs?ZvR=0y8a|TTP^~0LGWhDkg@<& zq9a{I55@40J%>~SZaSV#gA$7K0(Y>$odR^!5o0?O6~*}H%SHJDG-TG`K|x&R?^(av zNdG*3_Ws_2)Eho$Qx*T;_$iW?{v`i-@Q%3?_s>0lzku^Z{CR&(nGJ1+4tC*2t9BQB z-n^j(6r9h>Mc47no_c=s#QMEIMbRTy=MGJ(U-Re6p|gpn z1H?b|PxpT)H1WU5{P>k8PwYSQ+?g2^MrFD&GPf6%MXi{vy7jWtU7eM4#a^X(zTFaF z?wz%~bysANwYQ;p$d1$u-BRzs-KJM`UEf{{*eVg2oi@0W|{#T}V6>-EvUx$gVs2kp4HD zZ5ZCX^nCbl+S_Nc8|H64#JZD#XV&Smz#X639omkYZ_S+L_eycYa*f+2zRT|id|!K* UWm|b5FxNA9y85}Sb4q9e00oZ-N&o-= literal 0 HcmV?d00001 diff --git a/Resources/img/box/e/box_wp11e.png b/Resources/img/box/e/box_wp11e.png new file mode 100644 index 0000000000000000000000000000000000000000..8e664092b463d11b6072237a3a959782ec02946f GIT binary patch literal 1160 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngAGU)tdCva~60+7Beu&9Ry*+v4DS*uhy|@xldnK^`8F z+gEn13SN8m%a=26UTNQ~Iv8wgZ@ZT*zVp`xozoAmpKoW~v1O9!A-0*z+joDC-~RZe zatm&?D;;%|sl4gRhl|L6c?wN~QpYMUdC)s}Vfa`*Q!&W^mXiz!^op!GfQ*x)3^Sxe(~MbcHjBU zo1@n6KV4NbKRtbGT>bQ~KkUw*%i8--@Ab#pd2_E;{f)i$__vMq>aV|cuQ~o*^m3zd zT||l5ZQ;4b`)ljYel}-a_f7Hf`$hY%{cid>KmXse_#Hm4`|mM-zP&E@-%)1v3KqT~ zAPR1*{`dF!8n{#B3jzgNavT>d?Aja$|Ibkj?}?N(2`_dOD>aIbIUYRR8Jc%E&K{r%@IGy4_+ z3lG5oLT}}Eto<*ge)!L}?D_jO3vM2-&PMgi``=(+T$SdFIq$A?bN4-n7ooxs&&~TD zyuYCCMA%mQQ`gtdxW8xyl+~@@v%XdYzOQUWj^q_v4-)+<@(0W z8*2Bme-ma~x5AcT+olb3Sa~60+7Beu&9Ry*2oHT8Ad zu7F@m>z6m@RF^H&_OAOFDxTu6-nh=X=ds0~e^tgz(b>_-IU9bKS91eOykJ%CtJCKne|pehx^?5*ci&Do|NdAZ^IpE;v~RLE@4LJ21T~TiHYCB2 z7Vo=fW&V?vzLASrHbrInB=Np2X)jxuS4qgMfg`Wx>i<6-2&ws9@csP^mFmsa1v7&t z#dyV8T$;61oNoo(CLjZ7*<)MJYn$*Zxm-SJP3rdtMoU$8PT5ni#ME0~CgA9U1cE43 zD#lvjq*odLyBJB&eI#jxo4xhbgIm{)ujID93c^afP5D(-S@2PM>-m%;vn%h%{8{rV z=uz*ho=54S(}nUw(nai7@0wDv*lO{Q$g4|_NMDsadVZCj>b({Fro}dQw|>sQrd@Va zK5J24)e*g4^SfjF{%Kxr&VIHud*S~*|CjF1F8DlYYtGHPId|n_f4|@K_5bJ95;FJL z*x0qfX!W~;zV&_2mPW4f4%{w@mB^lY(Die^)$+Wm73VzeehHX6ao5X*R?4N9olD(b zEo*<(bH#VduLq0X@CUm7uUx;ee)GZHpWSBH@5%37TEE&i-Xfvz;K43bly&*wTYk$| zX3nLW*ocp5Uk|R#zkx8H|ElE5*>bClgUoG1(wF2_mGJAyt^ew*1N36{8-4z~)A3t& ze*4!^zgk^0b9g}Ud@9HO*b~k5VVJujgnWNs^ uUC)`b@NJI7@xp+3mTOmzne{#Xz;5GuW;1i7&st!PWbkzLb6Mw<&;$UEm*L|8 literal 0 HcmV?d00001 diff --git a/Resources/img/box/e/box_wp13e.png b/Resources/img/box/e/box_wp13e.png new file mode 100644 index 0000000000000000000000000000000000000000..99b5f95145321f65fe118d7feae582756a50e089 GIT binary patch literal 1940 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngBeJ=7p|TFq!^2X+?^QKos)S94D>8>jO+Xu7?|FAx;TbZ#J!z(yXdw759{M!*S`J# zf1UM!uanS*C0RagUozy4EFzqWZGKk7v_1WJ&_GFD_j|gBp1N-Ne&O~N3V-C9CNp= zND|*4rMFhX`u8fCLmunB1CaH(@00!*2ZA3L{CtKHzzYav9`aRnR;)ME!nWAW6}IaRUEuqXi8Ho+it zr~c~VL+Y&>Kb8ovf@5RRX6pMKPvB}l$7HTV5C|B9V{c%J9n``mj!_ulh)o?D5F zimt{j%wSb)U}`t zqeUjs0l-BJEemO8Tr8;El6N36FP3^TuOKxy1E8g5=HwxAGV;FgLwF<5r+tf~0Kls5 zU|2|8Ve;E+K0l};H;3sH>1C*SYf4&MW#u0my!##zuDYeRnn^yITh2t8<4WnLWkDA38=w><^nIa&g9@PO`jcY@qVs zp)atb&Gyt}Ig(&~?`OowV!~MkQlp=rMl@)9VLI>or*9%O*X@xjrB$yV_}qI>R2r6H zuguiLOG<8MS$l`%)!Ay>z7U@&2jj3Cwot+GS@0tSD3c`W#8gA({mU*%68iW>@vpjW zhGL^gW>b1pn*aXsMy@Y;-99_DoL*}{9oxcoYHNz9HE_@*&?RRz?lamp%-u5mfFtB$ z;<&RfIaoDRO#WTt9z<3^E;seNbrilgh!;`4TZg90UOl6Y29aSzQaOnCH8UNitn-Cj z#?jaXCr=3P$)^fz4dPW70xVa%}v zRCY173_sM{XCMd$pP1en1;|C?;fLUjuTl?S z;bdFv^c`Pk^x4LsxfYM0hEkC4oS88+En3E4)t%`1R;x9Y*7YSD#?a?LoN(o$5+Q5F zO`4MCI1SM*EY&9NJVgCI?tI&YhxGaZ#Hc{;TF02OP_iJhmg57WrHfXWbAEvKz%RR!8P=_LN`dBOV)#XtB$kEko7aa4>NtMQMwN0dGUO9pq7j^sW|xCb15?Pn}8|va^f8j z(w<}}+Pa>l3O>fLn$$Q6;L__+W$_7&UtS&6Qny*ccwm(eEium+{PNOwf71dRV0Xm^NQ!2 z9r5ZS+Pix?n^|{mc~)~;Kc~iP+Ta|pYvgLA)CPUEwOPp3D4s3#mv7CT0%4#C#LBE@3{Rj8%V2HHyibYF&bP~whij-(x#$s7yQW20 zi=!;r)ZWFE_-VXwM~?A?^8Y%p<#H2LI3e)IJK$FzkF3n&q_R*~a zNKCNSQ0s_~^TFu4pN5;Cf(FS>M~PQ+{}~~H`(X`mq@`x`C-_rvkO2n|M1{45rhNA= DW;>(L literal 0 HcmV?d00001 diff --git a/Resources/img/box/e/box_wp15e.png b/Resources/img/box/e/box_wp15e.png new file mode 100644 index 0000000000000000000000000000000000000000..210b2da1014adf27abb265351cd149e08580506e GIT binary patch literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngAGU)tdCva~60+7Beu&9Ry*J)up{&4tf>g{c(zy7LjzPiYCW8kyvmp?x*{r%%d!{Mzr>{!2l`}QsT z8`}--S-axaZ*Q)yt^NDo{7l!4dGr4tEi>M+CS-@Z{O#=r_wL#Ar=GXk#kpzmnZ$!f zYcn>v9a22l8_%Ygoocn?qxS;yZ$_ebemtD;a`sKxJ3kis?mnMN~PAVS0b2v@X7~skQs_-ZwnYw|@Vr7rEo(@h#bpEze~>199FQZ+WBh-1u|N zbiJ7W<<)0@p0&B3%6)Z!#&^ZfNb{dI?)yYa?#g3EOab>a2^bN_3lA} zoBZwR2fwyI(8w$(eEjkyCttDgjtP4i(?IF)dVGuMqRpqba~60+7Beu&9Ry*;{db7U>vMrx&WO4V3 z=E04g*GsgQvtGX+vgXS!+XdgSE$_@zzQOA!eAjJ*^c=Nay$R+Pz9rHJ z^9p9YFl)N|z~o{s%kG1jqZ&qbD9sm}^JRNv!6nnXr!)_GzE3UKrP+Mhx7Nzya~60+7Beu&9Ry*1p{c1^%;Gg&Pct|uXxY*wOTGxk z6UZ*)8F(hKl6+Ky44D+@BA;$fBc?(H?j2Ooiz{I_};xgKQnvn zWb-oj<$7~xi^lxiTlyk%N@#srPJTvPPw~5?ob@xZlEVs?vwxMpKJ(feOXIbBFPmO7 ze6Hu$dv?pM8L~0|3j_JzuNVD$bK}f^{{QA|+^v!Q{7&lJmA^J`Zff4C*8IBcw}1Kh z4IXc^$~W5z$%LCq-ihA+_d~^wR@ZmscP~DOUiBd2a!P^!`n&B`JjGWpu-y-0Jw8jV z`SV7O>`#{1VrQ4dj$bShNk%(_qGg-5nluYbU;m`K;}>gow!pMi8)chUZ~VIdVte+@ mlGyT|bz3>JU+v2KES*srzcu$1@ literal 0 HcmV?d00001 diff --git a/Resources/img/box/frlg/box_wp14frlg.png b/Resources/img/box/frlg/box_wp14frlg.png new file mode 100644 index 0000000000000000000000000000000000000000..7d23ff0c176665f1371b1471d3cd5d318dffb68f GIT binary patch literal 863 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngAGU)tdCva~60+7Beu&9Ry*x#s6 zOUql&16Vu-1%EP%%zM=MX8v>I#_Ga`T8*VLefswI6TSJ5Kd#R8&B{<*EU;;AD%XupM7J!>hs%cXBK>I+pW3dTh0fkH`gb9 z{yVGxhRTl1FYjc2{`dXu(VNSGYMv#V@#d{qo49}4oczCYicEL>TJZA!Bg?zTg!K>q zyIZtx?b6VH87pob3od?l_{vYd=gzb56d0s`YZI2q7M2Obbg6F#C zmcf0sb@8rsuG>%XUeB$uieIsLO=-V^HNI%kA0-nL%aT2lcin!D zYerIYZrnKKTEKri**zy`;n8cX*OONN;!ogi5AqVfd&4;*So7%z_NJ18pzhQUCBXF0 N;OXk;vd$@?2>{(diCO>v literal 0 HcmV?d00001 diff --git a/Resources/img/box/frlg/box_wp15frlg.png b/Resources/img/box/frlg/box_wp15frlg.png new file mode 100644 index 0000000000000000000000000000000000000000..c6bdc933233dd34fbfd95a4ae804d8d680adb7ce GIT binary patch literal 1363 zcmXApe^AnA9LK)`{zy~PIp>t=idNZ~)(piKaax9KiJQ2Vxg@T{Lj=F4I1?v~QoOaL zdA0LWgll?uY$axsHOnB`T3ab47AF1pvepR6X$HdZ3-0^HKR(ZM&-2Io^Sbx@`8;2L zOs9s2#)kp`5Khb6Q;6&`qy!;B$O@`UzDKrznnG$0&_9m1AqQM}c78ShTxtu0S%JuT z6_{6C0|1FP&x3g+PcwYV4rZgwqstETwOUCUvz$`Cp3 zboPS7>%w1cCDNEPD_=0)x-47F>ON6YE-7n*X^fEp@O?E3P`uGQ-jPHpSslXBx%EqOM%ov>bFHm!q9uZ@x;Q|{6c>Sl0t!qXqy z)nvcC=wnP zk-*L(bJ2s0-w2S&!N`=YJJr_`~rDsRcH2j)>EE|EuM%yXA4I&x_Dq(B=iIz+*f@_*oM=63xRHP7{^ z66o!FN3ZV+6_J-gXmKb6aZrGo^4VN_sNXR{6ACcm*`!KH4ND7K9z@aWOQR8TwcUo2 zF1jXlw95o>oS2M=du8`_$J?x{iyO)hLTX#VFP6%5^W+D1iMC(t3AYj%M-4S8ZWL*# zQ`4F39zvo_Y^GNXKgDYMlOkjr?q_^Al>aKkP4rHN_vH~-%%niATucI&4&q>;Xoo*e zS6-msv8Yjh%8h3y!#kQgn#IK^`p&df2)W7WKuMPxDxltn?UZk|aztD-{$lMZM~(Et zNcxs}lcVnus5!@*>2~UvCW=@3x-)suniUJ9NC)#v#$w=U#O=16jl{=u5~e9Kn0}_B z>(6QBF&x|}nvpVk+XvKb$C(BS{z~H(jEGEm#~)`yFZ#GfJRuf;%DX3^fbdqD0wZJjGF9|$CEf;{2lpBZAHWt z>B2mMSGJZrw=WDPdXqC{Ja(6`oIG!G7HBQk*e74sw+4z)r2WSI>491e(zoX>E#K7u znVfowv3FWIs7X!?&?*(fmKe_Zm-ZfHNF#&!%x}J88VXhhAW^mASPsdba$9tSEEJ%= z2%?WFTY&M=a6IcoG5pq*B<3>o4vutEI!gfKGj8yKI}pdLX}eqB1(Xl+%*M2dw&)V8 T?J5cR^8i{deNTVR;p6`UsuQl_ literal 0 HcmV?d00001 diff --git a/Resources/img/box/frlg/box_wp16frlg.png b/Resources/img/box/frlg/box_wp16frlg.png new file mode 100644 index 0000000000000000000000000000000000000000..53e3b6a7c8326b01a65b0e2892277577ca80d371 GIT binary patch literal 1006 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 literal 0 HcmV?d00001 diff --git a/Resources/img/box/hgss/box_wp20hgss.png b/Resources/img/box/hgss/box_wp20hgss.png new file mode 100644 index 0000000000000000000000000000000000000000..b0b672f5dacc68f0f307fcec6788f8b90fbe2f56 GIT binary patch literal 2885 zcmeHJ`8V5%7LQu0mUPl4wh1Mq5>Z6e+J#6gMH&fe8Cz;Ct%#swX{k2iTMaSQsx?we zYfKiWT7$k)YiVso4b>8gv<%+Rs(QT4zwzGOb3XTT?&tn+&-vVQ&$&4yqO+=!mJ$dA zQgwB~lcmg)B1KVFnw1@{#7Iddf$WR}@dw}%X(1Qs;NbuQiSm?pLghgqSrEzHiy+l$ zv(uVPa-t6MOtB z5d=~wcf~t+T?tw#ZBLpPap_> zy72k)+yYa)rFZ6ZT<%g10`qkKTWgCrfwHq$vtvPc^p5=;z-;~6bUoQ%*qoK94}ubEl-6jpV8 z!C4+Iz>HttP1Er1*H66b3F+wvF8bC#2+!`qPv>8Bxol5vi32Q?RGgFL5=WloAdzqL z2VZk;t1d!MRB@TH`bA`Lk_6?!_b+r}PfC_?$tsDsG$@%*(TnX`o>&AB)O!+{0Kj}e zxZK{b5z?!(2!k{YbDT_9QVUNN@YBpLX1@W_9o>E2Xx-hM$K1}H;>i+GRHF*h8Cafb z0!$J%udre+m~bznr9!O8?_csoP>tr!e#7|Wn9?LrF^$(-Q%D5@jmXfTQ(z-AlHdb-8jx=K1uW8Ys z7+Aj%NA#J2z815J^wy@0^axr{TJn`@X|IgBRjVW8Lj4YLe_FhsV0{#3s4``tBzC|k zj(-(8#rKhni!IDKpB4pu@my0;)shZcI<^LF!${ssx7z(U# zz^HPole93Az1m*A80NUdh;3$%u%fMF+DYrhmB`x4xn2V{Y^fnm;;Fb~rQg9}il_Z}99A-|ZkIPQK0*h=s)oXjTi-$YR!=w5w z@4BZnhAa{yX}lHd7!BlaeV`4^vo-d%@)AujG!gCyiyMBZ!wYQ5%U5aM+Fa4n!7POH zb7D`lRLHvhUE#{7pQy0q22sV`GS1h1X-xBO=G-%1h>h_A;-t#>c3xA) zY^Av3Ly);}pk~xgNBbpfRwPyk#13MGlC;-F)yXQF189W;MMt$5cXEdTmFY>ih2CfR z!9*-dJ$zgLLLLjfkf>w0{xCZsYz=}XDBBRl51m(fXY@-E`@d>plJ<5<2w>W@LO%lf zm(ibf;8huRu37{Rdmv;grZT*q)t;*!j^jl9JKh1(VR&y6P0zL^pZAOOn1vCn{adRI z{bfJx6le7V?)ne%hPbj_J5iw<`d!27wYr`bGkvwUj4m_x10AN?`LL{L1^}Ou;rwo2 zLe+na3D%wZ`BPgb>}m3_@d!T#59!cA<9$WCIUyg*=H5l*N(U-4#{_GeI_CKtT-UKhTW%bSo0g-@ySItT|8@4kwr0S0BthF| zAEnAqF4B7}%6Y;U45pDq#d1D{KKzG8_b*kilIs_SzFkVn*G?>~FwNQd_6=wF z$v&g5?HY6c3L{0**upA_ac#pMy32E~LKQ?!s*HJ#{pEQp-bq9VIucY|ZE(P@vD@hR z5aQ-}wY?+IF0hHw%T1rd9%8r6HAeyFgMejb9%L|@dza+!<8l{v`i0vz%~!EDN;GE% z)H5a-DfHLm(_X_SMToTUfF)gJ>^zT3ztb7Thx%W4g2b3uakDh2Hz=c(k!B^Ta88x4 z@rLZ?%V;08PqYCIKRy!A*~p0`Qtx;Jyet)OR&EV8UE*@&8`|o4Lit#m~<@v{;+RTom8`{mzz5bUcQ4Ogl+PR5SXuc*fkN|ZEdyo jYTKFh=I_sO-?z69P6?<=I(1iT|NdrN2}C>}7jpf-$USTS literal 0 HcmV?d00001 diff --git a/Resources/img/box/hgss/box_wp21hgss.png b/Resources/img/box/hgss/box_wp21hgss.png new file mode 100644 index 0000000000000000000000000000000000000000..44d35cd22fd27ab544943234fac377298c62cf4b GIT binary patch literal 3988 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 literal 0 HcmV?d00001 diff --git a/Resources/img/box/hgss/box_wp22hgss.png b/Resources/img/box/hgss/box_wp22hgss.png new file mode 100644 index 0000000000000000000000000000000000000000..c20e297e9795485f8618e56545cad695bc5f627f GIT binary patch literal 3845 zcmeHJ`8O1f79UIYC7BTulYJYJb%UJ zgXL6n!*PF|64O1jsUe_dNObMgVfBSu!vO$FI`^^1832F$z3USa?h)(_2=urW5TYF59U`uwd|6rNw)#UP z0KnyDZVb1>xqZq@eln$XmQ~D&{`uXX=xuKwUx1REwDmjt>>6WcA?~79aqol8AI-zV zU7Z?*g=u0+%3h)~)(PpQjPR9#$n)nYcdMSlU5`+uTUh>mas)&I);*`Tv*@dAFcvEHndV} z!ToFcK67OU-}y|#A}CGAjc1cF+vxpTDW=@ObO+kf){-E32X~S(;Rllnf5b9D ziBGBP-XIv1GmbxJ(}^}AmP$aup{piGMo0o`AY!}R6WEp_!&=%^!2ttauZ2UDj@ZDrIEJYL3_bj8}N-% zNk=`0XL$x+RBB!8ysU%o;seUHV_QQcqRO2jbwJCqol+6FzDML`(C2> zs603vq!X^chRIR+t@9K=G zi3{9y4N_vT(OOfSvudFTNNBjqUc&GXGkZyq?dFT;@9x|tdYzZza)Fl2n@EFK+HXZ_ z`pwvirsE4D``W-y?1nq>ZQ|i(md2}QsN|3hwi0)iIR7^VSG7&8VHT`4INjCPQf<1l zs`(7M+0{8;mt3mUA)9G%mL@>^^s1T&v<9cb2xYf-j9dDwvbR%xhOmi3^ zFfjP!T9<-P4_!lKv87$i6{fk--)Pq2Sm7Z)Fr$;+7(h@Jt=iH`Z5b;T7={n%?!xw9<&Z4xIqzaE6GczMpO$Pr_6$)=(EpE*j>laQg$z^@4c@Rp?BqZp~h}WTA&DGX@ z*m*Q{BAhZSJ!S3|QkKbOWxf|!h1jiSP2WtfuK_)`clD}xA4$)Y8`pJ#bZHAM+TPuo zGn@ArMLLI(k$-0Q+(#a$%*774bk}p^HE0WE)$Es}wvm@DjN~H(**f;mAw$Ljdy^J2 z7iD=g5=%75o=%4&mqm}%daqD*(h2NoX*K>Lp1bDBb@xP24#~>H}!ck8dCPz?FIIk zPoVoXrnw8d-K^WT#uY%hKA&${Jm(3XIzg&;?M3@1MU$~nMPAQqdQ1jU%U)~-`W-!N zN+Cs)(b!LF4uYIziPim5D)6(5bsQ24=@5et;3#WKp_OdOg^ zE^}s&qK7qz;aerISBot=1^3 zqKly6dc^{5fq32@V2sGW`V8gkauN<)S(H_O+vSYN?c?<-enEcQc;}ou{*Ny$uj9-C z`~E_F|I|9{DGX71!|XV0T_i^{xF@huJMx|R$cHP?;9r?J0jAOBJl0(|Ri~klX{l_` z{Bsa@1O_*U)b**9&myf7LibMs-goa5alH_vEr%8;Vo|yf1vd>nl&gV;FTq2;uVaB` z%ZBlr|MS4e1t)f(KPh(b1{MD5i5r`?(S}=Y}EyC4{#z9`4 zLg))#{oUTsc|O^PV|}10)r5p!zET&B3NiSk!Im^JdszXQM!6Q{mvNhTL#$l*K1e7H zb?lS8{euN8WC39o1N(@3u6(*=cenR9E1sTd(T;7TPOJwv~UIN^9 z2{TC05wYZu&VxE&;hckAR4myw#WOhp8C!D>YvM(bzU zE2?W#w^Vkz=^>L5{lgx-47K2cJBAHGQG%LYqeufmdZm7Rf6YMz|I0 z$XLYbj!bDG+-4mSgsn(xL%K?Mr}Xja%MUrdBop literal 0 HcmV?d00001 diff --git a/Resources/img/box/hgss/box_wp23hgss.png b/Resources/img/box/hgss/box_wp23hgss.png new file mode 100644 index 0000000000000000000000000000000000000000..a7d8db0cae60eed53726ff806cbb09154d75a872 GIT binary patch literal 3184 zcmeHJ`#aMQ8=j;IWxghxEK}4rC8r!}@(!OZhnAU;l0!L_W{a35jabagp=c!?){0U_ zIfXLI=x7lU#HD2F-a_5J<*3*PtpT-W{F*K=R@Pxo^@*Y%{j5eXYqbW}hf&<3Xi zj_#|>Uj;*1akZ=B=%-gnA<~^-4=Qff9bFyPhTsn3K%mkL)ujL>5J(Z^=IQ~g>QpMT zml|3^QY*y56f^voND-+y(@&$}3EQbP7*4ye z+g52eUCp;+zDxPn;E8@msoc8z6#jgRmc@T^NW<^|qtEicM?VWFXH&k) zflExSzbF%X?DC^+G1Q5S%!fv;q*2*jtGnr=xhL#&8I5kp6bB&7w5*RU8x`P^8|!eq zQh`|I^2^QH+dQ{!XLvi3^f`-2S4-3y&n`~Z35jI8_eE{uG);7GtoT^oJR$?d8mN7w zOjun1+~Z9_w8P7PnLYtn8r1%WF8tFeWm@D`w_^y}<-M_&bd)dw|n9ogujW(mYtnrgE6@+8AIJRt((Q z_0?aHZybFi;GR-T_r}5$1ql$4q^G-#nax8fP0q(kGWvMB8V-*SP7KE%Ecys2-2U!U zrd86k{p;wN%vP}T@x~1rpLCTBoUU7!gcZ1)b4*k61*N3?d1c7Qc&3+Pv0bb=WXdn+JrnX+~74DhV}0^?4mm?ZL0{6WaceM!tbl z!;E^;_epvAn~*80id;?VM`J)^uG%1y$!V~pUyfOzzKfEiaA3*)65!L zhlDRKg^M>Ok_Cd>9mFsm?*Sjp!JQ_;J=?#P@ zFTcZ1cxj#P6yN}p?OlNAyeU5QnZAvh?b>+~#7_%Qul1$1m!9&zTVpR}LEA#w1DO41 zag5Fhc6695KBDCys}rharyUY7T{1ANHE1yM`nu;%EA*!M(gx$h^6JIoN-X%@k#=v) zDaR{DxlY(7%foG=7e(i_0ndk+>@R^H7Zo0>NWPMU3SJRLEMD4muRr8~f!|5uf+M$v z%NAjXvw-SDUW&_6s4BKAeC+vT$_Zpaa$#ykU@aMOQYU$9GT)^Bb99*4(%ixT)m$JS zuyXzmKDl)lzU~v9?uPkXg0GLIwIec;G+%3-w-!I^5hOmi`y_ABBQRq-pP>LcME6 zg$W<<3|40L&EcvJ!I|NDc8dP9*X4Unv)l24!mvggu#^UF3*=bA^46B8&Z5p-9V+6s z_!p0yQ+^C{GZnvXS+>Z6P9;Q$`#JvYAL2UwF6>fy;W{3S3_c4)^n_0Ig>cvn9UjdA z(NMRav+ir7RiExd2JISGghOqYZrZnGGkz)Y>yK@Oitvzj&j^KFRW|Zh)2}5igpUW( zeFGkNzn>cs)!j)Oqh}GliSHAYC7|x+Wp<)=M@UZ96rF5Up-G0g0M@7Y-|7>e2Y#a= zD$R4vN5eA{VIf`a8sqNAoELuSP|znU?(nStVQG16y z=3Ab+MKytPCfGe=$KIq;oM`%8in(OU0K2*#mHEuK=^Lai8uga8i(3q7AKdZEiIlWe zi~^iwBj%WD^@Q)i09VUlLCkp?VuO#&bp~|IZhDmcJ07UGG5Ete;=Z$L`u!o}Ag)uE zCL*5hX4<2TfVFKVc?4I5WBI48vc5Ffw{ZIkgvF)JMQjaIukDa5p*1&qvQP5~-mb*O z^a<8WZQ|6BQIaq7`A{93sb7~WNZEBc$CurXqHz6)BT6G=yQ>@QKmcp^;aQX!(}?`` zl61(Qg$PK$I1?r=g+GF5)!?;nwCg zcK~qgOx}0IdL#64G(#x6X0xv{e;>W^y}Ueo2ih!TdMpl5FIy5tLZ!oFQ}n){jM$er zNKx8HEHD)}@UvUMQ}ZKg_$++TxgyW)y8>;B%k{q?gvWmNDeF&n)sT{|3T8epi=IKz z&v6;pLp1XU31RXOnm_$CiEkuKgNn{1`ISV`@iy0W?4uUY_;mnX=prAyFYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoq zfu3cKah)Fn1Dms_i(^Pd+}pc~Rd+H3S`y{WFSti!WMsThX3;bGB3RSX+LpLmIbUtv zmAaFwqW^nH`8G~}GIRN_@bZZhp1iyL`*!>9-}e9dB5v=j*G$ZLx47dM`}+0k1y^5u z_g6#dufe0BdGqJnFX`AgvzYV$_6~l2enIicO2_noBHWruZ=AX$c259u*F?Fn<# zXE|BNc0CIL=?d7lp7U)f=d3`W>mE7&+^4qXx@v|S*yv~0i}&h1{22<;Gvj^Fw_PpI z!!tn^?K8iXJ3Sqhea%`XU_C?a z;h1@@IJo;4&x~HM{i6Aqr;#R`Pj6lg3}KsvmC>KRLxk4TMd(joT3+KlxBCXu(=VQZ zc;X}11(2I?_^G_-UYz4hpyVlF8gO;JqVVa{C!?P9|D{nSe{O}i+`rjUcH8x5m(}7g z+rgoGE@OM_l=Ul&z3OL!;^7rAP+86fT#;P5-&c_T*!LwF>%A}VxXumybz9`4Lydb^ z*)EZ@fl%oqA@b4f$2pKyXGKfhmUfsQDmPnrx9lQ_ceh5+ zHk<#&T;(4!w{per#ssE^bY(lMz99i&LzSZLI;gxD<-!GW0 z{i?@HP`CS8?!o(|ZubKoR+{W?hInF&&aCaC^|xF0Ej;u&Baa>CI+J|uf7>`~om-z@ zyu%0a;KfZD_on@+{lW`Of5z4?o&jSZ$mR4RNO}sXkURSZ$)1z<-NDvuMzTh=ULI`V z8Qcc)1s<6QwB<#w@tHo*J6aVG&xIPq22PK(fS}TmR zA_SGEc?c$p2OYW5Dq>is=-Lx25$5u1_N7@bd_Q)UZBwh7yek4!!u&D#J6rqyznYko zQx|;ZyXSZL@6*5gRPNp8C_#6Gfa=>_&c?NJdp$wv?EBK)OJd72mYrX0z7muO_mxcF z@|y4Lm&z|{QwGwu5CEzt`*vi0KZN5XG&e7~rfuIUi;h8D|*)+oK| zSJLC{_OS2SvE;uRkHM@8M Qu*zZZboFyt=akR{0G|0;qW}N^ literal 0 HcmV?d00001 diff --git a/Resources/img/box/pt/box_wp17pt.png b/Resources/img/box/pt/box_wp17pt.png new file mode 100644 index 0000000000000000000000000000000000000000..7e0b876ccd636783afa6bda75889ac60add68630 GIT binary patch literal 4695 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 K+ccg$clkf+RXWrF literal 0 HcmV?d00001 diff --git a/Resources/img/box/pt/box_wp20pt.png b/Resources/img/box/pt/box_wp20pt.png new file mode 100644 index 0000000000000000000000000000000000000000..c733439ff900b64881acddd8eb701a36dd5c0d19 GIT binary patch literal 2272 zcma)8dpy%^8(+&|ql3*5DfYvdL{X0%D%OwYw45G?94a!>c@!ySsD48)lV_S{&6dzX zk5idL$0as4tGuh{b?Crj6p}NQ=chm3Ki|*$$8}$y>-v7L`@XNk=X2i-U&`*48U`8& z1Y)HJ8T5xWAC?r98oWB+fI?xlEWv*_2~jCE9D)s%SXUoc1fnWe^ZNl+*hZfqhbABp z>z^*kvgd~a17PQxM7NN{faBD}qyw}V#EAokjwM#H_D|v=qM=9?t*>y4UnP#0z49(TL-gq|ui&2BzN2N^s0#Da$ zdMuwd4>7DLQs)6n; z!vt#6rAO)Ue719Row|zSL)F_1Do_O0qMV9q29l!(Q-ibXpZj0aIoO@r*9Gv^HV6hM z)Wl7;DUU2MNexc=vOO=HzBGD*fguxvpYO|ZUrO{Q`;>-W@$(Y>?eyySpuUF;$hM$` z=5a4|AcyM`Y6jCoL>z^R#%WN(m+I18wwkWrCrf&lR0WmuZf>zccA0ew&HBHioXhll z-P^1eMy&yjz-OV!l2W^0E_6|qip|1lbKo}7RZ)-@@0m=o;pJerM5D`ZsYC=IZxcT_ zWP?rfk@_dqOAdQ(JB!rfKGGhm9jgTR#-+RlY@!db+`1+oihJPi8-Z@Pg$pc1V^*Uu zk25NXs$DT8(Q=Y#jCa`6^%PrcJWXrdNm&FFTkb)zMh~~|kfH;x3$H_w(<2lR*+u9S zZsq;e-UFKY9z_<1Ex+ASuZ!s^Z62kN6s&GPaP`7zB7iS^oj}ZNzbh0#qA#h9I&y45 zvG5MW;(hUkl3k#;Mg_&cF0hbMZASp6e?Iur<-8_72z#mLgOf`Msz5)eJtNFjX&`%;RHm;^h{1K&cX4@OwIS3L&;++FgQ> z4gz!EAaqgJFD%6DW7hp_oqdw_b<+`M06ojgx1J5xcKZ!`Un;uj48cMG%3=xpvc}2b zQPatDy)JCCJ7bM|MRydcbdnSib2a(=M!QDX10uIFlk2^bk_~Jv8V?Sn+B2>t6iUM> zQvV>>%7o2eM$}ilVA`oujakFxXE@x%zIaPt$9qa)*?)#*tae72#J?KYYX)sv0YP~bgDB) z*#6eu@p89Vcl^gx43xuCavIa9Q!W$=EvwrSJ5F|=>?oD7uSg%Rjr*IeJg5Al9UH_T zE7LQNdGjWyY1JdBqEt2EyPE;O1Ap((VF+?xV+>>B>4S$VdIT+)@Uv>WCwSi94v_=l zpl2!?PjkZaUaW3!b%>v@jl7ZlCAy=_P-!p{PzRaqabpamTU`iYa7u2*j-1-q%583A zFPl>A*~N$Rv^Vx$1Ikpd%=?+y?wn7^ENr@0(7#(@Qdk6nd)#n@%lU2{vv^E_z|?DK zj^(?mHVpKlMrdwd$sl0RJ*^Uc#+>mx<}NS^gT`6b8?~iv~1P}s_? zfReR*-={x1BaM^RXk(IoP^{*j$Ob5lq|r?T0Bh0h8A2|UtfKLSc~0JXn50<>huEvL zA*&*G+rkdh28gU|vEbM{OOiyE{=?m^`fVd%xZfiaXRnGHAl8%$r0n&#nLEGub75k9 zR;khD%?l>>&RpRzufY?aXEKC;zq~ct1F7%%)!0;gk;6PfjH*bR_jvgdz2mp6#LmXa zHirOmfx3gq5P^UBu|pv$dAi8wqcaQ^$QwbiK52MG@P%kX16*c=fR(r5J^Ng~Y2}A# z0r_HcLMdl1%s6<{}9POLxS#$axuT5wBS49JW#&6e)ODBOF?t|dyrVb!wZim$Ybz-yFT+Ws~(!TEY zrUQi&J8=iXT^&`5R2{%Xy^~#~_&63bowlkxlN*aa*;gajj2nFuPjz>n_gE{QP9J Y_wcBF;l)~Y_ydCQaHD{gr2Xmt0DJZmn*aa+ literal 0 HcmV?d00001 diff --git a/Resources/img/box/pt/box_wp21pt.png b/Resources/img/box/pt/box_wp21pt.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d6c00894f478cd7bc32bab8b18b30d86ad5b35 GIT binary patch literal 4271 zcmeHK`#;l-`<^0m-prZS4v|P2!-QgXqUNv=IZHegaz1vz%o{VdsaEkcho>Y&$)nOk z%o3>)5_)K%DV0N{kdM#5@%?`8*Xz2k*L}V2pRW79f4KA9T*ylDI`SY8NXdypplxx* z7Sh1mx3Ypm%IPhVil>qBp!%13vs;C9xC7Mz1Zpf&SPzx~fwqI(j(QNc^s{F#7W0dX z+j-R@UPE^^f0ECiY-yQq;fqAw-3{%N{MFUft+xNg{~Y+g=KwE+5x;dOpah!BvCaSA z0Xp_WR)1^4a%U+%Tb{t5{uff65gy03M6Cp(cfzrlu!Q8`xKp6B!4c63`=d`KAh7!n z?6*E+e%=KHQUp5@96VA2hDr<4##)r=j}!Mt-TSur=VO7$1!4!*ik#9Fc`OmOu!b0$+XHEn z9XRHA3xZTx4}5;#IUKrqD6~xf({QSwtyf~rFL!vCxoV|t*XcFENO|bzmu>qr;0NNj zI|*S>)wxTe3%$YZf3NaA3JA(Duc+KL>kDO*hxIln6ZsPC!C&mJ4jxm7_2;^tk*22C zS1bhY4s`uSqY!Z;D`F*KKIQo1w)$dup~U@XmLjEN4a%+caFqXRGLS(4ZOflm{2(Rf zk#jPI(?4rV9Y1-%!vz&Cr{B*_OsJ1AUOjgz`8AtXUub!ycWxJw-@9Z3Sy+02^%9sf zjm1-UZ%&Eq*H7s5;vF{<>?T@y3Kj3l8*kTr5uLhm!P!yg8?kALbfveq_sGA-ZX2rN zl&4K@+iC!J4T23E%$AO5e+A>n$#;80$S^n0$v;UiMmW?TM=C!DoGF>ZYI~TcxoXJ1 z&A5e&1C_)*klCSBa9)*-;ZKzR(efD{JSb0r(%@1OXNg(`zq^54I46*g-d12HV3}U zu0C%S`J8oJrsGHQx_l#~vBAevS~sL7c02UT1Zc2X>BPYX$yCx46z)me;SWEYCdyzG z!NnM6gSWNv325$K8>CtSc8P+|>|Lng5i(i|WMC<>0U{1YJ9WD(rkS4WWCb<7GMOD< z+7`vo`GpNKHoy!lvy5m?v6*j?IZ8kh?Wl{gKiR`v;yrk%yc5VbdA3ciSg`n#s*S5w zpm6%=E|o$2tZs6xM?o3Ab`nCm+r~^r;hlYAoSW>p^FOr%4=Y2L^+wbKc1!O#@AI3H z7oNWqx^!t}jG4z%u!b2G`X!B{-`Z0!^Y0S~dfE;L(D*159zkbz53`tO5F3rRv-`+m z8bVyWlvvZmE>rSO_EDHv06vZm0Xs8KH}-cic8giZP2*pSD?JsMd`SA;sBQbq!I@gY2xyds&a?1$71i2}w}Koz zY=@2xPha|{btA3o(m3>n*5(j!RluT90Zh?hUKOkQgh8x5R=40H)~Cm~PwPvV3DK?U z^72t}!^_v|?+l)v+GMEgd#M3PZI7tx(s)$Z9aQJ16^wK&brZR_&hQyH15B1fZvcJ$ z(@g{_&LimkRikGO13aK?VVdYMQ^^x5|-MXgNBp`fS^XbDc_i8R>E6XEO9WEi7h*KzLB5$?0Ua2BDqJsJqs zm``xPIVj4kFuqkClON{ zsTQQ?I}7f;JWEdE&dd1cxFro|=Z3%lwxE0WPU|Q-*C-?@)U;Q>5L$E9t|oOYfcShE z{KXtOFo0j|HqQBTUg?4cI)st6_&uETXSB|HF4{0d-Zz+qVD?x-M+o9X&Vidvgnvi4C=x%zk_}fnt=Lr5@UVVFyI%Cf8!EnOEsw>d#132pRDaQKj08t3I zr;YE^E|nggkN8w+K=@uQ0c?aNog)1lg@0r-{qj2O3&QY)O%cQw^CUgZB)6?4vWT9O z4!_yPDo#TkP~NzUi|?{@X%(|r;R?~?HGJ$%5^~`y_e6i8A|MoJ)DC&F|5q4KZwPn_h;p1CzbETCE{F4 zYB|LO_{)qPx6(F#K)EYG2tgWcG)am>*yoLLyl+MBkA01#F=xiiYLlyCTl_u!9YUvM zV%z)TC2aRDTUbc88me4Nb;od%=}@7=m%V~Yye!bTbJ7;sA=Wu1kk9kuGiHSmicW+m zGRi0?HgF22%Dr1>W4hu==&A$Gytyp57WsJcn0A4~oC2b*Y5&d#?%R}I3%WNSjl5Ri z5)~Enx%Dc48;S3{H(SRR5j2rq9bwALB`*vHsvp!}o0zT556aBhcA(AzLIa*`Hx|3u z2j@7774ZD`>HB`ntBEZ`a_Jm>L8P~#Ry1E`UZH_P3&QXXSQ$ZIyD@ri%u> zroLah8t@RH%J(Rnz4ztn(Oz=>Z5lP-U;JG> z8^KXi%x3%0lP_exVHk0sbRKI<_n`(BH=yV*R%T^`Q!b3rmYoR6Zu)s@VIRXulO-o%!fir& z>!Hz>OTO}$8C;S+AAOy!UV~!$MUUR&4 zTsVca7?f8>=s0-6q85O4baz~?kz#+iUFtr7`;d3Hj8Hc=aZ&UdBd%VBQOorY=^pgs&wzhzk$e1=Y~FVw)mre@f~rvKPEX+Uei;incSYk^3sXU(5(BIL}{rR z&6^)+Rc z{R?|cPDgQI=)@Wq_)w3#Jh%?9PWMU;SdXjk{_?;rA+euyXLk2!q73CJFwyc{Iw+(* z9~gi)dR$8L%XSX==V1tRqvWWlm^5O8ggAvEldcQi2xtY;&2iwh5;5;*^05s+B=~qAc<8ST%eJy z_x1@HKv!W-5vflR#9!EuD|)@roF0+ab!d3^P59Apy|b%3wbF~>%Mi@E9@Z1;9|$eK zbZ-yz-Dowv$~!8qRMF*~eQo~yC*7SR*P=wNCg{9#IcWB3{}7C3c>8z}#IDK+f>G1_ zD6!vcx+Eu?dNn?0t?~RW;H_*Kc~GspaG;WQMTNd+$G=et;WL*SvR_b5YTahzmf-}I z>H%q9X>#oRlpP`2_F8`30ZU7scz0i}e)IiDU!I(_EtK4jDvrWS=xJCO*_Qk zL3#q5zZOg7uK@2XgbsEbplMULaFx%(%J~s?Uos6Hmi?AQGyc#YaAvWEH1aBm;!W%A zy5C5SGTCp^Q>yJW0)e?MzPPOmz=z~)Dy5LReBQB5eu3BTjRHj}qMU7L2fJu-oca-> z{@Lvu&B{NhC6Xk-m_qaIjCV~xulo$ZD^g!N#V-b$NS(o#tgPMbHrMngey`S9zKkQH zn%Qedre@@Q-$3jj2UVV@c9cn*-8K@Y<%tqY!u=B>%WvN==}{_mUqN1Nz>gFnT_1iD zPA_UxUY+YWNB_<&IEac=xnrO30i!RtFrGqLXuI+2@TzMoe4`D&wz{eklp;xO*28^(v2T*}0NF=;FeC)r(a3eQpE5M^@_DDE-aNH}Eg_;2Z%d=HQZ{(%Uo$qemH#i2rEDBbYrs}Y&W@^rZ*Y(<*e+TAejl&f(O|V zY)Izp^_ZeRMmAm2F!7K#?T^$SgGILW;MCq|_dE!I1r1k!aT&Y9Z*=JyCD3W>7J3lD zB+~1E{aP$7LFR{3eYhR!b?TzA!AnE6ZOX464z2zHwElN2%3+u~*G8Lz_pOT$vR*`IBF5jPl*s&@CALpa8LnRPV#Z&-fg z#Fu?G=$t3~ZNxh%)Q8$%{qp7(oTPG8k}JK9SrlVr7?|Nl)Fr$kPw`7%snMUgDMZJ9 z%GSumcAm^g_Hu<@3C^i{k=20PQ8#fdS5B1j4MQfa?f<^#fT}tZSdXttF2Y@w5e)lU zI_er0?kQcsmR+i_pN2qCaVwq)d$SgH{POL5yuGzmmaLp5I9)f_V|wAJ^Jt7`VdZ-& z1e|_*4`eHz=?7smm-CK%F6`XG5$Sl7=s$em6X6_pcx;H6k*~F;IL;fe!q}@osU*j7 zuFR_drySxe$Yj{9=r-7fm`}~@f;D?R2nDkWDB!N5heXfhovX_nkO-2=LdzR_-%+Jy z7h%yuVH0;stDyQ?Q)pH;_86h2Hd{ef&A|4@&ET5lcJ8mLk=8ogrSBOu<1BVvCQG=4 zIPodtN70%765(scU~)_LSK>p9&s7%(d6(S&%6Py|9Xu;33T&r;IPxyxgzdG_Nui>R zKJ;Y>Z#k4*HqlHg8;sTqgh@YG?x78x1skaj=}wfkmN@PPW!MNooNiQYzCHV=TxDfD z7EX7*mw~SV3GD(pHXj#xTAdj7jfkqYcB~e?0Fp$!5-_)TV=D22h{LvM1s*N!Bli4k z3nErx&i(GT>+8zl5|N7Bk&Z|5Ww~8>u{So8j^>rB>ptzX36ltj(`cSnE?Pv82R){5 ziE6(e&GD^HPkj+UTc%i|%_OM8LSReI2%q3$G*5K!GzFF@G3~GAoQ9}0nT3zk8Mz6C zT5mqeSp7XC~B7_-Rx$Q;n+}9#G!CG%f zu44>e+MR1sIIw8<7D&gNvqTJl9Xs_`DCFxum-3rv8JLccETb3rX%WqsE*5O>Tb|T8BC*gZr?|Nq zXi$764h%OIBbo7iNVKeP2k8|0jzg&Gj4lZe#Rql59X=durrZI_=!C~tk9L09IYyoR z)(F4M-4Ud%9>sI5^0I=0KSL4DqMIUq$!i*TH+IHL2Ws?ZjvDNfd8NmJ)*+R9tbHtXqGkTYr1u+^0P3Kh_fvDuThu^%T=BEtSZFJ!L~n&reB!pE zc`#;7NynkE1!Sx$4x3kRt3B~Jl}8H@vp;D)QrOa`iIQ;8iDJ}l_NMZPFzqplPBap1 z@@HZNk@I7;kM(R9ta}w$?G-Qh+v-%}CIP~#U+oA;suzp*_KgUz%%alxPFYRirz|nfG+3h28m`}N6LCI|m)+LcU9r%9Q^Z9J2+D|E7 z`xAsyao=_7R%N!quyx&Z6|v*eqe^4FJujXZMlb_#fv%|5sya*!56 S@HzI+184V2*$nj|)y8Q#(@tpeF6affpA5zyWZu#h4%Ko>o?2Runv*L@_a; znV6KBm{1&OG?%h*&$Xs%&xPvU-8I^A+yCSL4*d5y;9Y&y=J-wkL`SsKpa1OuIPLH# z9d8(jw{j%_0J5+C1>0*sjMK3wK{R(EI^DTRyz3Q=1K_><0*P9II3fh5bw&$*>ueMn z0N`V{Mww#5JU--8gTd!cqHg1$asz+JiY75&rp9x9_w`c(f?=GjahcMCm6esM z(vK4pjVdZ4y>~X&e+t{IaXu_49sBv^ZR&1|!jb#ZeiS2DTwnHmkA&U)f+oY)#t$!` zfF?2|REFgsOy20NjbGnmiK6+wiSL)4DW4YnxNlSXlJ%yfMlkYAd0kfv?7R+wdR^E~ z84nrRQW_TU9eIOKEKAzI6I3$iNlhG>lyvP2*|J9h=b_aOoGW}ARMxqCAs3IrzY(FrRtNV#Fp~VGhnnDN>81TDG#S*k)9IT+G`1r zwrGAYy%Dt}`Uc$h;ge=&l}^g<+8_6f%(D#yL=gR|-$?{lteMoE^3((qdw%IF7B`|A zQm<9xTKsONUnDI5rH+v0_;onTN9im^tBPjWU3oR*C(?-_BxSPCdLcfAN0-_BB&gMG zNRCvK7OV_?8{Z(FJlB43Qpca)k8lW1a^)N=q38~xG2gxoZ$eCda|Utvl?0mGisTqn zFZQWXm9M%O^KMgIc+=Fa(7a@QMEu2BcBngsRDPK(QSQClqu4??C z>#Y7r#mR5_zEqlc@>PMl0bPvKk(B^mSq3bg6ceyL(VE?6F^n!0eR|Zt$jURwWc|AQ zGfr!k8Rz2hq?4XPHm?#W&Zj$S{6RvnWAeV~Z{1km>F}IwP5{Hv+ z-B)UV^i^RmPz)-u7bWdvArJ-@cvZMZRfzTij4i4xDegGh`z{W+1G;}x!uGXmHwTL8 z5N9CtQV%I5I_QQd>!b;g+h?!kIv9Qv;0{GjLlWt%42F-0W18yI6e?2ejf2m5`GR|m zIn%FWW>10A7$#-gpI-u`T=%Jv!RpZi*)v$KsnA$e?rpfi{A-li9p05|0>8Yfip?U> zJ3@7n5M6iw?1SfLNPqJeW_%IyDokZ`shzi1Moo;qMArKmjBpK3$ij@ z`ip%DIIdWB&{wTgE_wYnCL1^iURA4MZD!;g^D4Ql*bZ#-zMnh+f|*43kn(REhMta< zb-sTo9(aj|e#=+T`z(Un{~ksU`}mZU{hP6ptydHG*>#}3zp9nTu3FmPy!dEmonN0Pjnu2Udp|jB{h6EV!ey?qU$xd;v(wLKN@0lE#u)9 zigc>jl(y6ou7Eqt|$zo0@sf7S!iz$hx!->xth zi9w<0-7(u=Bg4(2JXoE+?-DMa>ugPfJsna1BuFZ%H3WmO|5?d91Wan>|GnO zQPTO$yNfa6Pjv_=)Ci0N(yN#QnsMzhRt&-S{ZW@-Ob9DvIo)dwmbHY;?ZcbAO|Dt z*2B8qsn@v^e_anXH$1UbI7OQc)JlA3FxK5nw(9U<$RWHj_3}YIFn@by4DZJ*Mo_Z9 z6C0=}`gNP(1H2+bTcNsvvNvkq>TXrlb{ad-+HK_79nS&fZ7vrHn2K;Iz7B60$X`sz z>wjP-HYNC|CN(u4Zv52(b@JnedVEoLiXK9g)#@`1qXyzE%QS1=>o9GJ0xOmGdAv`2 zaFdY1W#?Rg@nt^-oM+evSWRH#y1?nmk@ED&a*l0eg2?_Z$%Q9&({*$@ zFt7Wwl)j#TD<cnP$6|?-RpUo^sHt zKAf16{Lu39c7AOkz7H|vGoxS%jvf|?VS`0s>-XH&_xOCEL;zI`7nsbJDQv5$S5lll zpB%Q37;SzHGSxH&n!m1`HB+Qbm(?E$^%gSGRX-GLR48}lM9rXDk;^4f+TO7@ zv=srPv!PgWGxMhPzgfCy!dkfDZ}ZW1Jddhn))7eSd>V zXK46$@VPLzN5rf*%x!7$;Pwe9+r!)0m4D+(Db8fR;Df31C0NSO84V<$;c~5$y9DSH z8tf1vH>j?uqgCZxqlUGCHu*^Bf#5oS{!SuWCMWvto$VIF6UnN6wz6xr1`sXe(9ZEZ zo#R6l6up^m-0lD9Q{yxQDB!p3?l)Ui$UaU6nk~c6)x;_{HMRV^8{Ut1*%u2NKU}Ad zr|Dvsi6N`1&-?U~fVPN)2&i*-_A6*Yh)_tKbT>C|!B^A4Chq*YxJPOh(c`j9tfX*3 z2Sv)Q5V+^Bj~%8EFx@(!o7UC0hcOpZc_4G?Yt5sV8ufcI(>$tDvaw6RQ*a0Za!r0) zq@6CXRIzv|4Gh}4;>uMt`ia6qZ~BnjZx8MJmsZFR9_Ws(?P%$LoQ$MM$#$DsMe#)k z@u=p3-h8l}w-<%L+4tz1b4eLQY$ARf`evFJY+L%|wr!TS&!CcbhRJ2IN^`j+E+tAaQsM5HPkO3k zv#Exbc-QlG)$G&ul0lzS6Nymv9Os|Ti<&II5vYg;MP;rtsbl>J`a9%upiAcXW({ z%PT>B6^az1a;nj@{rizGl;&6{1^S|To$8CyZ28(>`RsGpWy6xqCr|d}4ir4z9@!VQ bwH@-X9M;pu5&&UHTB=iDDovi*50VF6hI5C|k}jkUlZa={^@ z`8W@=AUZPekT}BdR%W1zck=Ux1(zS%4h;fTrwQ(Qaf3jdAbVQ}%wgZ&o^0<=Ba&%k zax5|SF_t<2Gr)mx*pv>(5W@)}zTr2#uK9q-UID@3+QB~I3I^J`+9$5+ z-#!ll@oiaKpdBLJKjx%9l2a2(oG~81G@)Y(ZCF(lEh?&>aHr3 zgh&lUOQe`|=sZR218EZXK#d+`w)9r>ZXD$rnHmJiX*r*H^Cpmvpej~k|uE&Xln5&b+x0JjMHa>-+7&TWQE>NE9%R^YfRhX2g5Vb!s8^{{U zs=^=;n@;6&GI|(+U;V zP5P4acjw-(+uM!T79=rlt})^EHliMzJKt^EO}bRNdMYs4d(Ts6dv!x*%nZFv#(Z#H ztIrz?s)*x_iI%F=q0U6j9#*d3J>z%b&G+2Yz-uSf^HH)7(*x2G&Ey_}FL27EB&wiaQv8>5 z*L8M)ItQ18a=3!Ht7A?)QfPLNQoXpo-i)}ji$w6pCnxvK%&k1lwZ{6J zN-FT{)JUH}5RWi+ZOzO$%RtuBNE2lkn4rHDT0JykZux65Ax6aN%_=h3RHGIDI2)Jt zJM%*}y+r^Do|i9w5@wDoh6Tj#!iQ`HRHbS-VjsUb(m^iL?^ycA#08``Z-IhTAzr#o zcxR#ObVU7BRzDxlj(q@hd5iwbk&>{(2L;z2+so$TK!HV2E@Ipr_Ue{F)togm^SVvL z+MWb-b`cv<-6B!1?%^*iipR$_mjyY!;_lQ^9 z`wf>)5h>Vq44SLV$#2Ni3WT#VU7HW}7~M(1+{3`#=mKPA+ZWS)q;?;gjJiQvWSyF5 zl={YJ_nIkkO?Xn)7FNkrGNKG?s)iJfD%>8N`sN#FzRhA{hKd!pB{WFc$0ZxN_k=4C~1!SgG@f+1Pwm@c(Vb{Px%=9D-_m?g;Tv^~ zNR;)4K0Fpf=YhJV&q8HUHPo5h!Nz5 zj~kKR8c8)5vjhlfd^dUbM0DdJl96syaOR}LzIz-Ex?dPNQ6M3?c2ZW%V@eO4Nps^6 zZz28@qEz$?d(%EZE_DHK&eXbQXt!{=5c4G;&fnLa5J5@(9_Ut|p+V#46A5Iuq+N&g zf;USaJE98Gy`g&xtVFPBsO?N{sMlr5CM*8wPla}0Sk&{7V}Hl?n4)%#ehcanh58p* z#zTgjvS@WfA!-7wOsh5^Mn$U6GkwNTR;^BEvxC*+iK5FP@)xgGw+v540WTNt%>T6s zOKqfYd3hvm_{dlfJMK`6lmYgW8N-vF5k1meH4L_>EIM^7L&+~ga54UzZ|fyeR)ns( zR-XT(dK?#+{nz?64HnYt1tPFfC^$2Nv7bdhT9!H zQ&&n)z@yCd^$x~@mJ0J_! z?I#29C{F0m`1lm8AM{#f_*K7sUDWvA=6D2@f{H%27C?r{X`)CYGu3@w z`m8L@lEjt8#pM(UQa0yFnW}Lxrn4oz->Znf_43$1TEyXr;1J)&)&s&s!kLve?ks_{89iLioDP@tz$4Dw!d7m&wG$O+H&CJ|MlwuxKA%dNvFNx R@VNqktTE>;D$G3Z{s)OyiunKl literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp01rs.png b/Resources/img/box/rs/box_wp01rs.png new file mode 100644 index 0000000000000000000000000000000000000000..e7391bae211770c951ec3292bba64b1c9a2a9fc5 GIT binary patch literal 1115 zcmWkteK6Z+9DmXz63K{ay%Z50y=&bFYV)g=crDuV-rW^NT$idf<+n;|lpwKMw+`ES zGIz1)tWA5=OI4=c;&*Pfm1D+9+gSWI>$1p{EJ8}K#~@+;2#$y0YIEch>1M=NzU@O zfraw{4q(NlH0s$&@4Iq5C>hoN#yc%Nmc8ljZz6G`non3QRV&&8X`(9}4;ghUkQN?}kw>Ps?%*KE!Q&m? zM`)a?#D6};xyMM9 zGYJ%3MQB!T08Qk_VaoVjtgPAI^^wk3!4wjm88#84@^<`)p&Mp3Qz zERiM0_u;zj6ciky+BXKh+t-?#Vw}=3Y$rEEGN($Je(-Za$rOcJBOD631x>tpjF(}Z ziws-)78kMPF4R84lx^tw71&WruT_9P!bJR3^-H3vk!_$BhA8oRGcVg0siOXY4<6SL zRZ5oq#(^RuC~P?Ve4^8r^s2jrA~=v3tsJqO+AOV&?v>$JfdRIyPy;r26R zio;t8>St zLeh`!S*v54kNllHB5L4dn;@)VP;_BYVXH=4e<0E_$dra^xFzY5_czH-yX89#czb25 zS*D)er>bL{3X+j3=Mdy(q6@h7mmCjP4vewEXn^EEp)JS=R<_~moP84!p#yx)wI{;; dTpvdbJVOpXeD5_LOftjU2MMuBF&$A{@&D>>5$FH_ literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp02rs.png b/Resources/img/box/rs/box_wp02rs.png new file mode 100644 index 0000000000000000000000000000000000000000..1637d4f095cf44ebef5fcc3dd5f3048cc4b3df9b GIT binary patch literal 1456 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngAGU)tdCva~60+7Beu&9Ry*0N0zpBU}?`{C^C*@tp($1A<} zoBG!G;WqpK69vRvzI}Rqe*d1j{~vd+7x8;Ccg3dKtp)XezWv^B-zD?(GynW=qJ6HP zTH^ZCzfF+WikW}de}4Uy*Nc_67yJsYDS8szn!Iq@t2q~5-+mw4nymI}(G!RD$FI-P zlG&U-RXt|^w&!QI6#VkGNq<)GFiY_utET>!^WSpoe~7nnUDunW{-w%hbNiowhreXP zDi3}A{_DvJ-8uh6=F9vHc^I)`sg?SdU*D?3AI|99rD1vD^+(g?T*u!;KIOc={;j1k zP@&NInU*m-qC5&5PjUa5VyaayYWc4#lbStSt7wY8*t%0;_8oiF|7*%Dk$3G2 yO05pwVJ2e9T=i{J?rrZ$O7A&SZ*P11H2=(gjd!2+$@T*aR0dC1KbLh*2~7Zw;Ok8Q literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp03rs.png b/Resources/img/box/rs/box_wp03rs.png new file mode 100644 index 0000000000000000000000000000000000000000..67d07580eba6cdf3b18a2ae45aacc8f23e8311ca GIT binary patch literal 2380 zcmZve3se(V8plJk8ny;ftq%}P7O9GMB^(q96-X5UkqU|yP!Ws;Vg-{3h`f@Kx*M#v zQZW!fOxB`hF+ju!K^{pU+Q>tqAmMF-is2yy@+9QdiEF!idiI>TbLY<7xpTk&`TxFe zzCREaZ1?fnk0B6T+96_M+Id_`0)&M7mXPL7NJ#tJc6SeV zpX6dz3}1g9V9@9Pj9HslO|4$=G;8~r<^`M#Y0+1^ zrHgO|@RAQ$P)ysv+EPpR3oPHHjF(+L8SGFG7#Hbgfoa;n4y;{fKir#Z&=IBng&V}j z(U}ouvat_JN7rcyd%hbwr`M?~S;Pi-Z6nbZU9oXoD#qt~!R?&Idkb!zK|3Ti3`Ch* za<*i9Y$t7BUkmd!+>b5(`kl&^?q6@z%~ve#4kA6t5*En|P}7aZ?1id4SlGjLzLHFa zO99Gz@mhqrjx0;gko{}Tj(vKawgP6K7|;ozu_ZoCBu3)TedBfadYv)Ja7^6ph{Ry) z3oDBNyC<-I zvL@d=ynjnGluE=bA;o!i)zulN7pq0t1Kh;!z2;YfguMl5?moR@jC-+PyHzjPNre&q zfycSh00JTv6ohW&qY_SfN5RM2vQBh%Jo0l&l#g0vHKTK4D}TX8BV(Xm=N* zam+KBrc}&?Bb>XaMR7cFFH|%nFKP}_l~;{RhbxE~GI&zL7EiAbwlUjqApi>>B~cHM z3A(^d0n*V5>9&Qb93KwWmlP?CcGb4QYhSjWf9g1}bBar5FPQ6zMAXFN+%cyxn-MxZ z^$Z!$AFU8mrlQ_($x(A_U{~MPZ`7x-nwu09b3l&xxgM{xIiDd5%2>T)w_Y)$@FZpO zR+iEL6rd4|hgPeHdkgwW|JPEVt(C3ZDIRiFG|_3&tZyxcP#i09Rwe%)3^fL20%z8#geInlp`$ zbITuAhww(WWa(S|*mCRFy!>VMh!Im$(F5> z5)sWe{wrMy4WU*BKZpA2C{-=0&NvV)cVP^^*z)EMpk?p?+uKYZypfVEJN}2JY~^rk zk|D?x1z4IE1%q>fUFc+5xv3i5FaIfsW3e6C8{92F%e)%Ml0_Rv3i?k`XqqXrM8%R5 zHIq(AjPPj5<*)YlG&M527;%083xQD!pV{GU`{e0yX`bpS|D@wjQYZCqCsZS|p<;aX zvP^eBsWX`|O!nzPAu%jm)$(i{HJUwp(WJhhP&#Mv3|~~SY5YD|*4Yya)I$*624T!G z_B$?8fs>Z{D2l^Jd*hrNjIP&n9)A7uu^81X*BDuHw#KHPh-w@w0)5yvXpJD5Z0XUj z2sSjqV;Javf@w_jKYGWQ{m4^OPVNC!vrcWDl_2M;!EfwtfbRNK2&XF*lZOT`j^%d# zbjO251LDBgt)SL@Iyy@Sh)m6#Kyz2U`!;Ap!Qfqx{-Dj4mu9t~HTjf&+~E6%7dwuE z_FV*1)4j-F)*rgA?%;F(q|PZOMJ!{f#_#%@7_H0oLMYzr2d|Upu1}_;7HWK;*}
  • 3E)>Otd&30Zs&~fG^4M2pK8gIH`t2frRsW`}TAx5ZEE zSB%FEzxUi$eh#w&cC}6nrrfu|M>_f3aOs@DQPOcZ{&YbsSTk($C=QKd@LP)`vsc2X zMF7Dn<0a!*E@$npYirjef;B*8_@EzJl^g5qz#CgBAh&z;OF+o~tWyV;tDxA^6oaLR z1|ihDjdO2#2SEHl>zibXXEx8vGDYcOu#pW$w-3BVf;FPgVlD@;FFA|URB8T$dUS;{ z<#fu9_jCj2u=;mp=av2-w&SA9sA*AW2{~(nc)Wy&h?!S#VOq0k;Pp*VJbl5AF67)d z)hUsv2~FNd07g9aZ!p<^so+TS@mVL{mxy5~^#P8QC`GlQek3QoZGH`sUo{_0!Ai7$ zw~t}(Q@DKj4; literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp04rs.png b/Resources/img/box/rs/box_wp04rs.png new file mode 100644 index 0000000000000000000000000000000000000000..d3546572b7e43613c2d917e824e3a89c8106923b GIT binary patch literal 1387 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngAGU)tdCva~60+7Beu&9Ry*-hX$Y+XvJcKXkf#qt0CeQ^2}(@|5;U4G7eUcE>AX0gYS3-W@@X5>Yg z$0dLHyZgEFd3%=~k}ul!&Th4Infrf3!L+k-=RSSfH>bwu$?xbL#deSWr1o9ldmcOC z!emWDtLuF~FP1NRQrybTKB1{#!<4*-S-I1#N>}@}H!t-OTz9>!^_N|#70_$m7X25+ zu6$n$@)`%b_e`ajm96u(UK9EB`^ihNKCiItPIc#NAZ}9l`TLo33$uoy&YaZE?4PQi z9=5*oiudV+{b6;p3KnxW+rALvJGh{IA)k7E%EY>5S6Y_rOW*6gBV@}L{VJW03_-hE zf={|^2(c2?U;h2}f`I-0d%Z0jTUVcCn{Y{Y&OdASdDT7J7u4O~W${RC-8ZKOq1Z!= zUyNLL1Rc+Q+w$c5NsuG&9-6u)ul3KopA-1fb&qX!`1Jj3I|q9}QiR3nH2x>wPqmlt zxGH^0v3_mMj)L;UFApBp3#?;kI(k7j<}LfDd#{_~wr^S&+k0+*_FTU730>3fwQM}X zEDw&!Uuz1hU}4f|Hsn$>dOMwkR7vf9xMijQTTf8P4{Ig?X3QvE46gCigA1E zuu#6GSv;)vG zc~2ZzK7IZ?&(bzo_Y=@>44~)&8h$NnW$^Y_padxLuqrov#rxpphYtb+`m;o?W9@w_ zS-xqTe0JR0&h#yzt6-Xs+(ED8=;sRm>pm@%^;^HYV%^>YdqFPT3JMArkE7P7w>$i+ z1?3DcwWg()R#upQOWs}`z^t0pB`;|DVtX!thu;& z;{Gr@7mEfVVjb30AinUL>AOR~{L+54s>Ax(`7E!~5(`b!s}I^5xMx zCS6_oW{$tBcmAb{Bh{zBa_@!4{ej)j5dj!u3CzS-0v{ILe0L6ii^^tFew%;-E(1}u}}XEyHL|4XavJg_We@O1TaS?83{1OP}0s7e3; literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp05rs.png b/Resources/img/box/rs/box_wp05rs.png new file mode 100644 index 0000000000000000000000000000000000000000..b6eadad430c0f1bafea5cdefa05c769845b74403 GIT binary patch literal 2319 zcmeHI{WsGM6#sgAGL)KXVhCp~IyREW5=-*_vSssFUbaXmiD5mozUk#mPRGkSd6`(P zMB~Abw~)N z8f|ZHPoYqflau*ubYByZ!{PALIqkgarluxw({r&{tW5hQzb5eCo4{4V;{hd400xOb zR{XyOATMq}DK`wGdj=%|fN{r9Rp~qxKvo9z8E!`z!E-Y+PD1oiDouBu65m4oy7_TwXrlmQ=;wIZ>L*dA(NEx-~EP= zCmb*eY+~yp{YSS?kD8ucX{5Ke+c@Q>wwsM?nV;VQrJ8-aJU9PVxZcWeIBXN@-Jw{3 zT4v?TOrsG=0-PqK)^7ir*Z^CJ!X4|4p%FI~bq7DMJaZ8bmrKWeRX#vI`cw>MpJ*@s zYMuL3WK@PRNe=JH?|X1NyRyCa1gL|^md)L(*|WS=V9|O2wq%BEeBu{dGKS(-&$?hg z#Ner#*4W_p4PcUKjY=+EpV)m0v|Rc;ZqNX`AJ|2El}>jI7kq|^c3l252mO1Au2RyOPpV>E=~UL19uS!|959rlx*lb7J`6^m6AxeeFuIMy~~ z?s_4I-pI3-4=UQZBEjYiyYb0aJS<{_BUK)KZA(z*V3 z0!fkf<&Ae(ohjagF>(h2{ie*%x?%4^44yT1_W{N`mfKpuhGZ9o!Iso2&aBj)GnEu`kx5l>?vZ2Z?=Wo6(PJjKFRfnpt z}-#z7xPdn{BLr`tgOt+%z8A?-NUn(B=`7{+05vngUhX1r04b_YV zP{=NFq5)5<4cF{`=1O^9Ek$mM)Xh8Ve|&7}8K{%4&>JR6V_I{G?ajHoIW>zE*qgjD zFyUT=OPcprfAzxj4j!RrYoAdYtN-r{lS80Rbe8zV%k54j6DY3L-AE^+po_fj zC4CGMl6r(wW-UU=%w)LC4HtX4NbD){!5x#N(OQPUmd##srUos4h^!{=r z2z_vhwrd|}l6sdIiT5u}%TSqtGa=Q=veQp#QH@_s?XXZR%xY5ld}Yi3hbF z-5^4R1CMepVTIw^BTwBOXu@Sn?A$=r#9$gAFK(c|ut%sGI>XYx=W@IFSFi+ue^FRW z|*l*PXR!!m|?Gv5~I@NB$+l@}l2dD(`$3 zKgU*sk&X?oXO1%MOge+i7xvb<>6V{^Mf;o#B6RWJI^JX#NjmzYZ@565c6B4uDsgw6aR8Jhn8Cy;k zKka&(v8=yIfvzka7-CxRQj;tWN;i;XaKRqY@@IDu%aWZVgZH$@7cZ`k*y3+-E$$ou zVfThshbxx#dkkthH?5eSuY7PJE-#o44}RctzT1T2goA9MU>r39y%w&6#w6qEFY;cM rZ4kl6si4gXiD#D&imcp4gVF_)@&aFeUEY(4pYO=ajo>P93A^$S=^24E literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp06rs.png b/Resources/img/box/rs/box_wp06rs.png new file mode 100644 index 0000000000000000000000000000000000000000..473a3ff4bab9a424862caf307e10f1667b1d029f GIT binary patch literal 2126 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngBeJ=7p|TFq!^2X+?^QKos)S9c|{l|&rKVF>p z@!_nm`2h=*<(@8%Ar*0Nr`_&TR^)L> zSHGE}_xu0;*}Bs+nZ(}JEpqZ++0I~Rrgh2f(c{ACu>O9d$iVq&@9t09RXc0v{rj6@ zy!L-j%5%M|fAo%j;qD3Vrf0qT{XXfJ-PWD2xB3X3eZu~1U3~oR-RGZPymR#lhm)>y zDyL_qLHft0nQbS{f}-sHtZAG0K-BElt}bsz|LQ)|w`;VofB55+vvnp*O#+|$3x2^R zkLOyttq;HRu5jzD73nGE94xtju}-%+83LJ%N*d?%NqPHRSpanYx5`TdlTRmb_Y* z_G$6F>iy4+|wgisB`wXo6x+O z#Tz$CE>`~xUW^ArF=yNzlT2oiPF6^+! z2d;ZX>sId&`LN}A#N~6lig?fK9|@c7d4T;{LCZe@N2_}?lST5Uc{N|L`B%(ge?OSn zv+`201w&9xRN2e2%OBo2Nw98Xj+oWot72pPJSo-K&G*^wXIY^^v5$*?H153q>dvzZ zD|gR2*|rSHkIr#KCW?3 zXDZvu%0JHq>h>*XoAhbP^8$t?KeoKN^mf_9o2>?1IqVxuz&`W(?2Ghd&FwYJ2`jBmYN@tyvhf)D^BlR_bBMV z<$1}z)~`>Q+UysI&Q)WSpK)05mov-DiuAs~J&{_xL7#t|SNv1s&#Us(^ZY{wkB^x* zm)`b0yqP;upea==O}lYl-g~N%%2}NOSv_Lf0$Mrdvs~Ta@*sx%C1e#u1L?b3@x^wuIdUT?73IX t*gf@W(yt|!f7Y$MeSGnmYnR`ClnN-$q?&<31vd$@?2>?%JBGdo? literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp07rs.png b/Resources/img/box/rs/box_wp07rs.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc72dd23294025001637c8b986266196382e7c5 GIT binary patch literal 1644 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngAGU)tdCva~60+7Beu&9Ry*qU&>+@?Xr_2+1p#1!gpD1Th>HT~6@8AFT{dIo)*}U$xl{wd*efR(W z>(|)_`)YnBecK^(+r0VrpP!%OZ?LDW@ACcobjAmF0N}Jow#@42?F+IA>o7Mm37Fcepule45Gx^B_rr!tNg!H|geeh~~n)#7) r_x}BH{dg>HmaXQoZ~y-N`&K`Z@iE^zo_(&s%7DSs)z4*}Q$iB}9d~xQ literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp08rs.png b/Resources/img/box/rs/box_wp08rs.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7a794a996066109d76eeeb3de8fd77400b3ed6 GIT binary patch literal 1531 zcmeAS@N?(olHy`uVBq!ia0vp^bAY&ngAGU)tdCva~60+7Beu&9Ry*J@vm@xb|~k7Jr`j%hOGm^>``__4-L{{8#>i&GE$F zB0J*k|NohOhQXlQ==lyjZ@rn9t14Y~JFve$ z{&~TJMHfqX&!2dIYu=`H4<-Lp|EMk3EcjS5S8@JcrvEqV7XEyA;O2vS+|l03KR(9) zdKfZ&um9tA;}7%SiqDedi^+|w+@)9D{6A;^)`tgr7qFY&kGjS5|6bi)UCue;8QWqs zHvQ!IXZ+{Ya^`TmS!Wk4c8~o!NuDpEMYXZG%h-3p;^^x?gC2Zgu&P?txnlKvt~ot* zJ}cbZ-@mldXFbQivwy+j?_X8|)w40NZ!hwGP<20t|IhCqrF`sqQnA-R^!!=(R`a#g zyo3AO@0U+!68FC@`RS%M*lF^7b9mqF-LTc9N&f#*dB4(|zfI~am_h!T`S8HiX;YWK z-emsc{I_UnzB?RM0iV|{)&21P?e)8p4pcU#oo-c{-T%P;@cKHdf~Sjb@>o?}3Dy7k zkijiN$YQz0WfrSlrE~RJ{rDFwPM_7W>(|NyCtnrpa1J2 zLz+TCf%bNmb>Gi^8x88wpdL-tloTM-{}nLk?rIFaVZ*Rt(tp--iPgV(6J)O*=sd&l z!RUYM+u#SMyc^a#SXSH2Kku%_w8kZ|+HQV-JpYuJ3i zZuT&It&;6Zq?%Zp~ ziG;N_TWkOTSnKO^BnY-8u+mpr!6PB5@@LpAgMtW$fNBNe4Ln&+^9t|+fEw27`N$Oj zUau62gGsP+GyUjEIw>)Ro*J1P z4V;TSeU|QaHk$qo+70OjCV1o!;rFH3_lQ?;T7;ZkkTHT=bL5AK@Ysvl7U^4U+HUHO zdF-`^qm@~EZ16uRqb{<_hklZ1K*Yxg9uqqK7)BiB^Hwny2{#Z7#`gdwJ% zBHkd+XfcJ&qQm4FjEm62Mas4PL#S9E+;^bx@YpojU4Lob!7MX9yP^yU*9Xlnln*wi z~FeUmmfcS%7AAuTQTYEHuL^)4<~ikz=#UL=6#T*wKLcPc!L3fJ7o#e6?LAVN(T*y6m!%7by4H(BdGtN>GN9jY$4FBj~@f>H=5X)?>3!Y1(cLAxJmh$9LEanK-kA!D1nYjoQ-Ons0nFJp)dcKIx5B zL_v#0X%qGRF=~*GuJ%=37K*Tpn4P6^trDcyeG-i(ErnMm7egEU8VV5lypFAo zrT4`>9t}-df+Yu|XhdefP#Ft@&4!5y_2O-TSj^joPi94pxK3Y{-pK2oQHG3*K+_&vu^C zI#*>0a{XvL`DmBuE@!IKiM4=XxEY%!UM^8{hL8j3ykMp_*E^)jxv&|`@U0d)6_#}AyzNF~nDv*_x$o=J|Ao`=_;Ve(h7M41 zcqlnR59}XDc#(%ZKss}Z%ln9MzS4h~R0tMniugAm5tc^4P|@vCYOperngtRd9m;*~ zV?-j+{;9th+1EM5a-I8FW<)fit2|o6I882|qgOrEa6lDzO{~qN0GHKj%fjH@a$}34 zqDM4RU8BX)#wWQq&}P&{2<`#6p7^KzPgb>X5%P@%)uD1c!t{hSwp3T| zQimTM>F5^L!A=+UlThx=&_MMhE=V|4Q ssju93GHVmmqef9@CP@TM%fy%?*9UpON5X;sJpkZ)lz622(2tk?0lo*%dH?_b literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp10rs.png b/Resources/img/box/rs/box_wp10rs.png new file mode 100644 index 0000000000000000000000000000000000000000..1328efd225c629fa9e57592bcb1a65c93b2f029f GIT binary patch literal 2393 zcmeHI`&ZIu82>se%WRdYrCq3*rV*I8rdg34#S3Nv3f|4goOwY8Q&|eF%Su3*O@vI> zrm3433}@mkJ!Qy-$`bQZs7yS99*+`|qM2@A_UrzGt>>KQea`!w&kyhWc|M=_%?%0m z+h%HG3IM>i0Dm70SWCd9Y&Hg0KT^$iU@;Ao3ovmw#@yf**{*jqouZv+5i zAS5W%7wiK&@PJb$5rKzX;39~^#5+J7dxT!Ud99PpNO{|GVw9C&6(qpqY-EZE#b@eQY7iB~9@@n0qY>G4Tv z6nI(!<)9nLXmP^Z4S^%do9%^bb&*}kT@)aH(-Xe3N@Es{ z=68vCcrC4#!kI?8X)xoAa%0o&mx9rlai(kkc3!vrenn=Q%Za1qJfTt|Zwijfz1m@g z=XFw0$ridfX&!9xMU1s)#iWxay8W^lB_ULY+jn26Jc^bKEAO38P@;Q{)b3nZ3opGbFSFCioc*Z?Tx%f3wm8#~ zDC#%5ZQ@+z;HVMZpEe01e4nrJ`rLXi2i+S*no5nTs`qh^V?ul5S}WWcD;etUqOX;F zR*6i@&4kCgY-)9>rb6>UD92$cne=<5i`GFUFO~ZuaJ^wn>12*Ndccal)qZ)xTwBrn z!g||wL{nIwToAbl-`y}2*IGmr2jY=$jtR~TZC;_(N}s3p-^-fW^QavHjj?Op+1FMm zR8C)iev^kSEYvH5-WgX40>t{#2dq4agQ~81p{Z^FUshZ%vQ#;Z$!tW~ZDa!KGzpIk zo>}hk+U;a*9AiD$Zs`X?0}B_PG+)Nv&oYoaR|bKqs(sbk4l+N9*|~AohxFWKOtg~q z?H!1`S~V9Ay9p&k%sR#N2niKX+ti|PNb;?01TJx+>5G7NiWz2{&EcDm-Bra%qDYjp z6W+a!fs$(^`}alzBabFmrRTem2^KnBG*vz{14Z`@D@}FWw4}UC9b+wmiXWPxwpEl5 zQ>9EU>l;4n>Nvv|gxUqJL`FCK5_HNyaz;Pfk~~#*Q@lut~Eo2sc^ zxSl^HykxBcRk~X{7d|8Le_%HxwmGC=4@NY@WWC&cZ^^1a7FM>mza0h2=TnDMcN?AE z1E@|?AH+qQNn7kc9%%~cfP(t0Fo_dBGo9; z(wZ{UWRkuH2mL2lA5gf@ZUtQwzxk7;pZq0UCAa~60+7Beu&9Ry*C6;Wvj} zb2N8MKb~K|*nUQ>zUkMWKbL=RHva9=_4e|0Agj9W@7K4lPwS^83r1`2$X~zye?^_m zy|16<#=Wg~om~>Z{4nR(!AK_vD@|n11;$3bu!Zg$Y`1u}ZsRZ4fBc|@PiR+6tK7kF z7t};=#jOx!Pv^`HTKKj#s<2=hL}+SZLCJ&*N3C86=J4lUa^yX6_q2wEmBNLkaFLeH zk|1qBIb_z%zyc?BmR%7r!|m?uwXpEcn9P+c|1R#>K~7nflAT<(O>Y)VPSXa1?3xZx0Wu%N_Yfj3-)Bi$IRtyv1lS`73H zN6AK*k+nOjCE3-1E`O@^g=1U0*~$ywoYq1epns*Sd2-;KEXfWfp9E`ppw@TL`L z1hwy;UI>g>&e(NM;2`75MGj4P0H3n3u=043BnuAvmkZdQyh|04krj9m1Q$7Uvj-Fj zK)FLV&uCaI1bTf9%t+d#5PWF`n%sejw5M4Z=<*^_aFB&$AcrO*fR7!#=;$Q=dI2~q zv70KC>o0!rqQPPME0~DDxioMju$ux|Zot$o@FEFjByCa%zO>Q}P3{lhrOM2?;OI1c zH6&A^<~Mj2G~(+677G#V;M{4of^lcHB&$0xFNeTH8Vk%GgR-gB3Lwjv%Ma*vak!B* zNg;UC3N*RXq(H+`j8QFx{3|X<3r;QQ(ydGQHu0Zm%#m-O(>M2j&MR=LH<;aZBdFkc sdzyWdRW+!B__Fk-dr(gQ@y9Rq1%t%qFV5^u0@h6op00i_>zopr0KcOaQ~&?~ literal 0 HcmV?d00001 diff --git a/Resources/img/box/rs/box_wp12rs.png b/Resources/img/box/rs/box_wp12rs.png new file mode 100644 index 0000000000000000000000000000000000000000..87582c4f65cfb89de5c30b324b9e18cb480ed209 GIT binary patch literal 1454 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 literal 0 HcmV?d00001 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/Saves/BoxWallpaper.cs b/Saves/BoxWallpaper.cs new file mode 100644 index 000000000..0366048b7 --- /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.Version == GameVersion.B2W2 && index > 16 ? "b2w2" : "bw"; + break; + case 4: + if (SAV.Version == GameVersion.Pt && index > 16) + s += "pt"; + else if (SAV.Version == GameVersion.HGSS && index > 16) + s += "hgss"; + else + s += "dp"; + break; + case 3: + if (SAV.Version == GameVersion.E) + s += "e"; + else if (SAV.Version == GameVersion.FRLG && index > 12) + s += "frlg"; + else + s += "rs"; + break; + } + return (Bitmap)(Properties.Resources.ResourceManager.GetObject(s) ?? Properties.Resources.box_wp16xy); + } + } +} diff --git a/Subforms/SAV_Database.Designer.cs b/Subforms/SAV_Database.Designer.cs index 04ab4dbde..8e022359c 100644 --- a/Subforms/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(); @@ -155,7 +156,6 @@ private void InitializeComponent() this.L_Format = new System.Windows.Forms.Label(); this.FLP_Level = new System.Windows.Forms.FlowLayoutPanel(); this.RTB_Instructions = new System.Windows.Forms.RichTextBox(); - this.Menu_SearchAdvanced = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.bpkx30)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bpkx29)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bpkx28)).BeginInit(); @@ -992,6 +992,15 @@ private void InitializeComponent() 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; @@ -1029,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); @@ -1801,15 +1810,6 @@ private void InitializeComponent() this.RTB_Instructions.TabIndex = 119; this.RTB_Instructions.Text = ""; // - // 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); - // // SAV_Database // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs b/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs index fb2a0ff4b..391905559 100644 --- a/Subforms/Save Editors/Gen6/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 + 1); } } } \ No newline at end of file From 3d0ffabe75e813a02b0d9dd2f5eb92e45b17cc60 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 24 Jul 2016 21:19:08 -0700 Subject: [PATCH 102/184] Minor tweaks Fix off by one and add a safety check for sav6 --- Saves/SAV6.cs | 3 ++- Subforms/Save Editors/Gen6/SAV_BoxLayout.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index 233062253..ea2d22dfa 100644 --- a/Saves/SAV6.cs +++ b/Saves/SAV6.cs @@ -646,7 +646,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) { diff --git a/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs b/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs index 391905559..671edb669 100644 --- a/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs +++ b/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs @@ -60,7 +60,7 @@ private void changeBoxBG(object sender, EventArgs e) if (!editing) SAV.Data[SAV.PCBackgrounds + LB_BoxSelect.SelectedIndex] = (byte)CB_BG.SelectedIndex; - PAN_BG.BackgroundImage = BoxWallpaper.getWallpaper(SAV, CB_BG.SelectedIndex + 1); + PAN_BG.BackgroundImage = BoxWallpaper.getWallpaper(SAV, CB_BG.SelectedIndex); } } } \ No newline at end of file From f9bd271967debed3d91741f6b0478087a0a2bf24 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 25 Jul 2016 22:40:05 -0700 Subject: [PATCH 103/184] Bug fixes Box Wallpapers Stop returning the first box wallpaper regardless of box EXP: Changing level/exp wouldn't update stats (EXP needed to be set back to PKM object) Drag&Drop: If the file exists and is locked for editing, the try { } will fail -> so will delete since the file is locked. Never seen or heard it happen, but is possible. --- MainWindow/Main.cs | 4 +++- Saves/SAV3.cs | 2 +- Saves/SAV4.cs | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 244469839..f334fb8a9 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1412,6 +1412,7 @@ private void updateEXPLevel(object sender, EventArgs e) TB_EXP.Text = PKX.getEXP(Level, Util.getIndex(CB_Species)).ToString(); } changingFields = false; + pkm.EXP = Util.ToUInt32(TB_EXP.Text); updateStats(); updateLegality(); } @@ -3256,7 +3257,8 @@ private void pbBoxSlot_MouseDown(object sender, MouseEventArgs e) new Thread(() => { Thread.Sleep(500); - File.Delete(newfile); + if (File.Exists(newfile)) + File.Delete(newfile); }).Start(); } private void pbBoxSlot_DragDrop(object sender, DragEventArgs e) diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index c389e959c..25af3a2e7 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -392,7 +392,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) diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index 47ea8a285..7bc415684 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -543,7 +543,7 @@ 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) From d56a55965d29f540b64a77fd759403dfc26a414e Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 25 Jul 2016 23:11:17 -0700 Subject: [PATCH 104/184] Add SaveFile version detect bools --- Saves/BoxWallpaper.cs | 10 +++++----- Saves/SaveFile.cs | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Saves/BoxWallpaper.cs b/Saves/BoxWallpaper.cs index 0366048b7..346c62bc7 100644 --- a/Saves/BoxWallpaper.cs +++ b/Saves/BoxWallpaper.cs @@ -12,20 +12,20 @@ public static Bitmap getWallpaper(SaveFile SAV, int index) { case 6: s += SAV.ORAS && index > 16 ? "ao" : "xy"; break; - case 5: s += SAV.Version == GameVersion.B2W2 && index > 16 ? "b2w2" : "bw"; + case 5: s += SAV.B2W2 && index > 16 ? "b2w2" : "bw"; break; case 4: - if (SAV.Version == GameVersion.Pt && index > 16) + if (SAV.Pt && index > 16) s += "pt"; - else if (SAV.Version == GameVersion.HGSS && index > 16) + else if (SAV.HGSS && index > 16) s += "hgss"; else s += "dp"; break; case 3: - if (SAV.Version == GameVersion.E) + if (SAV.E) s += "e"; - else if (SAV.Version == GameVersion.FRLG && index > 12) + else if (SAV.FRLG && index > 12) s += "frlg"; else s += "rs"; diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index 2137b0091..49e259caa 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -50,6 +50,14 @@ public byte[] Write(bool DSV) 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; From 282030b1e7afc088f7d21d711b216b7a035a6ab5 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Tue, 26 Jul 2016 20:18:48 -0700 Subject: [PATCH 105/184] =?UTF-8?q?Add=20Pok=C3=A9mon=20Link=20I/O?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks @suloku ! Resolves #137 Added recalculation for data's internal checksum. --- MainWindow/Main.Designer.cs | 47 +- MainWindow/Main.cs | 5 + MainWindow/Main.resx | 769 +----------------- MysteryGifts/PL6.cs | 333 ++++++++ PKHeX.csproj | 10 + Saves/SAV6.cs | 22 + Saves/SaveFile.cs | 1 + .../Save Editors/Gen6/SAV_Link6.Designer.cs | 621 ++++++++++++++ Subforms/Save Editors/Gen6/SAV_Link6.cs | 110 +++ Subforms/Save Editors/Gen6/SAV_Link6.resx | 216 +++++ 10 files changed, 1356 insertions(+), 778 deletions(-) create mode 100644 MysteryGifts/PL6.cs create mode 100644 Subforms/Save Editors/Gen6/SAV_Link6.Designer.cs create mode 100644 Subforms/Save Editors/Gen6/SAV_Link6.cs create mode 100644 Subforms/Save Editors/Gen6/SAV_Link6.resx diff --git a/MainWindow/Main.Designer.cs b/MainWindow/Main.Designer.cs index 71725ea01..d07b01920 100644 --- a/MainWindow/Main.Designer.cs +++ b/MainWindow/Main.Designer.cs @@ -181,8 +181,8 @@ public void InitializeComponent() 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_History = 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(); @@ -355,6 +355,7 @@ 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.dragout = new System.Windows.Forms.PictureBox(); this.mnuL = new System.Windows.Forms.ContextMenuStrip(this.components); this.mnuLLegality = new System.Windows.Forms.ToolStripMenuItem(); @@ -2289,22 +2290,6 @@ public void InitializeComponent() this.BTN_Ribbons.UseVisualStyleBackColor = true; this.BTN_Ribbons.Click += new System.EventHandler(this.openRibbons); // - // 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); - // // BTN_Medals // this.BTN_Medals.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -2321,6 +2306,22 @@ public void InitializeComponent() 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; @@ -4187,6 +4188,7 @@ 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.Location = new System.Drawing.Point(6, 10); this.FLP_SAVtools.Name = "FLP_SAVtools"; this.FLP_SAVtools.Size = new System.Drawing.Size(297, 87); @@ -4335,6 +4337,16 @@ 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); + // // dragout // this.dragout.BackColor = System.Drawing.Color.Transparent; @@ -4870,6 +4882,7 @@ public void InitializeComponent() 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; } } diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index f334fb8a9..e5a23ad5e 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -738,6 +738,7 @@ 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; // Generational Interface byte[] extraBytes = new byte[1]; @@ -3175,6 +3176,10 @@ 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_JPEG_Click(object sender, EventArgs e) { byte[] jpeg = SAV.JPEGData; diff --git a/MainWindow/Main.resx b/MainWindow/Main.resx index adb9b3c4d..4332f0e62 100644 --- a/MainWindow/Main.resx +++ b/MainWindow/Main.resx @@ -237,408 +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 - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - @@ -692,18 +290,6 @@ True - - True - - - True - - - True - - - True - True @@ -967,30 +553,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAeZJREFUOE+1 @@ -1113,46 +675,7 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - + True @@ -1164,6 +687,9 @@ True + + True + iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1342,6 +868,9 @@ True + + True + 17, 17 @@ -1357,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 @@ -1564,42 +991,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAG8AAACgCAYAAAACezIBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1713,24 +1104,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - iVBORw0KGgoAAAANSUhEUgAAAG8AAACgCAYAAAACezIBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1801,54 +1174,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -1888,18 +1213,12 @@ True - - True - True True - - True - True @@ -1909,36 +1228,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True @@ -1972,9 +1261,6 @@ True - - True - True @@ -2017,46 +1303,7 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - + True 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/PKHeX.csproj b/PKHeX.csproj index 282ffe131..0e9db46b7 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -88,6 +88,7 @@ Form + @@ -171,6 +172,12 @@ + + Form + + + SAV_Link6.cs + Form @@ -316,6 +323,9 @@ MemoryAmie.cs + + SAV_Link6.cs + SAV_PokeBlockORAS.cs diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index ea2d22dfa..df076efb0 100644 --- a/Saves/SAV6.cs +++ b/Saves/SAV6.cs @@ -201,6 +201,7 @@ private void getSAVOffsets() WondercardFlags = 0x1BC00; SUBE = 0x1D890; SuperTrain = 0x1F200; + LinkInfo = 0x1FE00; Box = 0x22600; JPEG = 0x57200; @@ -246,6 +247,7 @@ private void getSAVOffsets() SUBE = 0x1D890; PSSStats = 0x1F400; SuperTrain = 0x20200; + LinkInfo = 0x20E00; Contest = 0x23600; SecretBase = 0x23A00; EonTicket = 0x319B8; @@ -285,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; @@ -822,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 49e259caa..ea039ccd8 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -88,6 +88,7 @@ public byte[] Write(bool DSV) 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; 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/Subforms/Save Editors/Gen6/SAV_Link6.resx b/Subforms/Save Editors/Gen6/SAV_Link6.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/Save Editors/Gen6/SAV_Link6.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 From 47c6168ac4c76a8aba0666b4982a5047952f8702 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 27 Jul 2016 18:08:08 -0700 Subject: [PATCH 106/184] Add gen4 formes to personal Manual tweaks --- MainWindow/Main.cs | 2 +- PKM/PKX.cs | 7 ++++++- PersonalInfo/PersonalInfoG4.cs | 7 ++++++- Resources/byte/personal_dp | Bin 22044 -> 22044 bytes Resources/byte/personal_hgss | Bin 22352 -> 22352 bytes Resources/byte/personal_pt | Bin 22352 -> 22352 bytes Resources/text/de/text_Forms_de.txt | 2 +- Resources/text/en/text_Forms_en.txt | 2 +- Resources/text/es/text_Forms_es.txt | 2 +- Resources/text/fr/text_Forms_fr.txt | 2 +- Resources/text/it/text_Forms_it.txt | 2 +- Resources/text/ja/text_Forms_ja.txt | 2 +- Resources/text/ko/text_Forms_ko.txt | 2 +- Resources/text/zh/text_Forms_zh.txt | 2 +- 14 files changed, 21 insertions(+), 11 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index e5a23ad5e..b0d344e95 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1135,7 +1135,7 @@ private void setForms() } 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) diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 5bf11017c..079071835 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -551,7 +551,6 @@ internal static string[] getFormList(int species, string[] t, string[] f, string t[000], // Normal f[723], // Mega };} - // MegaXY List switch (species) { case 6: @@ -573,6 +572,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[] { diff --git a/PersonalInfo/PersonalInfoG4.cs b/PersonalInfo/PersonalInfoG4.cs index 14dff8259..3b573bcd6 100644 --- a/PersonalInfo/PersonalInfoG4.cs +++ b/PersonalInfo/PersonalInfoG4.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; namespace PKHeX { @@ -21,5 +22,9 @@ public override byte[] Write() // 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/Resources/byte/personal_dp b/Resources/byte/personal_dp index 359024ada8d5879f86dd36c7512ca554ff6a0678..48373cc00aef3a22ea9065e9b4bd5dcdf0c2c16e 100644 GIT binary patch delta 60 zcmV-C0K@;BtO1;?0kC~M0R*#tJOc&;1n>c~ghF)$0RxlzMk@mY^8vFcM_mB{0+WVF SD**ztvPd%w0TQ$3R5k%q2ojP2 delta 62 zcmbQUhH=gs#tpSLj0~IWY?#@Y85kHgw>XuuFfvU3<)#hhYPiQT0=aD-+CW8{JdAlJ N3x?`%7768G1OPEA5U~IN diff --git a/Resources/byte/personal_hgss b/Resources/byte/personal_hgss index c69332d5028974e14cc882d6bc9f147930d80ac2..c0a9df7fa5174a08d04b234df2a855825adb6947 100644 GIT binary patch delta 92 zcmV-i0HgoVt^v@l0kF9p0RpqS9m5_01halT0|o;G@By=gLUjZI1C#njD+2@b0kbGa yT>$|ClZHqu0RpqKNXrQW2KNE8fKpun0|NB{li*X?0|NE|le|c~ghF)$0RxlzMk@mY^8vFcM_mB{0+WVF rD**ztvPjDb0|xg2vw%`v0RsZ{0h8cU*#iRh0h7E`DFG6*=2U6|)kPf+ delta 87 zcmcbxj`6}e#tpSLj0~IWY?#@Y85kHgw>XuuFfvU3<)#hhYPiQT0=aD-+CW8{JWg|h eMH_-*89|K64}x!k={+HulLbTdH;aVYFaZEkFc>}n 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/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/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/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/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/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/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/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 From 07f0d688dce0367571d97f5b6efeb7923da8b267 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 27 Jul 2016 18:20:15 -0700 Subject: [PATCH 107/184] Fix gen3 unown form display/edit --- MainWindow/Main.cs | 11 ++++++++--- MainWindow/MainPK3.cs | 3 +++ PKM/PK3.cs | 5 ++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index b0d344e95..63b78500c 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1128,13 +1128,13 @@ 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[] { 201, 664, 665, 414 }.Contains(species); CB_Form.Enabled = CB_Form.Visible = Label_Form.Visible = hasForms; @@ -1626,7 +1626,12 @@ private void updateForm(object sender, EventArgs e) 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) diff --git a/MainWindow/MainPK3.cs b/MainWindow/MainPK3.cs index 19b827a16..c95b41c68 100644 --- a/MainWindow/MainPK3.cs +++ b/MainWindow/MainPK3.cs @@ -90,6 +90,9 @@ private void populateFieldsPK3() 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(); diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 3d812b85d..46d11ded7 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -25,7 +25,7 @@ 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 { } } @@ -294,8 +294,7 @@ public PK4 convertToPK4() pk4.IsNicknamed = IsNicknamed; // Unown Form - if (Species == 201) - pk4.AltForm = PKX.getUnownForm(PID); + pk4.AltForm = AltForm; // Remove HM moves int[] banned = { 15, 19, 57, 70, 148, 249, 127, 291 }; From b6f4c696f7041ce33f526daaeb30f5e5c66b627a Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 27 Jul 2016 18:51:11 -0700 Subject: [PATCH 108/184] Fix Party retrieval "Party" variable was undefined in gen3 (and others), thus returning blank party information. Use the abstract method to get the true offset of a party slot (which is implemented differently per gen). --- Saves/SaveFile.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index ea039ccd8..f767aa96a 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -154,7 +154,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 From 2f25fa99d9abed48ad9761cd87e689fc427f75eb Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 27 Jul 2016 18:59:10 -0700 Subject: [PATCH 109/184] Tweak Gen3 Version Detect Inputs International = Yes Japanese = No FR = Yes LG = No Reassigns Personal Table for FR/LG so that Deoxys stats are calculated correctly. --- MainWindow/Main.cs | 15 ++++++++++++--- Saves/SaveFile.cs | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 63b78500c..239d93b36 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -689,10 +689,19 @@ private void openSAV(byte[] input, string path) { Util.Error("Invalid save file loaded. Aborting.", path); return; } if (sav.Generation <= 3) // Japanese Save files are different. Get isJapanese { - var dr = Util.Prompt(MessageBoxButtons.YesNoCancel, $"Generation {sav.Generation} Save File detected.", "Does this file originate from a Japanese game?"); - if (dr == DialogResult.Cancel) + var drJP = Util.Prompt(MessageBoxButtons.YesNoCancel, $"Generation {sav.Generation} Save File detected. Select Origins:", "Yes: International" + Environment.NewLine + "No: Japanese"); + if (drJP == DialogResult.Cancel) return; - sav.Japanese = dr == DialogResult.Yes; + sav.Japanese = drJP == DialogResult.No; + + if (sav.Version == GameVersion.FRLG) + { + var drFRLG = Util.Prompt(MessageBoxButtons.YesNoCancel, "FRLG Detected. Select version...", "Yes: FireRed" + Environment.NewLine + "No: LeafGreen"); + if (drFRLG == DialogResult.Cancel) + return; + + sav.Personal = drFRLG == DialogResult.Yes ? PersonalTable.FR : PersonalTable.LG; + } } SAV = sav; diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index f767aa96a..7c11b6000 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -45,7 +45,7 @@ public byte[] Write(bool DSV) public abstract bool ChecksumsValid { get; } public abstract string ChecksumInfo { get; } public abstract int Generation { get; } - public PersonalTable 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; From 7f2dd7a3a4d98616152aa304cd37cff26affa43c Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 27 Jul 2016 19:25:36 -0700 Subject: [PATCH 110/184] Fix form clearing on load y tho --- MainWindow/Main.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 239d93b36..14d26fb00 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1629,7 +1629,8 @@ private void update255_MTB(object sender, EventArgs e) } private void updateForm(object sender, EventArgs e) { - pkm.AltForm = CB_Form.SelectedIndex; + if (CB_Form == sender && fieldsLoaded) + pkm.AltForm = CB_Form.SelectedIndex; updateStats(); // Repopulate Abilities if Species Form has different abilities setAbilityList(); From 9ffa97cb1f9cede704351fd282aae15328169274 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 27 Jul 2016 19:47:03 -0700 Subject: [PATCH 111/184] 7/28/16 release Update changelog and event database --- Resources/byte/wc6.pkl | Bin 169488 -> 242616 bytes Resources/byte/wc6full.pkl | Bin 145824 -> 182672 bytes Resources/text/changelog.txt | 11 +++++++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Resources/byte/wc6.pkl b/Resources/byte/wc6.pkl index 03b4e7e60198a67d1a7737a82767f1d74d1bbe4b..e143246460bfd9b0847b32eb1e8c82763ddc6b83 100644 GIT binary patch delta 9663 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 delta 62 zcmV-E0Kxx|lMA5p2)BTh0+buKgvJ641DDVd0tT@LicGWcUM9-7R%QWyNw*}w0e~2{ U)ZhVp7`LDZ0+1WGKqmq~ZY%E?p8x;= diff --git a/Resources/text/changelog.txt b/Resources/text/changelog.txt index 0bca338cb..d7b14e146 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. @@ -726,13 +726,14 @@ http://projectpokemon.org/forums/showthread.php?36986 - Hotfix: Fixed Gen 5 save file detection. Thanks xtreme1! - Hotfix: Fixed Bad Eggs from causing past gen dumping to abort. Thanks xtreme1! -07/XX/16 - New Update: +07/28/16 - New Update: - 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. @@ -744,7 +745,9 @@ http://projectpokemon.org/forums/showthread.php?36986 - 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. - - - An example script is provided when the window opens. Filters can be used so that only desired PKM are modified. + - - 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. \ No newline at end of file + - - ".": 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. \ No newline at end of file From aa98fb1210dac86540a7c136a58c76168240ef36 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 08:33:59 -0700 Subject: [PATCH 112/184] Fix import/export text for wc6 Thanks @poutros ! Resolves #142 --- Resources/text/en/lang_en.txt | 4 ++-- Resources/text/it/lang_it.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/text/en/lang_en.txt b/Resources/text/en/lang_en.txt index 201586f12..38767962c 100644 --- a/Resources/text/en/lang_en.txt +++ b/Resources/text/en/lang_en.txt @@ -793,8 +793,8 @@ L_Saying5 = 5: ------------------------------------------------------- L_Details = Details: L_Received = Received List: -B_Import = .wc6 -B_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/lang_it.txt b/Resources/text/it/lang_it.txt index f59a550c8..192f8e996 100644 --- a/Resources/text/it/lang_it.txt +++ b/Resources/text/it/lang_it.txt @@ -793,8 +793,8 @@ L_Saying5 = 5: ------------------------------------------------------- L_Details = Details: L_Received = Received List: -B_Import = .wc6 -B_Output = .wc6 +B_Import = Import +B_Output = Export B_Cancel = Cancel B_Save = Save ! End \ No newline at end of file From e362a62410c6f495797343e474acf5955f873dc8 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 08:52:04 -0700 Subject: [PATCH 113/184] Fix gen3 save exporting Thanks BeyondTheHorizon! --- Saves/SAV3.cs | 18 +++++++++++++++++- Saves/SaveFile.cs | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index 25af3a2e7..1dfd3f719 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -57,7 +57,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) // 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++) @@ -109,6 +109,22 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) 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; diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index 7c11b6000..069bf2e8c 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -32,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) From a9aadc0191fca49a6b2750d91fed1296303882fd Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 15:31:05 -0700 Subject: [PATCH 114/184] Fix Gen3 Item inventory edits Resolves #145 and Key Items missing bug for Emerald --- Legality/Tables3.cs | 6 +++--- Subforms/Save Editors/SAV_Inventory.cs | 17 +++++++++-------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Legality/Tables3.cs b/Legality/Tables3.cs index cb46e15cd..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,9 +24,9 @@ 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 diff --git a/Subforms/Save Editors/SAV_Inventory.cs b/Subforms/Save Editors/SAV_Inventory.cs index 76d3abbee..b9094f50a 100644 --- a/Subforms/Save Editors/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); @@ -145,7 +145,7 @@ private void packBags() 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()); } @@ -167,12 +167,13 @@ private void packBags() } // 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; } From 2a0503789251b85a21120230ab458e5b4c3084a5 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 15:53:13 -0700 Subject: [PATCH 115/184] Fix Event Flag save Casting issue, OfType to get all Checkboxes because the foreach doesn't auto filter the Control[] to CheckBox[]. Thanks Armodillomatt12! Also, don't forget to actually save the changes back to the main save file... --- Subforms/Save Editors/SAV_EventFlags.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Subforms/Save Editors/SAV_EventFlags.cs b/Subforms/Save Editors/SAV_EventFlags.cs index 019c57eb3..6eb5edb15 100644 --- a/Subforms/Save Editors/SAV_EventFlags.cs +++ b/Subforms/Save Editors/SAV_EventFlags.cs @@ -58,14 +58,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(); } From 750751cdabc00d47cced3a6b529744af4e575ba7 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 16:30:48 -0700 Subject: [PATCH 116/184] Set checksum on PGT/PCD -> PK4 Thanks /u/SubMana! --- MysteryGifts/PGT.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MysteryGifts/PGT.cs b/MysteryGifts/PGT.cs index 5f76946c5..9eeebbfea 100644 --- a/MysteryGifts/PGT.cs +++ b/MysteryGifts/PGT.cs @@ -204,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; } } From 2805f699acc682b83ed4deba9ce16a2f630415d2 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 18:23:35 -0700 Subject: [PATCH 117/184] Fix HGSS CurrentBox Thanks @poutros ! Resolves #143 --- Saves/SAV4.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index 7bc415684..dabfeb61c 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -535,8 +535,8 @@ 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) { From f63cbb4c2606dbfd1d4335c57984293ba65aed70 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 18:36:02 -0700 Subject: [PATCH 118/184] Tweak move bindingsource iteration Create datasource before the foreach to avoid multiple .Where(), possibly fixing #151 --- MainWindow/Main.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 14d26fb00..302587a30 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1060,10 +1060,11 @@ private void populateFilteredDataSources() CB_GameOrigin.DataSource = new BindingSource(VersionDataSource.Where(g => g.Value <= SAV.MaxGameID || SAV.Generation >= 3 && g.Value == 15), null); // Set the Move ComboBoxes too.. + var moves = MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToArray(); 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; From 1755b49a9c19516e3b31b79c0a51f4c589941a79 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 21:30:38 -0700 Subject: [PATCH 119/184] Fix EncounterLink OT Set the "Receiver is OT" to false for Glalie/Steelix, else true. Thanks @poutros ! Fixes #147 --- Legality/Data.cs | 2 +- Legality/Tables.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Legality/Data.cs b/Legality/Data.cs index 5e76c58a8..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 { diff --git a/Legality/Tables.cs b/Legality/Tables.cs index a35d21698..4ab3f3d22 100644 --- a/Legality/Tables.cs +++ b/Legality/Tables.cs @@ -762,8 +762,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 From 67a375ecae71c8ccdd17d4b5dee02b308796646f Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 21:46:30 -0700 Subject: [PATCH 120/184] Fix SAV4:Gen4 met locations Do gen4 metloc check after gen3, THEN do gen5. Thanks @poutros ! Fixes #140 --- MainWindow/Main.cs | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 302587a30..fda58ea81 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1805,7 +1805,26 @@ private void updateOriginGame(object sender, EventArgs e) CB_MetLocation.DataSource = met_list; CB_MetLocation.SelectedValue = 0; } - else if (Version < 24 && origintrack != "Past" && SAV.Generation >= 4) + 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 @@ -1855,23 +1874,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 (SAV.Generation > 3 && 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 From 57899a7da993a1ec2ed843424baaac9743293605 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 22:08:23 -0700 Subject: [PATCH 121/184] Add unknown gen3 game detection Bad cheats invalidating that Game Code! Thanks @poutros ! Resolves #146 --- MainWindow/Main.cs | 16 ++++++++++++++++ Saves/SaveUtil.cs | 6 +++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index fda58ea81..de459512e 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -689,6 +689,22 @@ private void openSAV(byte[] input, string path) { 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.Data, GameVersion.RS); + else if (drGame == DialogResult.No) + sav = new SAV3(sav.Data, GameVersion.E); + else + sav = new SAV3(sav.Data, GameVersion.FRLG); + } var drJP = Util.Prompt(MessageBoxButtons.YesNoCancel, $"Generation {sav.Generation} Save File detected. Select Origins:", "Yes: International" + Environment.NewLine + "No: Japanese"); if (drJP == DialogResult.Cancel) return; diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index 34a84e58f..12a339874 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -77,7 +77,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; From cd32c79ba9845ad046efdb2ff3accfe088e11f52 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 22:09:39 -0700 Subject: [PATCH 122/184] Center SimpleTrainer on open Accidentally omitted. --- Subforms/Save Editors/SAV_SimpleTrainer.Designer.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Subforms/Save Editors/SAV_SimpleTrainer.Designer.cs b/Subforms/Save Editors/SAV_SimpleTrainer.Designer.cs index 5ccfc3300..111a04802 100644 --- a/Subforms/Save Editors/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(); From 1411749fbd7e09a5b23399267e7c2816e0526b1b Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 22:33:16 -0700 Subject: [PATCH 123/184] Move shiny PID creation to PKM class --- MainWindow/Main.cs | 40 +++++++++++----------------------------- PKM/PKM.cs | 7 +++++++ 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index de459512e..605405684 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -719,6 +719,7 @@ private void openSAV(byte[] input, string path) sav.Personal = drFRLG == DialogResult.Yes ? PersonalTable.FR : PersonalTable.LG; } } + PKM pk = preparePKM(); SAV = sav; SAV.FilePath = Path.GetDirectoryName(path); @@ -818,7 +819,6 @@ private void openSAV(byte[] input, string path) TB_Secure2.Text = sav6.Secure2.ToString("X16"); break; } - PKM pk = preparePKM(); bool init = fieldsInitialized; fieldsInitialized = false; populateFilteredDataSources(); @@ -2061,39 +2061,21 @@ 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; - 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.Format >= 6) TB_EC.Text = TB_PID.Text; getQuickFiller(dragout); + updateLegality(); } private void updateTSV(object sender, EventArgs e) { diff --git a/PKM/PKM.cs b/PKM/PKM.cs index 3b3f82df9..2adf612e7 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -324,5 +324,12 @@ private int getBasePP(int move) move = 0; return pptable[move]; } + + public void setShinyPID() + { + while (!IsShiny) + PID = PKX.getRandomPID(Species, Gender, Version, Nature, AltForm); + EncryptionConstant = PID; + } } } From 654ff292e6b10e7b3e7dc7d9808878e941e2b2b0 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 22:54:29 -0700 Subject: [PATCH 124/184] Add nature/gender recalc PID on <=gen4 --- MainWindow/Main.cs | 18 +++++++++++++++--- PKM/PKM.cs | 8 ++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 605405684..534ceea12 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1276,12 +1276,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 = CB_Nature.SelectedIndex; + 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); @@ -1962,6 +1971,9 @@ private void updateNatureModification(object sender, EventArgs e) incr != decr ? $"+{labarray[incr].Text} / -{labarray[decr].Text}".Replace(":", "") : "-/-"); + + if (fieldsLoaded && SAV.Generation <= 4) + updateRandomPID(sender, e); } private void updateNickname(object sender, EventArgs e) { diff --git a/PKM/PKM.cs b/PKM/PKM.cs index 2adf612e7..b0fa8e853 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -331,5 +331,13 @@ public void setShinyPID() PID = PKX.getRandomPID(Species, Gender, Version, Nature, AltForm); EncryptionConstant = PID; } + public void setPIDGender(int gender) + { + PID = PKX.getRandomPID(Species, gender, Version, Nature, AltForm); + while (IsShiny) + PID = PKX.getRandomPID(Species, gender, Version, Nature, AltForm); + + EncryptionConstant = PID; + } } } From cd909d5cc54bde599d968db6abc908372b1b85b9 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 28 Jul 2016 23:05:26 -0700 Subject: [PATCH 125/184] Add Batch Editor => Shiny PID command Also added Box/Slot filtering, for whatever reason is desired. Thanks /u/exegg for the suggestion! --- PKM/PKM.cs | 2 ++ Saves/SaveFile.cs | 2 ++ Subforms/PKM Editors/BatchEditor.cs | 3 +++ 3 files changed, 7 insertions(+) diff --git a/PKM/PKM.cs b/PKM/PKM.cs index b0fa8e853..bc4b9e84d 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(); diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index 069bf2e8c..bd6c70f09 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -132,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; } diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index e009576cd..ffb3f9d59 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -18,6 +18,7 @@ public BatchEditor() } 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(); @@ -248,6 +249,8 @@ private static ModifyResult ProcessPKM(PKM PKM, IEnumerable F { 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 ReflectUtil.SetValue(PKM, cmd.PropertyName, cmd.PropertyValue); From 2365e974cbb2de1bd734b787ac281a20f7b7c114 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 29 Jul 2016 08:31:02 -0700 Subject: [PATCH 126/184] Generated form tweaks Click label to invert checkbox, widen Ribbons so 5 appear per row, reduce margins. --- Subforms/PKM Editors/RibbonEditor.Designer.cs | 18 +++++++++--------- Subforms/PKM Editors/RibbonEditor.cs | 5 +++++ Subforms/Save Editors/SAV_EventFlags.cs | 1 + 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Subforms/PKM Editors/RibbonEditor.Designer.cs b/Subforms/PKM Editors/RibbonEditor.Designer.cs index a09a92cb6..d95fcad81 100644 --- a/Subforms/PKM Editors/RibbonEditor.Designer.cs +++ b/Subforms/PKM Editors/RibbonEditor.Designer.cs @@ -47,7 +47,7 @@ private void InitializeComponent() // 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.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; @@ -58,7 +58,7 @@ private void InitializeComponent() // 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.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; @@ -98,7 +98,7 @@ private void InitializeComponent() 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(396, 231); + this.PAN_Container.Size = new System.Drawing.Size(496, 231); this.PAN_Container.TabIndex = 6; // // SPLIT_Ribbons @@ -121,8 +121,8 @@ private void InitializeComponent() 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(394, 229); - this.SPLIT_Ribbons.SplitterDistance = 180; + 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; // @@ -132,7 +132,7 @@ private void InitializeComponent() 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(178, 227); + this.FLP_Ribbons.Size = new System.Drawing.Size(268, 227); this.FLP_Ribbons.TabIndex = 5; // // TLP_Ribbons @@ -147,14 +147,14 @@ private void InitializeComponent() 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(211, 227); + 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(424, 281); + 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); @@ -162,7 +162,7 @@ private void InitializeComponent() 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.MinimumSize = new System.Drawing.Size(540, 320); this.Name = "RibbonEditor"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Ribbon Editor"; diff --git a/Subforms/PKM Editors/RibbonEditor.cs b/Subforms/PKM Editors/RibbonEditor.cs index 18591b473..1a8ad5292 100644 --- a/Subforms/PKM Editors/RibbonEditor.cs +++ b/Subforms/PKM Editors/RibbonEditor.cs @@ -89,6 +89,7 @@ private void addRibbonChoice(RibbonInfo rib) Name = PrefixLabel + rib.Name, Text = rib.Name, Padding = Padding.Empty, + Margin = Padding.Empty, AutoSize = true, }; TLP_Ribbons.Controls.Add(label, 1, row); @@ -103,6 +104,7 @@ private void addRibbonChoice(RibbonInfo rib) Width = 35, Increment = 1, Padding = Padding.Empty, + Margin = Padding.Empty, }; if (rib.Name.Contains("MemoryContest")) nud.Maximum = 40; @@ -141,10 +143,13 @@ private void addRibbonChoice(RibbonInfo rib) 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() diff --git a/Subforms/Save Editors/SAV_EventFlags.cs b/Subforms/Save Editors/SAV_EventFlags.cs index 6eb5edb15..acb7234e8 100644 --- a/Subforms/Save Editors/SAV_EventFlags.cs +++ b/Subforms/Save Editors/SAV_EventFlags.cs @@ -125,6 +125,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); } From 9b3d6e51776b542d58e901c7f22abfadc5ccdc89 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 29 Jul 2016 15:47:56 -0700 Subject: [PATCH 127/184] Fix Gen3 checksum calc Also when checking the active save, check the block0 for both save files since it is always updated. --- Saves/SAV3.cs | 42 ++++++++++++++++++++++++++++++++---------- Saves/SaveUtil.cs | 2 +- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/Saves/SAV3.cs b/Saves/SAV3.cs index 1dfd3f719..b70138539 100644 --- a/Saves/SAV3.cs +++ b/Saves/SAV3.cs @@ -46,12 +46,33 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) else Version = SaveUtil.getIsG3SAV(Data); if (Version == GameVersion.Invalid) return; - - BlockOrder = new int[14]; - BlockOfs = 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); + + 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; @@ -86,7 +107,7 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any) OFS_PouchBalls = BlockOfs[1] + 0x0430; OFS_PouchTMHM = BlockOfs[1] + 0x0464; OFS_PouchBerry = BlockOfs[1] + 0x054C; - Personal = PersonalTable.FR; // todo split FR & LG + Personal = PersonalTable.FR; break; case GameVersion.E: LegalKeyItems = Legal.Pouch_Key_E; @@ -161,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 @@ -172,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; @@ -187,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(); } diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index 12a339874..0413eab07 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -224,7 +224,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) From 3b6f1e2c58b58f61981360a1084ba78e228246aa Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 29 Jul 2016 16:00:56 -0700 Subject: [PATCH 128/184] Attempt at a FlowLayoutPanel scroll hack Thanks @evandixon for the link to a 'fix', lets see if it works. #149 --- MainWindow/Main.cs | 2 ++ Util/FormUtil.cs | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 534ceea12..47f20897c 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -86,6 +86,8 @@ public Main() // Box to Tabs D&D dragout.AllowDrop = true; + FLP_SAVtools.Scroll += Util.FlowLayoutPanelScroll; + // Load WC6 folder to legality refreshWC6DB(); diff --git a/Util/FormUtil.cs b/Util/FormUtil.cs index 1916f81e5..e0c9da540 100644 --- a/Util/FormUtil.cs +++ b/Util/FormUtil.cs @@ -138,5 +138,19 @@ internal static int getIndex(ComboBox cb) { return (int)(cb?.SelectedValue ?? 0); } + + public static void FlowLayoutPanelScroll(object sender, ScrollEventArgs e) + { + var p = sender as FlowLayoutPanel; + switch (e.ScrollOrientation) + { + case ScrollOrientation.HorizontalScroll: + p.HorizontalScroll.Value = e.NewValue; + break; + case ScrollOrientation.VerticalScroll: + p.VerticalScroll.Value = e.NewValue; + break; + } + } } } From 0e8b82b5fc5e4822f70c66efc7b125f424d92f65 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 29 Jul 2016 19:38:16 -0700 Subject: [PATCH 129/184] Fix EXP dropping to level threshold Only set back if the fields have been loaded. --- MainWindow/Main.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 47f20897c..d9e691c20 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1450,7 +1450,8 @@ private void updateEXPLevel(object sender, EventArgs e) TB_EXP.Text = PKX.getEXP(Level, Util.getIndex(CB_Species)).ToString(); } changingFields = false; - pkm.EXP = Util.ToUInt32(TB_EXP.Text); + if (fieldsLoaded) + pkm.EXP = Util.ToUInt32(TB_EXP.Text); updateStats(); updateLegality(); } From 9f40505f3a03344b1607c4ea0eaab0a237a699ea Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 29 Jul 2016 21:14:08 -0700 Subject: [PATCH 130/184] More descriptive Gen3 sav prompt Pops up (E) (RS) (FRLG) instead of "Generation 3" --- MainWindow/Main.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index d9e691c20..9a16a61d7 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -707,14 +707,14 @@ private void openSAV(byte[] input, string path) else sav = new SAV3(sav.Data, GameVersion.FRLG); } - var drJP = Util.Prompt(MessageBoxButtons.YesNoCancel, $"Generation {sav.Generation} Save File detected. Select Origins:", "Yes: International" + Environment.NewLine + "No: Japanese"); + 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, "FRLG Detected. Select version...", "Yes: FireRed" + Environment.NewLine + "No: LeafGreen"); + var drFRLG = Util.Prompt(MessageBoxButtons.YesNoCancel, $"{sav.Version} detected. Select version...", "Yes: FireRed" + Environment.NewLine + "No: LeafGreen"); if (drFRLG == DialogResult.Cancel) return; From 4a14d663ad6f0ec2ec29a28c03e381200400bc13 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 29 Jul 2016 22:30:06 -0700 Subject: [PATCH 131/184] Tweak random PID gen on changing fields Fixes quirky behavior of changing nature/gender on gen3/4 games. --- MainWindow/Main.cs | 40 +++++++++++++++++++++++----------------- PKM/PKM.cs | 13 +++++++------ PKM/PKX.cs | 5 ++++- 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 9a16a61d7..b8682cbcb 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1283,7 +1283,7 @@ private void clickGender(object sender, EventArgs e) { pkm.Species = Util.getIndex(CB_Species); pkm.Version = Util.getIndex(CB_GameOrigin); - pkm.Nature = CB_Nature.SelectedIndex; + pkm.Nature = Util.getIndex(CB_Nature); pkm.AltForm = CB_Form.SelectedIndex; pkm.setPIDGender(newGender); @@ -1592,22 +1592,24 @@ 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.Format >= 6) + TB_EC.Text = pkm.EncryptionConstant.ToString("X8"); } private void updateRandomEC(object sender, EventArgs e) { @@ -2119,10 +2121,14 @@ private void update_ID(object sender, EventArgs e) 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) diff --git a/PKM/PKM.cs b/PKM/PKM.cs index bc4b9e84d..d5b946a8e 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -329,16 +329,17 @@ private int getBasePP(int move) public void setShinyPID() { - while (!IsShiny) - PID = PKX.getRandomPID(Species, Gender, Version, Nature, AltForm); + do PID = PKX.getRandomPID(Species, Gender, Version, Nature, AltForm, PID); while (!IsShiny); EncryptionConstant = PID; } public void setPIDGender(int gender) { - PID = PKX.getRandomPID(Species, gender, Version, Nature, AltForm); - while (IsShiny) - PID = PKX.getRandomPID(Species, gender, Version, Nature, AltForm); - + 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/PKX.cs b/PKM/PKX.cs index 079071835..05d988355 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -419,8 +419,9 @@ internal static ushort getCHK(byte[] data) return chk; } - internal static uint getRandomPID(int species, int cg, int origin, int nature, int form) + internal 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(); @@ -441,6 +442,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; From 3704d42fcf1dd46860a9bfcd9a7b9ac5ae391f49 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 29 Jul 2016 22:36:24 -0700 Subject: [PATCH 132/184] Trainer Gender symbols if Unicode or not Thanks \ --- Subforms/Save Editors/Gen6/SAV_Trainer.cs | 3 +++ Subforms/Save Editors/SAV_SimpleTrainer.cs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Subforms/Save Editors/Gen6/SAV_Trainer.cs b/Subforms/Save Editors/Gen6/SAV_Trainer.cs index 0e089dde9..d106096cd 100644 --- a/Subforms/Save Editors/Gen6/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, diff --git a/Subforms/Save Editors/SAV_SimpleTrainer.cs b/Subforms/Save Editors/SAV_SimpleTrainer.cs index 59fd633e6..cd77cf21f 100644 --- a/Subforms/Save Editors/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"); From b69096d6f454eb96025dea0f51a19bd479b8c3f4 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 30 Jul 2016 10:47:28 -0700 Subject: [PATCH 133/184] Further attempts to fix linux issue #151 ToList a bunch. --- MainWindow/Main.cs | 12 ++++++------ Subforms/Save Editors/Gen6/SAV_HallOfFame.cs | 11 ++++++----- Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs | 2 +- Subforms/Save Editors/Gen6/SAV_PokedexXY.cs | 2 +- Subforms/Save Editors/Gen6/SAV_SecretBase.cs | 15 ++++++++------- Subforms/Save Editors/Gen6/SAV_SuperTrain.cs | 4 ++-- 6 files changed, 24 insertions(+), 22 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index b8682cbcb..eabf44f36 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1070,15 +1070,15 @@ private void populateFilteredDataSources() items = g3items; 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), null); + 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), 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); + 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).ToArray(); + 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"; diff --git a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index fcfebd46c..a8fc4534a 100644 --- a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -67,15 +67,16 @@ private void Setup() CB_Species.DisplayMember = "Text"; CB_Species.ValueMember = "Value"; - CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1), null); + CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), 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); CB_HeldItem.DisplayMember = "Text"; CB_HeldItem.ValueMember = "Value"; diff --git a/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs b/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs index 4e035629d..e6647552f 100644 --- a/Subforms/Save Editors/Gen6/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 = new BindingSource(Main.SpeciesDataSource.Skip(1), 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]); diff --git a/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs b/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs index bc703fa39..517d3a132 100644 --- a/Subforms/Save Editors/Gen6/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 = new BindingSource(Main.SpeciesDataSource.Skip(1), 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]); diff --git a/Subforms/Save Editors/Gen6/SAV_SecretBase.cs b/Subforms/Save Editors/Gen6/SAV_SecretBase.cs index 9392bb4d9..cc1da33bc 100644 --- a/Subforms/Save Editors/Gen6/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 diff --git a/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs b/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs index 79b819c36..7623628f9 100644 --- a/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs +++ b/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs @@ -35,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(); From e7834416ea61bf7d80896120b89d928308ab2930 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 30 Jul 2016 11:25:45 -0700 Subject: [PATCH 134/184] Trycatch wrap normalize path Pretty sure cgse is unsupported on linux anyway, so the URI invalid exception can be ignored (skipping check). #151 continues! --- MainWindow/Main.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index eabf44f36..7a6150dac 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -3254,8 +3254,11 @@ private static string detectSaveFile() 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")); + try + { + if (File.Exists(Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root", "main")))) // if cgse exists + return Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root", "main")); + } catch { } return null; } From 1d32ef12f3cc7e2d17e8e8d9cfdc27981beaffb4 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 30 Jul 2016 13:25:58 -0700 Subject: [PATCH 135/184] Fix wc6full -> 2064 --- MysteryGifts/WC6.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MysteryGifts/WC6.cs b/MysteryGifts/WC6.cs index 6661f9f3c..26f8a186c 100644 --- a/MysteryGifts/WC6.cs +++ b/MysteryGifts/WC6.cs @@ -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; } From e4cb0255e7f25f293d3a0d2f146bb301a27553a1 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 30 Jul 2016 13:30:15 -0700 Subject: [PATCH 136/184] Release 07-31-16 Updated with latest event contributions. --- Resources/byte/wc6.pkl | Bin 242616 -> 244728 bytes Resources/byte/wc6full.pkl | Bin 182672 -> 186592 bytes Resources/text/changelog.txt | 16 ++++++++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Resources/byte/wc6.pkl b/Resources/byte/wc6.pkl index e143246460bfd9b0847b32eb1e8c82763ddc6b83..741fee4e69ab6ba1f5fda89c6361071de24e68ba 100644 GIT binary patch delta 81 zcmdn-obShXzRdzmT#TEwSUDJ*wOHG=SQ)o#u`(U--2TXyiGvYD3NUSdcoFiS8uv@mXAy5zn6l^+uaNVaQ*Gi}!jXWo_w0OZ*b AaR2}S diff --git a/Resources/byte/wc6full.pkl b/Resources/byte/wc6full.pkl index 82d99627b4406f8c315bbeb7b70a9ed94ada5037..d3d842dc86abd85ac2eeba6c2548c1826e2bd32b 100644 GIT binary patch delta 45 wcmbO*nft*;?uIRlN4&Ogac5Lu+kV6gL|*X)kxv4EWc!z3#_eB%ndX!N0HLQ5!~g&Q delta 33 ocmaE`k$b{q?uIRlN4&N_31C!U+pZD|B-=yM7`KO{G4&Jy0OWTJG5`Po diff --git a/Resources/text/changelog.txt b/Resources/text/changelog.txt index d7b14e146..9c84e5254 100644 --- a/Resources/text/changelog.txt +++ b/Resources/text/changelog.txt @@ -726,7 +726,7 @@ http://projectpokemon.org/forums/showthread.php?36986 - Hotfix: Fixed Gen 5 save file detection. Thanks xtreme1! - Hotfix: Fixed Bad Eggs from causing past gen dumping to abort. Thanks xtreme1! -07/28/16 - New Update: +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. @@ -750,4 +750,16 @@ http://projectpokemon.org/forums/showthread.php?36986 - - "!": 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. \ No newline at end of file + - - An advance search option has been added, uses the same filter style as the Batch Editor. + +07/30/16 - New Update: + - 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. \ No newline at end of file From cdd33c9d5fd504341767572ed43f8ec1affb26c6 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 30 Jul 2016 17:22:33 -0700 Subject: [PATCH 137/184] Add delete for mass editor .Species=0 Sets data to zeroes. --- Subforms/PKM Editors/BatchEditor.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index ffb3f9d59..aa31213e7 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -251,6 +251,8 @@ private static ModifyResult ProcessPKM(PKM PKM, IEnumerable F 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); From 497bfb93977d9f81b023b314433e8d9b1de81abc Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 30 Jul 2016 20:47:28 -0700 Subject: [PATCH 138/184] Fix SAV3 dragdrop between slots Thanks Destinyy! --- MainWindow/Main.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 7a6150dac..8e7356986 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -3347,6 +3347,7 @@ private void pbBoxSlot_DragDrop(object sender, DragEventArgs e) } else { + PKM pkz = SAV.getStoredSlot(pkm_from_offset); if (ModifierKeys == Keys.Alt && slot > -1) // overwrite delete old slot { // Clear from slot @@ -3365,8 +3366,7 @@ private void pbBoxSlot_DragDrop(object sender, DragEventArgs e) SAV.setStoredSlot(pk, pkm_from_offset); } // Copy from temp slot to new. - SAV.setStoredSlot(pkm_from, offset); - PKM pkz = SAV.getPKM(SAV.decryptPKM(pkm_from)); + SAV.setStoredSlot(pkz, offset); getQuickFiller(SlotPictureBoxes[slot], pkz); pkm_from_offset = 0; // Clear offset value From ceff3845b792f13a84847162d04c2465fc94f21e Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 30 Jul 2016 20:57:45 -0700 Subject: [PATCH 139/184] Add TableLayoutPanel scroll hack Thanks @poutros ! --- MainWindow/Main.cs | 2 +- Subforms/PKM Editors/RibbonEditor.cs | 2 ++ Subforms/PKM Editors/SuperTrainingEditor.cs | 2 ++ Subforms/Save Editors/SAV_EventFlags.cs | 5 +++-- Util/FormUtil.cs | 4 ++-- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 8e7356986..bdf4b2116 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -86,7 +86,7 @@ public Main() // Box to Tabs D&D dragout.AllowDrop = true; - FLP_SAVtools.Scroll += Util.FlowLayoutPanelScroll; + FLP_SAVtools.Scroll += Util.PanelScroll; // Load WC6 folder to legality refreshWC6DB(); diff --git a/Subforms/PKM Editors/RibbonEditor.cs b/Subforms/PKM Editors/RibbonEditor.cs index 1a8ad5292..fc73bd0a0 100644 --- a/Subforms/PKM Editors/RibbonEditor.cs +++ b/Subforms/PKM Editors/RibbonEditor.cs @@ -16,6 +16,8 @@ public RibbonEditor() // 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(); diff --git a/Subforms/PKM Editors/SuperTrainingEditor.cs b/Subforms/PKM Editors/SuperTrainingEditor.cs index af930afb1..5f148bb31 100644 --- a/Subforms/PKM Editors/SuperTrainingEditor.cs +++ b/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -16,6 +16,8 @@ public SuperTrainingEditor() // 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); diff --git a/Subforms/Save Editors/SAV_EventFlags.cs b/Subforms/Save Editors/SAV_EventFlags.cs index acb7234e8..006653a9c 100644 --- a/Subforms/Save Editors/SAV_EventFlags.cs +++ b/Subforms/Save Editors/SAV_EventFlags.cs @@ -24,9 +24,10 @@ public SAV_EventFlags() CB_Stats.Items.Add(i.ToString()); TLP_Flags.SuspendLayout(); - TLP_Flags.Controls.Clear(); - 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")); diff --git a/Util/FormUtil.cs b/Util/FormUtil.cs index e0c9da540..c76a198d9 100644 --- a/Util/FormUtil.cs +++ b/Util/FormUtil.cs @@ -139,9 +139,9 @@ internal static int getIndex(ComboBox cb) return (int)(cb?.SelectedValue ?? 0); } - public static void FlowLayoutPanelScroll(object sender, ScrollEventArgs e) + public static void PanelScroll(object sender, ScrollEventArgs e) { - var p = sender as FlowLayoutPanel; + var p = sender as Panel; switch (e.ScrollOrientation) { case ScrollOrientation.HorizontalScroll: From 696c5aa158984fec2ae6baee9b0d4bbb801b60a5 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 30 Jul 2016 23:03:41 -0700 Subject: [PATCH 140/184] Add folder output to another folder (no overwrite) Thanks \ for the suggestion! --- Subforms/PKM Editors/BatchEditor.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index aa31213e7..c3a4ed7ea 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -65,6 +65,18 @@ private void runBackgroundWorker() 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}; @@ -80,7 +92,7 @@ private void runBackgroundWorker() { var files = Directory.GetFiles(TB_Folder.Text, "*", SearchOption.AllDirectories); setupProgressBar(files.Length); - processFolder(files, Filters, Instructions); + processFolder(files, Filters, Instructions, destPath); } }; b.ProgressChanged += (sender, e) => @@ -161,7 +173,7 @@ private void processSAV(PKM[] data, List Filters, List Filters, List Instructions) + private void processFolder(string[] files, List Filters, List Instructions, string destPath) { len = err = ctr = 0; for (int i = 0; i < files.Length; i++) @@ -183,7 +195,7 @@ private void processFolder(string[] files, List Filters, List if (r == ModifyResult.Modified) { ctr++; - File.WriteAllBytes(file, pkm.DecryptedBoxData); + File.WriteAllBytes(Path.Combine(destPath, Path.GetFileName(file)), pkm.DecryptedBoxData); } b.ReportProgress(i); From 62ff84268b0045be8776b6959b54506e7c2f73a9 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 31 Jul 2016 09:20:06 -0700 Subject: [PATCH 141/184] Fix nature modification for gen4 Thanks BeyondTheHorizon! --- MainWindow/Main.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index bdf4b2116..e7bbd2d37 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1976,9 +1976,6 @@ private void updateNatureModification(object sender, EventArgs e) incr != decr ? $"+{labarray[incr].Text} / -{labarray[decr].Text}".Replace(":", "") : "-/-"); - - if (fieldsLoaded && SAV.Generation <= 4) - updateRandomPID(sender, e); } private void updateNickname(object sender, EventArgs e) { @@ -2159,8 +2156,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 } From 8c5d734151d77cc6edfef6cd25aecebef17cf765 Mon Sep 17 00:00:00 2001 From: evandixon Date: Sun, 31 Jul 2016 16:40:09 -0500 Subject: [PATCH 142/184] Changed resource paths for ClickOnce deployments --- MainWindow/Main.cs | 46 +++++++++++++++++++++++++++++++++++++++++++--- PKHeX.csproj | 1 + 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index e7bbd2d37..bfb00c910 100644 --- a/MainWindow/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; @@ -135,9 +136,7 @@ public Main() 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, @@ -176,6 +175,47 @@ 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 { + get + { + if (ApplicationDeployment.IsNetworkDeployed) + { + return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PKHeX"); + } + else + { + return Environment.CurrentDirectory; + } + } + } + + public static string DatabasePath + { + get + { + return Path.Combine(WorkingDirectory, "db"); + } + } + + private static string WC6DatabasePath + { + get + { + return Path.Combine(WorkingDirectory, "wc6"); + } + } + + private static string BackupPath + { + get + { + return Path.Combine(WorkingDirectory, "bak"); + } + } + #endregion + #region //// MAIN MENU FUNCTIONS //// // Main Menu Strip UI Functions private void mainMenuOpen(object sender, EventArgs e) diff --git a/PKHeX.csproj b/PKHeX.csproj index 0e9db46b7..b01803dcf 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -62,6 +62,7 @@ + From 6b23151bb96d81d9d9ad6762ddda4ba68727a20d Mon Sep 17 00:00:00 2001 From: evandixon Date: Sun, 31 Jul 2016 16:43:51 -0500 Subject: [PATCH 143/184] Changed default OpenFileDialog path for ClickOnce deployments --- MainWindow/Main.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index bfb00c910..4a7849b87 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -233,7 +233,7 @@ 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(); From b4a622e7843ecbb5d7d8572912ee5be113241f76 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 31 Jul 2016 18:15:58 -0700 Subject: [PATCH 144/184] Minor refactoring Expression body & ternary for less lines --- MainWindow/Main.cs | 40 ++++------------------------------------ 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 4a7849b87..bf12ae5de 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -177,43 +177,11 @@ public Main() #region Path Variables - public static string WorkingDirectory { - get - { - if (ApplicationDeployment.IsNetworkDeployed) - { - return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PKHeX"); - } - else - { - return Environment.CurrentDirectory; - } - } - } + 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"); - public static string DatabasePath - { - get - { - return Path.Combine(WorkingDirectory, "db"); - } - } - - private static string WC6DatabasePath - { - get - { - return Path.Combine(WorkingDirectory, "wc6"); - } - } - - private static string BackupPath - { - get - { - return Path.Combine(WorkingDirectory, "bak"); - } - } #endregion #region //// MAIN MENU FUNCTIONS //// From ea83159370c76e7cb351aa36a9522d813c1bddd5 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 31 Jul 2016 20:31:43 -0700 Subject: [PATCH 145/184] Add drop mysterygift into box slot Converts to pkm (pgt/pcd -> pk4, etc), then is attempted to convert to the format of the save file. --- MainWindow/Main.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index bf12ae5de..a30627081 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -3326,11 +3326,13 @@ private void pbBoxSlot_DragDrop(object sender, DragEventArgs e) 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)) { 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); From 43135ae274fbbdd4a872e1dde6ebc23f66c99b4c Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 1 Aug 2016 20:38:55 -0700 Subject: [PATCH 146/184] Fix empty savedatabackup folder Expects a 'main' on launch, none found throws an exception before the form is shown. --- MainWindow/Main.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index a30627081..e4c911af4 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -116,7 +116,7 @@ public Main() if (!SAV.Exportable) // No SAV loaded from exe args { string path = detectSaveFile(); - if (path != null) + if (path != null && File.Exists(path)) openQuick(path, force: true); else GB_SAVtools.Visible = false; From 685e2e639a190dc44f2c895a5738035c75c9389a Mon Sep 17 00:00:00 2001 From: ajtudela Date: Tue, 2 Aug 2016 16:37:02 +0200 Subject: [PATCH 147/184] Better translations for spanish language --- MainWindow/Main.Designer.cs | 8 +- Resources/text/es/lang_es.txt | 558 ++++++++++++++++++-- Resources/text/es/text_EncounterType_es.txt | 18 +- Resources/text/es/text_Games_es.txt | 8 +- 4 files changed, 522 insertions(+), 70 deletions(-) diff --git a/MainWindow/Main.Designer.cs b/MainWindow/Main.Designer.cs index d07b01920..2f84afa00 100644 --- a/MainWindow/Main.Designer.cs +++ b/MainWindow/Main.Designer.cs @@ -851,7 +851,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; @@ -872,7 +872,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; @@ -2644,9 +2644,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; diff --git a/Resources/text/es/lang_es.txt b/Resources/text/es/lang_es.txt index da2424e42..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 @@ -26,18 +26,18 @@ Menu_Exit = Salir -- Menu_Tools = Útiles Menu_Showdown = Showdown -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_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 = PKM 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_ModifyPKM = Modificar PKM 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,18 +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 -BTN_Medals = Medales +BTN_Ribbons = Cintas +BTN_Medals = Medallas BTN_History = Memorias -Label_EncryptionConstant = Constante de Encryption: +Label_EncryptionConstant = Cte. de Encriptación: BTN_RerollEC = Generar -----------------Save Data Interface-------------------- Tab_Box = Caja @@ -140,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: @@ -173,13 +173,13 @@ L_Secure2 = Secure Value 2: ! End ! ----------------------------------------------------- - DO NOT CHANGE THIS SECTION. -! RibbonEditor = Ribbon Editor +! 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 +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) @@ -220,13 +220,13 @@ L_RibbonChampionNational = Campeón Nacional L_RibbonChampionWorld = Campeón Mundial L_RibbonCountMemoryContest = Cintas de concursos anteriores L_RibbonCountMemoryBattle = Cintas de batallas anteriores -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 +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 @@ -283,13 +283,13 @@ L_RibbonCountG3Smart = Smart L_RibbonCountG3Tough = Tough ! ----------------------------------------------------- - DO NOT CHANGE THIS SECTION. -! SuperTrainingEditor = Medal Editor +! SuperTrainingEditor = Editor de Medallas - Change stuff below this line, not above. ----------------------Buttons-------------------------- -B_All = Give All -B_None = Remove All -B_Cancel = Cancel -B_Save = Save +B_All = Dar todos +B_None = Quitar todos +B_Cancel = Cancelar +B_Save = Guardar ------------------Super Training----------------------- L_SuperTraining = Superentrenamiento Normal L_SuperTrain1_HP = Nv. 1: PS @@ -324,12 +324,12 @@ 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 @@ -339,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_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 From 116840b32e65e0565f302894d38a4a0dca9dc275 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Tue, 2 Aug 2016 17:40:20 -0700 Subject: [PATCH 148/184] Cleanup Remove unnecessary complexity Fix exporting pk* (DecryptedBoxData instead of 0xE8) --- Subforms/SAV_Database.cs | 128 +++------------------------------------ 1 file changed, 9 insertions(+), 119 deletions(-) diff --git a/Subforms/SAV_Database.cs b/Subforms/SAV_Database.cs index f9c0f5b2d..abcc6bef1 100644 --- a/Subforms/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 @@ -80,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; @@ -323,80 +314,6 @@ 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)) @@ -419,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 @@ -644,32 +560,6 @@ private void changeGeneration(object sender, EventArgs e) CB_GameOrigin.SelectedIndex = 0; } - // Debug - private void testQuery() - { - 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); - } private void Menu_SearchAdvanced_Click(object sender, EventArgs e) { if (!Menu_SearchAdvanced.Checked) From a7d188894304262441f038defecd7dd4c71053e3 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Tue, 2 Aug 2016 18:46:41 -0700 Subject: [PATCH 149/184] Fix Open/Save filters Filter for opening allows past gen pkm files to be selected. Removes old 'pokemon.ekx' injection method which nobody should be using (use QRs!) --- MainWindow/Main.cs | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index e4c911af4..a4dd545c2 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -188,11 +188,22 @@ public Main() // 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, @@ -219,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."); From 3e7d694128a030f4ad64a413cbe0599eaa4a3d22 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Tue, 2 Aug 2016 23:51:58 -0700 Subject: [PATCH 150/184] Fix party disappearing Thanks ashrobb & MichiS97 ! --- MainWindow/Main.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index a4dd545c2..af65bcbdc 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -2798,7 +2798,7 @@ private void setParty() for (int i = 0; i < battle.Length; i++) getQuickFiller(SlotPictureBoxes[i + 36], battle[i]); for (int i = battle.Length; i < 6; i++) - SlotPictureBoxes[i + 30].Image = null; + SlotPictureBoxes[i + 36].Image = null; } } private int getPKXOffset(int slot) From 8d6525dfe9ef844a923ad12c45c8202a128a65f5 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 3 Aug 2016 00:10:38 -0700 Subject: [PATCH 151/184] Add hot spring wynaut OT memory case Adding 60004 to the "WasEgg" check qualifies the pkm to be checked for having egg relearn moves; since this was a gift egg it wasn't a daycareEgg. --- Legality/Checks.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 5c33a70c4..69d08b97a 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -710,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}. From e6a8e9fed6c162a5185c840455d0c07a96bf1cd7 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 3 Aug 2016 08:35:13 -0700 Subject: [PATCH 152/184] Fix gen3 Met Level 70 & 0x3F = 6 Thanks Destinyy! --- PKM/PK3.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 46d11ded7..4f647dd2a 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -105,7 +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 & 0x3F; } set { Origins = (ushort)((Origins & ~0x3F) | value); } } + 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)); } } From 3f5d8fad953e05a65cad02b54aa43acd40bbe723 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 3 Aug 2016 17:48:13 -0700 Subject: [PATCH 153/184] Fix pk* save extension detection A period is before the extension. Fixes #163, thanks @JHorbach ! --- MainWindow/Main.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index af65bcbdc..dd5cf8184 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -252,9 +252,9 @@ private void mainMenuSave(object sender, EventArgs e) File.WriteAllBytes(path + ".bak", backupfile); } - if (new[] {".ekx", ekx, ".bin"}.Contains(ext)) + if (new[] {".ekx", "."+ekx, ".bin"}.Contains(ext)) File.WriteAllBytes(path, pk.EncryptedPartyData); - else if (new[] { pkx }.Contains(ext)) + else if (new[] { "."+pkx }.Contains(ext)) File.WriteAllBytes(path, pk.DecryptedBoxData); else { From 0dd6b05f1d00e3cd1ce7a81dd85324677e14c069 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Wed, 3 Aug 2016 17:56:15 -0700 Subject: [PATCH 154/184] Fix event flag retrieval Thanks CaliberDR! --- Saves/SaveFile.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Saves/SaveFile.cs b/Saves/SaveFile.cs index bd6c70f09..6775c7716 100644 --- a/Saves/SaveFile.cs +++ b/Saves/SaveFile.cs @@ -235,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 From 8924dd09401b69f8281041885a8d45c2ed251008 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 4 Aug 2016 19:16:13 -0700 Subject: [PATCH 155/184] Fix fateful celebi transfer Don't assign as crown unless it was received in gen4 (movie celebi only). --- PKM/PK4.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PKM/PK4.cs b/PKM/PK4.cs index f7e450e31..877a0b76e 100644 --- a/PKM/PK4.cs +++ b/PKM/PK4.cs @@ -392,7 +392,7 @@ 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) From 30047a1cb6dfd4bc48207005b5a8eb10b1520dd5 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 4 Aug 2016 19:18:32 -0700 Subject: [PATCH 156/184] Fix manaphy hatching from egg Can't receive a manaphy egg from Daycare or other non-Mystery Gift source. A wc6 Manaphy egg would not satisfy "WasEgg" anyway. So far no manaphy eggs have been given out, and none will be (probably). Thanks RustInPeace! --- Legality/Tables.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Legality/Tables.cs b/Legality/Tables.cs index 4ab3f3d22..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 From 2acd1c5d21bd31725a5a3d06e9a28440aeb200ab Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 4 Aug 2016 20:48:52 -0700 Subject: [PATCH 157/184] Tweak savefile detection Remove old cybergadget temp folder (interrupt is no longer used, now using Cache), fix/modify current methods for a more maintainable method. If GameFreak changes the filename, it'd only have to be changed in one place. --- MainWindow/Main.cs | 39 +++++++------------------------------ Saves/SAV6.cs | 1 + Saves/SaveUtil.cs | 48 ++++++++++++++++++++++++++++++++++++++++++++++ Util/PathUtil.cs | 37 ----------------------------------- 4 files changed, 56 insertions(+), 69 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index dd5cf8184..932f5e086 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -115,7 +115,7 @@ public Main() } if (!SAV.Exportable) // No SAV loaded from exe args { - string path = detectSaveFile(); + string path = SaveUtil.detectSaveFile(); if (path != null && File.Exists(path)) openQuick(path, force: true); else @@ -215,7 +215,7 @@ private void mainMenuOpen(object sender, EventArgs e) 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"))) @@ -499,17 +499,17 @@ private void clickOpenCacheFolder(object sender, EventArgs e) } private void clickOpenSDFFolder(object sender, EventArgs e) { - string path; - if (Util.get3DSLocation() != null && Directory.Exists(path = Util.GetSDFLocation())) + 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"))) + if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "SaveDataBackup"))) Process.Start("explorer.exe", path); else Util.Alert("Can't find the SaveDataBackup folder."); @@ -3248,36 +3248,11 @@ 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() - { - string pathSDF = Util.GetSDFLocation(); - string path3DS = Util.get3DSLocation(); - string pathCache = Util.GetCacheFolder(); - - 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(); - try - { - if (File.Exists(Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root", "main")))) // if cgse exists - return Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root", "main")); - } catch { } - - return null; - } // Drag & Drop within Box private void pbBoxSlot_MouseDown(object sender, MouseEventArgs e) diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index df076efb0..0e1064940 100644 --- a/Saves/SAV6.cs +++ b/Saves/SAV6.cs @@ -7,6 +7,7 @@ namespace PKHeX public sealed class SAV6 : SaveFile { // Save Data Attributes + public const string DefaultFileName = "main"; public override string BAKName => $"{FileName} [{OT} ({Version}) - {LastSavedTime}].bak"; public override string Filter => "Main SAV|*.*"; public override string Extension => ""; diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index 0413eab07..e4fc2cea9 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Linq; using System.Text; @@ -176,6 +177,53 @@ public static SaveFile getVariantSAV(byte[] data) } } + /// + /// Detects a save file. + /// + /// File Name to look for. + /// Full path of a save file. Returns null if unable to find any. + public static string detectSaveFile(string fileName = SAV6.DefaultFileName) + { + string path; + string path3DS = Path.GetPathRoot(Util.get3DSLocation()); + + // save_manager + if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "saveDataBackup"))) + if (File.Exists(path = Path.Combine(path, fileName))) + return path; + + // SaveDataFiler + if (path3DS != null && Directory.Exists(Path.Combine(path3DS, "filer", "UserSaveData"))) + return getNewestSavePath(Path.Combine(path3DS, "filer", "UserSaveData"), fileName); + + // JKSV + if (path3DS != null && Directory.Exists(Path.Combine(path3DS, "JKSV", "Saves"))) + return getNewestSavePath(Path.Combine(path3DS, "JKSV", "Saves"), "main"); + + // CyberGadget (Cache) + string pathCache = Util.GetCacheFolder(); + if (Directory.Exists(pathCache)) + return Directory.GetFiles(pathCache).Where(f => SizeValidSAV6((int)new FileInfo(f).Length)) // filter + .OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault(); + + return null; + } + /// + /// Retrieves the full path of the most recent file based on LastWriteTime. + /// + /// Folder to look within + /// Filename to look for, if null can be named anything + /// Search all subfolders + /// Full path of a save file. Returns null if unable to find any. + public static string getNewestSavePath(string folderPath, string fileName, bool deep = true) + { + if (!Directory.Exists(folderPath)) + return null; + return Directory.GetFiles(folderPath, fileName ?? "*", deep ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) + .Where(f => SizeValidSAV6((int)new FileInfo(f).Length)) // filter + .OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault(); + } + /// /// Determines whether the save data size is valid for 6th generation saves. /// diff --git a/Util/PathUtil.cs b/Util/PathUtil.cs index 741f16d21..6159fc92b 100644 --- a/Util/PathUtil.cs +++ b/Util/PathUtil.cs @@ -6,11 +6,6 @@ namespace PKHeX { public partial class Util { - 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"); @@ -62,38 +57,6 @@ internal static string get3DSLocation() 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)); From 5ceafc21e17aa168d8f10a384260f35945af7008 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 4 Aug 2016 21:12:16 -0700 Subject: [PATCH 158/184] Add TWLSaveTool support A little more computationally intensive, but checking for the first valid save file after checking for valid save paths seems legit. --- Saves/SaveUtil.cs | 50 +++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index e4fc2cea9..5b7976b7b 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; @@ -139,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) @@ -180,48 +181,50 @@ public static SaveFile getVariantSAV(byte[] data) /// /// Detects a save file. /// - /// File Name to look for. /// Full path of a save file. Returns null if unable to find any. - public static string detectSaveFile(string fileName = SAV6.DefaultFileName) + 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"))) - if (File.Exists(path = Path.Combine(path, fileName))) - return path; + if (File.Exists(path = Path.Combine(path))) + possiblePaths.Add(path); // SaveDataFiler - if (path3DS != null && Directory.Exists(Path.Combine(path3DS, "filer", "UserSaveData"))) - return getNewestSavePath(Path.Combine(path3DS, "filer", "UserSaveData"), fileName); + if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "filer", "UserSaveData"))) + possiblePaths.AddRange(getSavesFromFolder(path, true)); // JKSV - if (path3DS != null && Directory.Exists(Path.Combine(path3DS, "JKSV", "Saves"))) - return getNewestSavePath(Path.Combine(path3DS, "JKSV", "Saves"), "main"); + 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)) - return Directory.GetFiles(pathCache).Where(f => SizeValidSAV6((int)new FileInfo(f).Length)) // filter - .OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault(); + possiblePaths.AddRange(getSavesFromFolder(Path.Combine(pathCache), false)); - return null; + // 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 - /// Filename to look for, if null can be named anything /// Search all subfolders - /// Full path of a save file. Returns null if unable to find any. - public static string getNewestSavePath(string folderPath, string fileName, bool deep = true) + /// 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, fileName ?? "*", deep ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) - .Where(f => SizeValidSAV6((int)new FileInfo(f).Length)) // filter - .OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault(); + return Directory.GetFiles(folderPath, "*", deep ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) + .Where(f => SizeValidSAV((int)new FileInfo(f).Length)); } /// @@ -229,16 +232,21 @@ public static string getNewestSavePath(string folderPath, string fileName, bool /// /// 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 From a8d76fa9fb0fc092e91ce13108d2809d476e60d8 Mon Sep 17 00:00:00 2001 From: Elias Carrillo Date: Fri, 5 Aug 2016 04:04:56 -0700 Subject: [PATCH 159/184] Improved the way drag and drop is initiated. Temp pkx file is not generated until user left-clicks and moves. Prevents drag and drop of blank pokemon from slots previously held by dragged pokemon. Response for left-click actions moved into left-click event. --- MainWindow/Main.Designer.cs | 188 ++++++++++++++++++++++++++++++++++++ MainWindow/Main.cs | 178 ++++++++++++++++++++++------------ 2 files changed, 303 insertions(+), 63 deletions(-) diff --git a/MainWindow/Main.Designer.cs b/MainWindow/Main.Designer.cs index 2f84afa00..91bf1f5d5 100644 --- a/MainWindow/Main.Designer.cs +++ b/MainWindow/Main.Designer.cs @@ -3072,7 +3072,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx30.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx30.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx30.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx30.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // mnuVSD // @@ -3116,7 +3120,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx29.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx29.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx29.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx29.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx28 // @@ -3130,7 +3138,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx28.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx28.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx28.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx28.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx27 // @@ -3144,7 +3156,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx27.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx27.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx27.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx27.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx26 // @@ -3158,7 +3174,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx26.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx26.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx26.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx26.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx25 // @@ -3172,7 +3192,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx25.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx25.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx25.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx25.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx24 // @@ -3186,7 +3210,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx24.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx24.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx24.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx24.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx23 // @@ -3200,7 +3228,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx23.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx23.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx23.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx23.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx22 // @@ -3214,7 +3246,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx22.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx22.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx22.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx22.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx21 // @@ -3228,7 +3264,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx21.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx21.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx21.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx21.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx20 // @@ -3242,7 +3282,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx20.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx20.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx20.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx20.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx19 // @@ -3256,7 +3300,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx19.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx19.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx19.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx19.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx18 // @@ -3270,7 +3318,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx18.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx18.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx18.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx18.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx17 // @@ -3284,7 +3336,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx17.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx17.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx17.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx17.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx16 // @@ -3298,7 +3354,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx16.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx16.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx16.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx16.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx15 // @@ -3312,7 +3372,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx15.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx15.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx15.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx15.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx14 // @@ -3326,7 +3390,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx14.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx14.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx14.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx14.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx13 // @@ -3340,7 +3408,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx13.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx13.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx13.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx13.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx12 // @@ -3354,7 +3426,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx12.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx12.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx12.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx12.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx11 // @@ -3368,7 +3444,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx11.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx11.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx11.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx11.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx10 // @@ -3382,7 +3462,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx10.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx10.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx10.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx10.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx9 // @@ -3396,7 +3480,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx9.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx9.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx9.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx8 // @@ -3410,7 +3498,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx8.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx8.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx8.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx7 // @@ -3424,7 +3516,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx7.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx7.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx7.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx7.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx6 // @@ -3438,7 +3534,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx5 // @@ -3452,7 +3552,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx4 // @@ -3466,7 +3570,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx3 // @@ -3480,7 +3588,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx2 // @@ -3494,7 +3606,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bpkx1 // @@ -3508,7 +3624,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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // B_BoxRight // @@ -3624,7 +3744,11 @@ public void InitializeComponent() this.bbpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx1.TabIndex = 8; this.bbpkx1.TabStop = false; + this.bbpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bbpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bbpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // mnuV // @@ -3649,7 +3773,11 @@ public void InitializeComponent() this.bbpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx2.TabIndex = 9; this.bbpkx2.TabStop = false; + this.bbpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bbpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bbpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bbpkx3 // @@ -3660,7 +3788,11 @@ public void InitializeComponent() this.bbpkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx3.TabIndex = 10; this.bbpkx3.TabStop = false; + this.bbpkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bbpkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bbpkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bbpkx4 // @@ -3671,7 +3803,11 @@ public void InitializeComponent() this.bbpkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx4.TabIndex = 11; this.bbpkx4.TabStop = false; + this.bbpkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bbpkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bbpkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bbpkx5 // @@ -3682,7 +3818,11 @@ public void InitializeComponent() this.bbpkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx5.TabIndex = 12; this.bbpkx5.TabStop = false; + this.bbpkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bbpkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bbpkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // bbpkx6 // @@ -3693,7 +3833,11 @@ public void InitializeComponent() this.bbpkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx6.TabIndex = 13; this.bbpkx6.TabStop = false; + this.bbpkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.bbpkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.bbpkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.bbpkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.bbpkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // L_ReadOnlyPBB // @@ -3749,7 +3893,11 @@ public void InitializeComponent() this.ppkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx1.TabIndex = 2; this.ppkx1.TabStop = false; + this.ppkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.ppkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.ppkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // ppkx2 // @@ -3760,7 +3908,11 @@ public void InitializeComponent() this.ppkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx2.TabIndex = 3; this.ppkx2.TabStop = false; + this.ppkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.ppkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.ppkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // ppkx3 // @@ -3771,7 +3923,11 @@ public void InitializeComponent() this.ppkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx3.TabIndex = 4; this.ppkx3.TabStop = false; + this.ppkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.ppkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.ppkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // ppkx4 // @@ -3782,7 +3938,11 @@ public void InitializeComponent() this.ppkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx4.TabIndex = 5; this.ppkx4.TabStop = false; + this.ppkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.ppkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.ppkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // ppkx5 // @@ -3793,7 +3953,11 @@ public void InitializeComponent() this.ppkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx5.TabIndex = 6; this.ppkx5.TabStop = false; + this.ppkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.ppkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.ppkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // ppkx6 // @@ -3804,7 +3968,11 @@ public void InitializeComponent() this.ppkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx6.TabIndex = 7; this.ppkx6.TabStop = false; + this.ppkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.ppkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.ppkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.ppkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.ppkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // Tab_Other // @@ -3922,7 +4090,11 @@ public void InitializeComponent() this.dcpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.dcpkx2.TabIndex = 11; this.dcpkx2.TabStop = false; + this.dcpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.dcpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.dcpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.dcpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.dcpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // dcpkx1 // @@ -3934,7 +4106,11 @@ public void InitializeComponent() this.dcpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.dcpkx1.TabIndex = 10; this.dcpkx1.TabStop = false; + this.dcpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.dcpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.dcpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.dcpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.dcpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // DayCare_HasEgg // @@ -3967,7 +4143,11 @@ public void InitializeComponent() this.gtspkx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.gtspkx.TabIndex = 23; this.gtspkx.TabStop = false; + this.gtspkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.gtspkx.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.gtspkx.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.gtspkx.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.gtspkx.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // GB_Fused // @@ -3989,7 +4169,11 @@ public void InitializeComponent() this.fusedpkx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.fusedpkx.TabIndex = 24; this.fusedpkx.TabStop = false; + this.fusedpkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.fusedpkx.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.fusedpkx.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.fusedpkx.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.fusedpkx.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // L_ReadOnlyOther // @@ -4023,7 +4207,11 @@ public void InitializeComponent() this.subepkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.subepkx1.TabIndex = 18; this.subepkx1.TabStop = false; + this.subepkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); this.subepkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown); + this.subepkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove); + this.subepkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); + this.subepkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); // // subepkx2 // diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index dd5cf8184..d48cbcf08 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -18,7 +18,7 @@ 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; @@ -3279,60 +3279,91 @@ private static string detectSaveFile() return null; } - // Drag & Drop within Box + // Drag and drop related functions + private void pbBoxSlot_MouseClick(object sender, MouseEventArgs e) + { + if (slotDragDropInProgress) + return; + + 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; + } 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()); } - pkm_from_offset = 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(); } 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; @@ -3358,36 +3389,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 { - PKM pkz = SAV.getStoredSlot(pkm_from_offset); - 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(pkz, offset); - 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) @@ -3397,10 +3437,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 } } From fdbeada3b767c5c65dc63929a876e775228ad579 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 5 Aug 2016 05:51:55 -0700 Subject: [PATCH 160/184] Improve dragdrop from box to tabs Previously only allowed dragging to the Preview box to load to tabs, now if a box slot is dragged to anywhere in the window it will load. Unrelated to previous pull request :) --- MainWindow/Main.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 7273f2462..51b675fd5 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -2402,7 +2402,7 @@ public PKM preparePKM(bool click = true) // 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) { From 034da95ff4986fc4795e379cef6a2fe3deeb071c Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 5 Aug 2016 16:21:15 -0700 Subject: [PATCH 161/184] Re-enable Vivillon form editing Dunno why it was disabled. Thanks Majickhat55! --- Subforms/Save Editors/Gen6/SAV_Trainer.Designer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Subforms/Save Editors/Gen6/SAV_Trainer.Designer.cs b/Subforms/Save Editors/Gen6/SAV_Trainer.Designer.cs index 736bf6990..401b769f7 100644 --- a/Subforms/Save Editors/Gen6/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"; From 61573301d6cc9af3d29acfe1dd65d80f26c35641 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 5 Aug 2016 21:02:54 -0700 Subject: [PATCH 162/184] Fix Ho-Oh fullwidth MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gen3 changes to gen4: - to - Just display as short width Fix unknown character (0xFF => early termination) throwing an exception Chartables were not spaced correctly (hex table), fixed now. --- PKM/PKX.cs | 69 +++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 05d988355..76b26ba21 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -1043,7 +1043,8 @@ 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; } @@ -1469,44 +1470,42 @@ 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 From 98e72aefc813ebdd2d1c6c19f6f0a8a8e3445156 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 5 Aug 2016 21:36:51 -0700 Subject: [PATCH 163/184] Fix gen3 unknown game data setting Grab the original data, not the expanded data. Could always call 'clone' but the data hasn't been modified, so get the original data. --- MainWindow/Main.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 51b675fd5..546a41676 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -720,11 +720,11 @@ private void openSAV(byte[] input, string path) "Cancel: FireRed / LeafGreen"); if (drGame == DialogResult.Yes) - sav = new SAV3(sav.Data, GameVersion.RS); + sav = new SAV3(sav.BAK, GameVersion.RS); else if (drGame == DialogResult.No) - sav = new SAV3(sav.Data, GameVersion.E); + sav = new SAV3(sav.BAK, GameVersion.E); else - sav = new SAV3(sav.Data, GameVersion.FRLG); + 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) From fcd28937365dbfa829e6783618b8f27c51c76c4d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 5 Aug 2016 22:59:02 -0700 Subject: [PATCH 164/184] Remove unused property Was used in the save detection method which was redesigned to not need a filename. --- Saves/SAV6.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Saves/SAV6.cs b/Saves/SAV6.cs index 0e1064940..df076efb0 100644 --- a/Saves/SAV6.cs +++ b/Saves/SAV6.cs @@ -7,7 +7,6 @@ namespace PKHeX public sealed class SAV6 : SaveFile { // Save Data Attributes - public const string DefaultFileName = "main"; public override string BAKName => $"{FileName} [{OT} ({Version}) - {LastSavedTime}].bak"; public override string Filter => "Main SAV|*.*"; public override string Extension => ""; From a8a0060c2e31dfe21f5a994c14a310f4a428d302 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Fri, 5 Aug 2016 23:21:27 -0700 Subject: [PATCH 165/184] Fix gen4 pkm location/ball interaction Met Location fixed from Daycare Couple to "Faraway Place" (2000 -> 3002) Check no egg location before writing faraway place. HGSSBall handled directly by Ball property (like met location) Constrain balls and met locations for DP Thanks BeyondTheHorizon for the initial bug report prompting this improvement. --- PKM/PK4.cs | 52 ++++++++++++++++++++++++++++++++++++++++++++-------- PKM/PKM.cs | 3 ++- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/PKM/PK4.cs b/PKM/PK4.cs index 877a0b76e..bc0a04c36 100644 --- a/PKM/PK4.cs +++ b/PKM/PK4.cs @@ -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 @@ -398,8 +435,7 @@ public PK5 convertToPK5() // 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; diff --git a/PKM/PKM.cs b/PKM/PKM.cs index d5b946a8e..2b5f121bf 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -147,7 +147,8 @@ 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; From 01051d7b9f8a52c6548af8746e2d25d212fc0919 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 6 Aug 2016 09:34:41 -0700 Subject: [PATCH 166/184] Allow TMs to be held in gen4 saves Thanks javier_himura! --- Legality/Tables4.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Legality/Tables4.cs b/Legality/Tables4.cs index 5ac132dc5..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,7 @@ 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 = From 08a58964db12152a5801105d4c84fbf41954bc2a Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 6 Aug 2016 09:35:05 -0700 Subject: [PATCH 167/184] Allow gen3 item transfer 3->4 Thanks javier_himura! --- PKM/PK3.cs | 4 ++++ PKM/PKX.cs | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 4f647dd2a..2dfebeb80 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -296,6 +296,10 @@ public PK4 convertToPK4() // Unown Form 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 }; int[] newMoves = pk4.Moves; diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 76b26ba21..b06ffdc95 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -1576,7 +1576,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, @@ -1595,6 +1595,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; From 8410ea4b9e0faea53bf8b61bbf2269a13f86dd68 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 6 Aug 2016 09:41:46 -0700 Subject: [PATCH 168/184] Tweak transfer HM banlist for clarity No change in functionality, easier to understand --- PKM/PK4.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PKM/PK4.cs b/PKM/PK4.cs index bc0a04c36..f5a73b823 100644 --- a/PKM/PK4.cs +++ b/PKM/PK4.cs @@ -445,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++) From dab1bf44aede86c81a5cdc9214e5eba4a41df239 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 6 Aug 2016 10:01:40 -0700 Subject: [PATCH 169/184] Add tm sprite for held item No longer uses the generic 'unknown' item sprite --- PKHeX.csproj | 1 + PKM/PKX.cs | 7 ++- Properties/Resources.Designer.cs | 98 ++++++++++++++----------------- Properties/Resources.resx | 3 + Resources/img/item/item_tm.png | Bin 0 -> 777 bytes 5 files changed, 53 insertions(+), 56 deletions(-) create mode 100644 Resources/img/item/item_tm.png diff --git a/PKHeX.csproj b/PKHeX.csproj index b01803dcf..9e8f5b4d6 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -708,6 +708,7 @@ + diff --git a/PKM/PKX.cs b/PKM/PKX.cs index b06ffdc95..7ba8fffa6 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -457,7 +457,7 @@ internal static uint getRandomPID(int species, int cg, int origin, int nature, i } // Data Requests - internal static Image getSprite(int species, int form, int gender, int item, bool isegg, bool shiny) + internal 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"); @@ -499,6 +499,9 @@ 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); } @@ -506,7 +509,7 @@ internal static Image getSprite(int species, int form, int gender, int item, boo } internal 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 diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 131bc6ca5..3e10c76ee 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -15132,6 +15132,16 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap item_tm { + get { + object obj = ResourceManager.GetObject("item_tm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 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. @@ -15181,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 @@ -15193,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 { @@ -20500,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) /// /// /// @@ -20522,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 { @@ -20697,7 +20707,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -20949,9 +20959,7 @@ internal class Resources { /// /// /// - /// - /// - /// /// [rest of string was truncated]";. + /// [rest of string was truncated]";. /// internal static string text_forms_de { get { @@ -20960,7 +20968,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -21212,9 +21220,7 @@ internal class Resources { /// /// /// - /// - /// - /// /// [rest of string was truncated]";. + /// [rest of string was truncated]";. /// internal static string text_forms_en { get { @@ -21223,7 +21229,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -21474,10 +21480,7 @@ internal class Resources { /// /// /// - /// - /// - /// - /// [rest of string was truncated]";. + /// /// [rest of string was truncated]";. /// internal static string text_forms_es { get { @@ -21486,7 +21489,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -21736,10 +21739,7 @@ internal class Resources { /// /// /// - /// - /// - /// - /// [rest of string was truncated]";. + /// /// [rest of string was truncated]";. /// internal static string text_forms_fr { get { @@ -21748,7 +21748,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -21999,10 +21999,7 @@ internal class Resources { /// /// /// - /// - /// - /// - /// [rest of string was truncated]";. + /// /// [rest of string was truncated]";. /// internal static string text_forms_it { get { @@ -22011,7 +22008,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -22262,9 +22259,7 @@ internal class Resources { /// /// /// - /// - /// - /// /// [rest of string was truncated]";. + /// [rest of string was truncated]";. /// internal static string text_forms_ja { get { @@ -22273,7 +22268,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -22525,9 +22520,7 @@ internal class Resources { /// /// /// - /// - /// - /// /// [rest of string was truncated]";. + /// [rest of string was truncated]";. /// internal static string text_forms_ko { get { @@ -22536,7 +22529,7 @@ internal class Resources { } /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to Spiky /// /// /// @@ -22787,10 +22780,7 @@ internal class Resources { /// /// /// - /// - /// - /// - /// [rest of string was truncated]";. + /// /// [rest of string was truncated]";. /// internal static string text_forms_zh { get { @@ -22878,8 +22868,8 @@ internal class Resources { ///RojoFuego ///VerdeHoja /// - ///HeartGold - ///SoulSilver + ///Oro HeartGold + ///Plata SoulSilver /// ///Diamante ///Perla @@ -22897,8 +22887,8 @@ internal class Resources { ///Negra2 ///X ///Y - ///AS - ///OR. + ///Zafiro Alfa + ///Rubí Omega. /// internal static string text_games_es { get { diff --git a/Properties/Resources.resx b/Properties/Resources.resx index da26da620..10d5e449e 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -6382,4 +6382,7 @@ ..\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/img/item/item_tm.png b/Resources/img/item/item_tm.png new file mode 100644 index 0000000000000000000000000000000000000000..1d170e8b7dd1f19e594f5332522ee465ee6b28f3 GIT binary patch literal 777 zcmV+k1NQuhP)pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMIczh2P5=M`heK8m7FE%!OSY6%0`1p4y%3BzX6{lHQS&y%gt7>a&Q;o)F{L|Lf4uZiD&d>iLoldhZ zE-s*HM;IFVin6j7Nm-WfGe{i?92js4a0{xc3Rn~HUj{EPFA8vc z`$(1?4#z3k*xcOAsIPDM3a+lU!R7iPQr%#`6jXhE3$8)C)9Fm_?(Sk~X(^+wu0EJd zW=O@wX3@zFzu(V3qtPf%PU5JntUMhV8A-D0$`;)k^5;QkAzobkg zx>Y(kx|~4Zh`Zjvkw`?0u3>t54xOF747Rto^A<8iw@N2hRaJ-H-p?2wcJVrTdiv4Y z`kp<~sF{v;i*B{Cu~D{KZOF@ef}EUOUI(R0;jqVBB}xAQ5tSue<)qV%00000NkvXX Hu0mjfNv2!v literal 0 HcmV?d00001 From be41727a6e8dee7848e64a4a8206d9bd02943db1 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 6 Aug 2016 11:37:16 -0700 Subject: [PATCH 170/184] Fix numpad typo Pal park transfer friendship is 70 not 40 789 456 123 Fixes #165 --- PKM/PK3.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 2dfebeb80..a6f20bc4c 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -196,7 +196,7 @@ public PK4 convertToPK4() SID = SID, EXP = IsEgg ? PKX.getEXP(5, Species) : EXP, IsEgg = false, - OT_Friendship = 40, + OT_Friendship = 70, MarkCircle = MarkCircle, MarkSquare = MarkSquare, MarkTriangle = MarkTriangle, From 29c4497603bdb2910292d3232c35003b967e1ba9 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 6 Aug 2016 12:30:00 -0700 Subject: [PATCH 171/184] Only write pkm out if species is not zero (empty) --- Subforms/PKM Editors/BatchEditor.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Subforms/PKM Editors/BatchEditor.cs b/Subforms/PKM Editors/BatchEditor.cs index c3a4ed7ea..67613c4d5 100644 --- a/Subforms/PKM Editors/BatchEditor.cs +++ b/Subforms/PKM Editors/BatchEditor.cs @@ -194,8 +194,11 @@ private void processFolder(string[] files, List Filters, List err++; if (r == ModifyResult.Modified) { - ctr++; - File.WriteAllBytes(Path.Combine(destPath, Path.GetFileName(file)), pkm.DecryptedBoxData); + if (pkm.Species > 0) + { + ctr++; + File.WriteAllBytes(Path.Combine(destPath, Path.GetFileName(file)), pkm.DecryptedBoxData); + } } b.ReportProgress(i); From f83cfbaae10ccf6a61d7761de5ccb6dd62ea11b3 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 6 Aug 2016 12:57:53 -0700 Subject: [PATCH 172/184] Add mystery gift file drag&drop to slot pgt was a pkm size, check all sizes --- MainWindow/Main.cs | 2 +- MysteryGifts/MysteryGift.cs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 546a41676..d9f6a1c08 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -3344,7 +3344,7 @@ private void pbBoxSlot_DragDrop(object sender, DragEventArgs e) return; string file = files[0]; FileInfo fi = new FileInfo(file); - if (!PKX.getIsPKM(fi.Length)) + if (!PKX.getIsPKM(fi.Length) && !MysteryGift.getIsMysteryGift(fi.Length)) { openQuick(file); return; } byte[] data = File.ReadAllBytes(file); diff --git a/MysteryGifts/MysteryGift.cs b/MysteryGifts/MysteryGift.cs index cff746126..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") From ecfb5626eab2baa02112c0303cd70b63812f64c6 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 6 Aug 2016 13:18:23 -0700 Subject: [PATCH 173/184] Release 08-07-16 Updated with latest event contributions. --- Resources/byte/wc6.pkl | Bin 244728 -> 247368 bytes Resources/byte/wc6full.pkl | Bin 186592 -> 192080 bytes Resources/text/changelog.txt | 16 ++++++++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Resources/byte/wc6.pkl b/Resources/byte/wc6.pkl index 741fee4e69ab6ba1f5fda89c6361071de24e68ba..e29dc62e28b92d4f3b219a1f1ebcec59e03edd83 100644 GIT binary patch delta 5384 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 Date: Sat, 6 Aug 2016 15:39:26 -0700 Subject: [PATCH 174/184] Fix saveDataBackup detection Thanks IamAVeryNicePereson! --- Saves/SaveUtil.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index 5b7976b7b..0a2b8aad4 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -190,8 +190,7 @@ public static string detectSaveFile() // save_manager if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "saveDataBackup"))) - if (File.Exists(path = Path.Combine(path))) - possiblePaths.Add(path); + possiblePaths.AddRange(getSavesFromFolder(path, false)); // SaveDataFiler if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "filer", "UserSaveData"))) From 73f3fef4ca65f778f1590108482660cc7ba183f4 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sun, 7 Aug 2016 22:46:07 -0700 Subject: [PATCH 175/184] Add C-Gear skin i/o (WIP) Currently only works on saves that already have c-gear skin data, more research to follow at a later date to set the necessary info for enabling c-gear skins. Allows for importing images, although a memory spike exists (due to rotated images not being collected until after import) --- MainWindow/Main.Designer.cs | 295 ++++++++------- MainWindow/Main.cs | 5 + MainWindow/Main.resx | 3 + PKHeX.csproj | 10 + Saves/SAV5.cs | 9 +- Subforms/Save Editors/Gen5/CGearBackground.cs | 356 ++++++++++++++++++ .../Gen5/SAV_CGearSkin.Designer.cs | 156 ++++++++ Subforms/Save Editors/Gen5/SAV_CGearSkin.cs | 134 +++++++ Subforms/Save Editors/Gen5/SAV_CGearSkin.resx | 216 +++++++++++ 9 files changed, 1041 insertions(+), 143 deletions(-) create mode 100644 Subforms/Save Editors/Gen5/CGearBackground.cs create mode 100644 Subforms/Save Editors/Gen5/SAV_CGearSkin.Designer.cs create mode 100644 Subforms/Save Editors/Gen5/SAV_CGearSkin.cs create mode 100644 Subforms/Save Editors/Gen5/SAV_CGearSkin.resx diff --git a/MainWindow/Main.Designer.cs b/MainWindow/Main.Designer.cs index 91bf1f5d5..4c8015464 100644 --- a/MainWindow/Main.Designer.cs +++ b/MainWindow/Main.Designer.cs @@ -356,6 +356,7 @@ public void InitializeComponent() 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(); @@ -3072,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx30.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx30.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // mnuVSD // @@ -3120,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx29.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx29.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx28 // @@ -3138,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx28.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx28.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx27 // @@ -3156,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx27.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx27.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx26 // @@ -3174,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx26.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx26.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx25 // @@ -3192,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx25.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx25.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx24 // @@ -3210,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx24.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx24.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx23 // @@ -3228,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx23.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx23.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx22 // @@ -3246,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx22.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx22.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx21 // @@ -3264,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx21.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx21.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx20 // @@ -3282,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx20.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx20.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx19 // @@ -3300,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx19.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx19.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx18 // @@ -3318,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx18.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx18.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx17 // @@ -3336,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx17.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx17.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx16 // @@ -3354,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx16.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx16.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx15 // @@ -3372,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx15.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx15.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx14 // @@ -3390,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx14.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx14.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx13 // @@ -3408,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx13.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx13.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx12 // @@ -3426,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx12.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx12.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx11 // @@ -3444,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx11.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx11.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx10 // @@ -3462,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx10.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx10.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx9 // @@ -3480,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx9.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx9.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx8 // @@ -3498,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx8.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx8.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx7 // @@ -3516,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx7.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx7.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx6 // @@ -3534,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx5 // @@ -3552,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx4 // @@ -3570,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx3 // @@ -3588,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx2 // @@ -3606,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bpkx1 // @@ -3624,11 +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.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // B_BoxRight // @@ -3744,11 +3745,11 @@ public void InitializeComponent() this.bbpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx1.TabIndex = 8; this.bbpkx1.TabStop = false; - this.bbpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bbpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // mnuV // @@ -3773,11 +3774,11 @@ public void InitializeComponent() this.bbpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx2.TabIndex = 9; this.bbpkx2.TabStop = false; - this.bbpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bbpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bbpkx3 // @@ -3788,11 +3789,11 @@ public void InitializeComponent() this.bbpkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx3.TabIndex = 10; this.bbpkx3.TabStop = false; - this.bbpkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bbpkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bbpkx4 // @@ -3803,11 +3804,11 @@ public void InitializeComponent() this.bbpkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx4.TabIndex = 11; this.bbpkx4.TabStop = false; - this.bbpkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bbpkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bbpkx5 // @@ -3818,11 +3819,11 @@ public void InitializeComponent() this.bbpkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx5.TabIndex = 12; this.bbpkx5.TabStop = false; - this.bbpkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bbpkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // bbpkx6 // @@ -3833,11 +3834,11 @@ public void InitializeComponent() this.bbpkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.bbpkx6.TabIndex = 13; this.bbpkx6.TabStop = false; - this.bbpkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.bbpkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.bbpkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // L_ReadOnlyPBB // @@ -3893,11 +3894,11 @@ public void InitializeComponent() this.ppkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx1.TabIndex = 2; this.ppkx1.TabStop = false; - this.ppkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.ppkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx2 // @@ -3908,11 +3909,11 @@ public void InitializeComponent() this.ppkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx2.TabIndex = 3; this.ppkx2.TabStop = false; - this.ppkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.ppkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx3 // @@ -3923,11 +3924,11 @@ public void InitializeComponent() this.ppkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx3.TabIndex = 4; this.ppkx3.TabStop = false; - this.ppkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.ppkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx4 // @@ -3938,11 +3939,11 @@ public void InitializeComponent() this.ppkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx4.TabIndex = 5; this.ppkx4.TabStop = false; - this.ppkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.ppkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx5 // @@ -3953,11 +3954,11 @@ public void InitializeComponent() this.ppkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx5.TabIndex = 6; this.ppkx5.TabStop = false; - this.ppkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.ppkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // ppkx6 // @@ -3968,11 +3969,11 @@ public void InitializeComponent() this.ppkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.ppkx6.TabIndex = 7; this.ppkx6.TabStop = false; - this.ppkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.ppkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.ppkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // Tab_Other // @@ -4090,11 +4091,11 @@ public void InitializeComponent() this.dcpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.dcpkx2.TabIndex = 11; this.dcpkx2.TabStop = false; - this.dcpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.dcpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.dcpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // dcpkx1 // @@ -4106,11 +4107,11 @@ public void InitializeComponent() this.dcpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.dcpkx1.TabIndex = 10; this.dcpkx1.TabStop = false; - this.dcpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.dcpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.dcpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // DayCare_HasEgg // @@ -4143,11 +4144,11 @@ public void InitializeComponent() this.gtspkx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.gtspkx.TabIndex = 23; this.gtspkx.TabStop = false; - this.gtspkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.gtspkx.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.gtspkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // GB_Fused // @@ -4169,11 +4170,11 @@ public void InitializeComponent() this.fusedpkx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.fusedpkx.TabIndex = 24; this.fusedpkx.TabStop = false; - this.fusedpkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.fusedpkx.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.fusedpkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // L_ReadOnlyOther // @@ -4207,11 +4208,11 @@ public void InitializeComponent() this.subepkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.subepkx1.TabIndex = 18; this.subepkx1.TabStop = false; - this.subepkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); + 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.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick); - this.subepkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag); + this.subepkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp); // // subepkx2 // @@ -4377,6 +4378,7 @@ public void InitializeComponent() 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); @@ -4535,6 +4537,16 @@ public void InitializeComponent() 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; @@ -5071,6 +5083,7 @@ public void InitializeComponent() 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/MainWindow/Main.cs b/MainWindow/Main.cs index d9f6a1c08..ad0aaac30 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -786,6 +786,7 @@ private void openSAV(byte[] input, string path) 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]; @@ -3235,6 +3236,10 @@ 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; diff --git a/MainWindow/Main.resx b/MainWindow/Main.resx index 4332f0e62..4916aa9d4 100644 --- a/MainWindow/Main.resx +++ b/MainWindow/Main.resx @@ -1306,6 +1306,9 @@ True + + True + True diff --git a/PKHeX.csproj b/PKHeX.csproj index 9e8f5b4d6..7fec0743d 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -173,6 +173,13 @@ + + + Form + + + SAV_CGearSkin.cs + Form @@ -324,6 +331,9 @@ MemoryAmie.cs + + SAV_CGearSkin.cs + SAV_Link6.cs diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index d4dc3b12b..9d2b68d0d 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -42,6 +42,8 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) Daycare = 0x20E00; PokeDex = 0x21600; PokeDexLanguageFlags = PokeDex + 0x320; + CGearInfoOffset = 0x1C000; + CGearDataOffset = 0x52000; // Inventory offsets are the same for each game. OFS_PouchHeldItem = 0x18400; // 0x188D7 @@ -65,6 +67,8 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) 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 @@ -152,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), // ??? @@ -229,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) @@ -353,6 +357,7 @@ public override string ChecksumInfo private const int wcSeed = 0x1D290; + public readonly int CGearInfoOffset, CGearDataOffset; private readonly int Trainer2, AdventureInfo, PokeDexLanguageFlags; public override bool HasBoxWallpapers => false; public override bool HasPokeDex => false; diff --git a/Subforms/Save Editors/Gen5/CGearBackground.cs b/Subforms/Save Editors/Gen5/CGearBackground.cs new file mode 100644 index 000000000..cdcbdf7ba --- /dev/null +++ b/Subforms/Save Editors/Gen5/CGearBackground.cs @@ -0,0 +1,356 @@ +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(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(); + int shiftVal = B2W2 ? 0xA000 : 0xA0A0; + for (int i = 0x2000; i < 0x2600; i += 2) + { + int val = BitConverter.ToUInt16(psk, i); + int index = ValToIndex(val, shiftVal); + 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; + // 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(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].PixelData); + 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]); + + 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 byte[] PixelData; + + 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); + } + + PixelData = getTileRAW(img); + } + 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; + } + private static byte[] getTileRAW(Bitmap tile) + { + BitmapData bData = tile.LockBits(new Rectangle(0, 0, tile.Width, tile.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); + byte[] data = new byte[bData.Stride * bData.Height]; + Marshal.Copy(bData.Scan0, data, 0, data.Length); + tile.UnlockBits(bData); + return data; + } + + public int getRotationValue(byte[] data) + { + // Check all rotation types + if (PixelData.SequenceEqual(data)) + return 0; + + if (getTileRAW(Rotate(4)).SequenceEqual(data)) + return 4; + if (getTileRAW(Rotate(8)).SequenceEqual(data)) + return 8; + if (getTileRAW(Rotate(12)).SequenceEqual(data)) + return 12; + return -1; + } + } + 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, int shiftVal) + { + int index = val - shiftVal; + return index - 15*(index/32); + } + + private static byte convert8to5(int colorval) + { + byte i = 0; + while (colorval > Convert5To8[i]) i++; + return i; + } + private static Color getRGB555(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(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/Subforms/Save Editors/Gen5/SAV_CGearSkin.resx b/Subforms/Save Editors/Gen5/SAV_CGearSkin.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/Subforms/Save Editors/Gen5/SAV_CGearSkin.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 From 801300adf2725d8f45c0621d56a4be12223f645b Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 8 Aug 2016 00:40:54 -0700 Subject: [PATCH 176/184] Fix image import Fix not setting tile choice for new tile, fix tile speed by comparing colors instead (manual rotation no fun) --- Subforms/Save Editors/Gen5/CGearBackground.cs | 52 +++++++++---------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/Subforms/Save Editors/Gen5/CGearBackground.cs b/Subforms/Save Editors/Gen5/CGearBackground.cs index cdcbdf7ba..fffd17cd7 100644 --- a/Subforms/Save Editors/Gen5/CGearBackground.cs +++ b/Subforms/Save Editors/Gen5/CGearBackground.cs @@ -139,6 +139,7 @@ public void SetImage(Bitmap img) 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) @@ -177,7 +178,7 @@ public void SetImage(Bitmap img) { for (int j = 0; j < tilelist.Count; j++) { - int rotVal = tiles[i].getRotationValue(tilelist[j].PixelData); + int rotVal = tiles[i].getRotationValue(tilelist[j].ColorChoices); if (rotVal <= -1) continue; tm.TileChoices[i] = j; tm.Rotations[i] = rotVal; @@ -186,6 +187,7 @@ public void SetImage(Bitmap img) 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:; } @@ -203,7 +205,6 @@ private class Tile private const int TileHeight = 8; public readonly int[] ColorChoices; private Bitmap img; - public byte[] PixelData; public Tile(byte[] data = null) { @@ -229,8 +230,6 @@ public void setTile(Color[] Palette) var choice = Palette[index]; img.SetPixel(x, y, choice); } - - PixelData = getTileRAW(img); } public byte[] Write() { @@ -254,28 +253,32 @@ public Bitmap Rotate(int rotFlip) tile.RotateFlip(RotateFlipType.RotateNoneFlipY); return tile; } - private static byte[] getTileRAW(Bitmap tile) - { - BitmapData bData = tile.LockBits(new Rectangle(0, 0, tile.Width, tile.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); - byte[] data = new byte[bData.Stride * bData.Height]; - Marshal.Copy(bData.Scan0, data, 0, data.Length); - tile.UnlockBits(bData); - return data; - } - public int getRotationValue(byte[] data) + public int getRotationValue(int[] tileColors) { // Check all rotation types - if (PixelData.SequenceEqual(data)) + if (ColorChoices.SequenceEqual(tileColors)) return 0; - if (getTileRAW(Rotate(4)).SequenceEqual(data)) - return 4; - if (getTileRAW(Rotate(8)).SequenceEqual(data)) - return 8; - if (getTileRAW(Rotate(12)).SequenceEqual(data)) - return 12; - return -1; + // 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 @@ -332,13 +335,6 @@ private static Color getRGB555(uint val) int B = (int)(val >> 16 >> 3) & 0x1F; return Color.FromArgb(0xFF, Convert5To8[R], Convert5To8[G], Convert5To8[B]); } - private static Color getRGB555(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; From 2ce5e442b1651e42b0dfe2af6e71208447e451bd Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 8 Aug 2016 00:45:30 -0700 Subject: [PATCH 177/184] Fix colors disappearing Thanks SciresM! --- Subforms/Save Editors/Gen5/CGearBackground.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Subforms/Save Editors/Gen5/CGearBackground.cs b/Subforms/Save Editors/Gen5/CGearBackground.cs index fffd17cd7..33f5a816d 100644 --- a/Subforms/Save Editors/Gen5/CGearBackground.cs +++ b/Subforms/Save Editors/Gen5/CGearBackground.cs @@ -51,7 +51,7 @@ public CGearBackground(byte[] data) ColorPalette = new Color[0x10]; for (int i = 0; i < 0x10; i++) - ColorPalette[i] = getRGB555(BitConverter.ToUInt16(ColorData, i * 2)); + ColorPalette[i] = getRGB555_16(BitConverter.ToUInt16(ColorData, i * 2)); Tiles = new Tile[0xFF]; for (int i = 0; i < 0xFF; i++) @@ -145,7 +145,7 @@ public void SetImage(Bitmap img) for (int i = 0; i < data.Length; i += bpp) { uint val = BitConverter.ToUInt32(data, i); - colors[i/bpp] = getRGB555(val); + colors[i/bpp] = getRGB555_32(val); } Color[] Palette = colors.Distinct().ToArray(); @@ -328,13 +328,20 @@ private static byte convert8to5(int colorval) while (colorval > Convert5To8[i]) i++; return i; } - private static Color getRGB555(uint val) + 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; From c105d69ccef38a75e6f38d11d2face1037c6e96a Mon Sep 17 00:00:00 2001 From: evandixon Date: Mon, 8 Aug 2016 14:05:15 -0500 Subject: [PATCH 178/184] Changed resource type of certain text files to None for consistency --- PKHeX.csproj | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/PKHeX.csproj b/PKHeX.csproj index b01803dcf..5582f62c3 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -708,33 +708,33 @@ - + - + - + - + - + - + - + - + @@ -977,7 +977,7 @@ - + From 50efec724e527eb69fd30887f7de124477b86190 Mon Sep 17 00:00:00 2001 From: evandixon Date: Mon, 8 Aug 2016 15:11:02 -0500 Subject: [PATCH 179/184] Added helper functions to simplify getting string lists --- Legality/Checks.cs | 2 +- MainWindow/Main.cs | 6 ++-- PKM/PKX.cs | 18 ++++++------ PKM/ShowdownSet.cs | 6 ++-- Subforms/Save Editors/Gen6/SAV_HallOfFame.cs | 2 +- Util/DataUtil.cs | 31 ++++++++++++++++++++ 6 files changed, 48 insertions(+), 17 deletions(-) diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 69d08b97a..5d9878e22 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -1054,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/MainWindow/Main.cs b/MainWindow/Main.cs index ad0aaac30..a644a45a6 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -921,11 +921,11 @@ private void InitializeStrings() 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); diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 7ba8fffa6..5a45fdbc0 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -159,15 +159,15 @@ internal static uint LCRNG(ref uint seed) internal 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) diff --git a/PKM/ShowdownSet.cs b/PKM/ShowdownSet.cs index 21f69fa25..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 diff --git a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index a8fc4534a..6dcf088a8 100644 --- a/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -344,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; diff --git a/Util/DataUtil.cs b/Util/DataUtil.cs index d0788f954..86ffbf8cb 100644 --- a/Util/DataUtil.cs +++ b/Util/DataUtil.cs @@ -6,6 +6,37 @@ 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. From df313c05897e97b4f39d4e0c2c5f2b4ca6b58f3a Mon Sep 17 00:00:00 2001 From: evandixon Date: Mon, 8 Aug 2016 15:47:56 -0500 Subject: [PATCH 180/184] Made more things public --- PKM/PKMConverter.cs | 9 +++- PKM/PKX.cs | 108 ++++++++++++++++++++++---------------------- 2 files changed, 61 insertions(+), 56 deletions(-) diff --git a/PKM/PKMConverter.cs b/PKM/PKMConverter.cs index 5c1bdebaf..03e506a58 100644 --- a/PKM/PKMConverter.cs +++ b/PKM/PKMConverter.cs @@ -2,7 +2,7 @@ namespace PKHeX { - internal static class PKMConverter + public static class PKMConverter { internal static int Country = 49; internal static int Region = 7; @@ -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; diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 5a45fdbc0..3a683088e 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,7 +25,7 @@ internal static class PKX internal const int SIZE_6STORED = 0xE8; internal const int SIZE_6BLOCK = 56; - internal static bool getIsPKM(long len) + 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); } @@ -36,14 +36,14 @@ internal static bool getIsPKM(long len) // 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; @@ -156,8 +156,8 @@ 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.getSpeciesList("ja"), // none Util.getSpeciesList("ja"), // 1 @@ -170,20 +170,20 @@ internal static uint LCRNG(ref uint seed) 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 readonly PersonalTable Personal = PersonalTable.AO; + public static readonly PersonalTable Personal = PersonalTable.AO; // Stat Fetching - internal static byte[] getRandomEVs() + public static byte[] getRandomEVs() { byte[] evs = new byte[6]; do { @@ -197,7 +197,7 @@ internal static byte[] getRandomEVs() Util.Shuffle(evs); return evs; } - 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 @@ -205,13 +205,13 @@ internal static int getLevel(int species, uint exp) if (tl == 100) return 100; return --tl; } - 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 int getGender(string s) + public static int getGender(string s) { if (s == null) return -1; @@ -222,7 +222,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); @@ -275,7 +275,7 @@ internal static string[] getCountryRegionText(int country, int region, string la return data; } - internal static string getLocation(PKM pk, bool eggmet) + public static string getLocation(PKM pk, bool eggmet) { int locval = eggmet ? pk.Egg_Location : pk.Met_Location; if (pk.Format == 3) @@ -302,7 +302,7 @@ internal static string getLocation(PKM pk, bool eggmet) } return null; // Shouldn't happen. } - internal static string[] getQRText(PKM pkm) + public static string[] getQRText(PKM pkm) { string[] response = new string[3]; // Summarize @@ -332,7 +332,7 @@ internal static string[] getQRText(PKM pkm) } // 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}, @@ -340,11 +340,11 @@ internal static string[] getQRText(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 @@ -359,7 +359,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(); @@ -383,7 +383,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); @@ -410,7 +410,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 @@ -419,7 +419,7 @@ internal static ushort getCHK(byte[] data) return chk; } - internal static uint getRandomPID(int species, int cg, int origin, int nature, int form, uint OLDPID) + 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; @@ -455,9 +455,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, int generation = -1) + 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"); @@ -507,7 +507,7 @@ internal static Image getSprite(int species, int form, int gender, int item, boo } 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, pkm.Format); } @@ -524,7 +524,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); } @@ -541,9 +541,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[] @@ -866,13 +866,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 @@ -891,7 +891,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); @@ -899,7 +899,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 @@ -915,7 +915,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(); @@ -941,7 +941,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; @@ -968,26 +968,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) @@ -1001,7 +1001,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++) @@ -1017,16 +1017,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 @@ -1035,7 +1035,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++) @@ -1051,19 +1051,19 @@ internal static byte[] setG3Str(string str, bool jp) 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) @@ -1512,7 +1512,7 @@ internal static int getGender(int species, uint PID) }; #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 }, @@ -1523,7 +1523,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; @@ -1537,7 +1537,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 @@ -1552,7 +1552,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; @@ -1568,7 +1568,7 @@ internal static byte[] encryptArray3(byte[] pkm) return ekm; } - internal static ushort getG4Item(ushort g3val) + public static ushort getG4Item(ushort g3val) { ushort[] arr = { From fc7f7d788c947bb529562ea2bc29d784c4087a6d Mon Sep 17 00:00:00 2001 From: evandixon Date: Mon, 8 Aug 2016 16:44:05 -0500 Subject: [PATCH 181/184] Added XML comments where appropriate --- PKM/PKMConverter.cs | 9 ++++++++- PKM/PKX.cs | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/PKM/PKMConverter.cs b/PKM/PKMConverter.cs index 03e506a58..be573542a 100644 --- a/PKM/PKMConverter.cs +++ b/PKM/PKMConverter.cs @@ -58,7 +58,14 @@ public static int getPKMDataFormat(byte[] data) } 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)) diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 3a683088e..8aebbcbae 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -25,6 +25,11 @@ public static class PKX internal const int SIZE_6STORED = 0xE8; internal const int SIZE_6BLOCK = 56; + /// + /// 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); From c757f59377a9b308caeb5b69d020fbeab5de9cb3 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 8 Aug 2016 18:32:13 -0700 Subject: [PATCH 182/184] Fix inverted setShinyPID copying EC Thanks JSS! --- MainWindow/Main.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index ad0aaac30..dc295f7e9 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -2105,7 +2105,7 @@ private void updateShinyPID(object sender, EventArgs e) pkm.setShinyPID(); TB_PID.Text = pkm.PID.ToString("X8"); - if (pkm.Format >= 6) + if (pkm.Format < 6) TB_EC.Text = TB_PID.Text; getQuickFiller(dragout); From 724da7ff0fac381f1724125e6492a9cfba107fea Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Mon, 8 Aug 2016 18:42:42 -0700 Subject: [PATCH 183/184] Improve PID/EC rerolling automation --- MainWindow/Main.cs | 11 ++++++----- PKM/PKM.cs | 11 +++++++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 0a5a91864..cdd1fdf45 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1628,13 +1628,13 @@ private void updateRandomPID(object sender, EventArgs e) pkm.setPIDGender(pkm.Gender); TB_PID.Text = pkm.PID.ToString("X8"); getQuickFiller(dragout); - if (pkm.Format >= 6) - TB_EC.Text = pkm.EncryptionConstant.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."); @@ -2101,11 +2101,12 @@ private void updateShinyPID(object sender, EventArgs e) pkm.Nature = Util.getIndex(CB_Nature); pkm.Gender = PKX.getGender(Label_Gender.Text); pkm.AltForm = CB_Form.SelectedIndex; + pkm.Version = Util.getIndex(CB_GameOrigin); pkm.setShinyPID(); TB_PID.Text = pkm.PID.ToString("X8"); - if (pkm.Format < 6) + if (pkm.GenNumber < 6 && TB_EC.Visible) TB_EC.Text = TB_PID.Text; getQuickFiller(dragout); diff --git a/PKM/PKM.cs b/PKM/PKM.cs index 2b5f121bf..1d3134d82 100644 --- a/PKM/PKM.cs +++ b/PKM/PKM.cs @@ -153,6 +153,17 @@ public byte[] Write() 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(); From 5fc03ef0a7659387f25a8358f6c31e849b56c7e8 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Tue, 9 Aug 2016 02:27:14 -0700 Subject: [PATCH 184/184] Fix c-gear .psk decoding --- Subforms/Save Editors/Gen5/CGearBackground.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Subforms/Save Editors/Gen5/CGearBackground.cs b/Subforms/Save Editors/Gen5/CGearBackground.cs index 33f5a816d..6605e50d9 100644 --- a/Subforms/Save Editors/Gen5/CGearBackground.cs +++ b/Subforms/Save Editors/Gen5/CGearBackground.cs @@ -96,11 +96,10 @@ public static byte[] CGBtoPSK(byte[] cgb, bool B2W2) public static byte[] PSKtoCGB(byte[] psk, bool B2W2) { byte[] cgb = (byte[])psk.Clone(); - int shiftVal = B2W2 ? 0xA000 : 0xA0A0; for (int i = 0x2000; i < 0x2600; i += 2) { int val = BitConverter.ToUInt16(psk, i); - int index = ValToIndex(val, shiftVal); + int index = ValToIndex(val); BitConverter.GetBytes((ushort)index).CopyTo(cgb, i); } return cgb; @@ -316,10 +315,11 @@ private static int IndexToVal(int index, int shiftVal) int val = index + shiftVal; return val + 15*(index/17); } - private static int ValToIndex(int val, int shiftVal) + private static int ValToIndex(int val) { - int index = val - shiftVal; - return index - 15*(index/32); + 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)