Beispiel #1
0
        private PKM preparePK1()
        {
            PK1 pk1 = pkm as PK1;

            if (pk1 == null)
            {
                return(null);
            }

            pk1.Species = Util.getIndex(CB_Species);
            pk1.TID     = Util.ToInt32(TB_TID.Text);
            pk1.EXP     = Util.ToUInt32(TB_EXP.Text);

            pk1.EV_HP  = Util.ToInt32(TB_HPEV.Text);
            pk1.EV_ATK = Util.ToInt32(TB_ATKEV.Text);
            pk1.EV_DEF = Util.ToInt32(TB_DEFEV.Text);
            pk1.EV_SPE = Util.ToInt32(TB_SPEEV.Text);
            pk1.EV_SPC = Util.ToInt32(TB_SPAEV.Text);

            if (CHK_Nicknamed.Checked)
            {
                pk1.Nickname = TB_Nickname.Text;
            }
            else
            {
                pk1.setNotNicknamed();
            }
            pk1.Move1       = Util.getIndex(CB_Move1);
            pk1.Move2       = Util.getIndex(CB_Move2);
            pk1.Move3       = Util.getIndex(CB_Move3);
            pk1.Move4       = Util.getIndex(CB_Move4);
            pk1.Move1_PP    = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0;
            pk1.Move2_PP    = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0;
            pk1.Move3_PP    = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0;
            pk1.Move4_PP    = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0;
            pk1.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0;
            pk1.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0;
            pk1.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0;
            pk1.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0;

            pk1.IV_HP  = Util.ToInt32(TB_HPIV.Text);
            pk1.IV_ATK = Util.ToInt32(TB_ATKIV.Text);
            pk1.IV_DEF = Util.ToInt32(TB_DEFIV.Text);
            pk1.IV_SPE = Util.ToInt32(TB_SPEIV.Text);
            pk1.IV_SPA = Util.ToInt32(TB_SPAIV.Text);

            pk1.OT_Name = TB_OT.Text;

            // Toss in Party Stats
            Array.Resize(ref pk1.Data, pk1.SIZE_PARTY);
            pk1.Stat_Level     = Util.ToInt32(TB_Level.Text);
            pk1.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text);
            pk1.Stat_HPMax     = Util.ToInt32(Stat_HP.Text);
            pk1.Stat_ATK       = Util.ToInt32(Stat_ATK.Text);
            pk1.Stat_DEF       = Util.ToInt32(Stat_DEF.Text);
            pk1.Stat_SPE       = Util.ToInt32(Stat_SPE.Text);
            pk1.Stat_SPA       = Util.ToInt32(Stat_SPA.Text);
            pk1.Stat_SPD       = Util.ToInt32(Stat_SPD.Text);

            if (HaX)
            {
                pk1.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue);
            }

            // Fix Moves if a slot is empty
            pk1.FixMoves();

            pk1.RefreshChecksum();
            return(pk1);
        }
Beispiel #2
0
        private void changeMemory(object sender, EventArgs e)
        {
            ComboBox m = (ComboBox)sender;

            if (m == CB_CTMemory || m == CB_OTMemory)
            {
                int memory = Util.getIndex(m);
                switch (memory) // Memory Case Switchtable
                {
                case 0: getMemoryArguments("NONE", m); break;

                case 1: getMemoryArguments("GENLOC", m); break;

                case 2: getMemoryArguments("GENLOC", m); break;

                case 3: getMemoryArguments("GENLOC", m); break;

                case 4: getMemoryArguments("GENLOC", m); break;

                case 5: getMemoryArguments("ITEM", m); break;

                case 6: getMemoryArguments("LOCATION", m); break;

                case 7: getMemoryArguments("PKM", m); break;

                case 8: getMemoryArguments("NONE", m); break;

                case 9: getMemoryArguments("PKM", m); break;

                case 10: getMemoryArguments("NONE", m); break;

                case 11: getMemoryArguments("NONE", m); break;

                case 12: getMemoryArguments("MOVE", m); break;

                case 13: getMemoryArguments("PKM", m); break;

                case 14: getMemoryArguments("PKM", m); break;

                case 15: getMemoryArguments("ITEM", m); break;

                case 16: getMemoryArguments("MOVE", m); break;

                case 17: getMemoryArguments("PKM", m); break;

                case 18: getMemoryArguments("PKM", m); break;

                case 19: getMemoryArguments("GENLOC", m); break;

                case 20: getMemoryArguments("NONE", m); break;

                case 21: getMemoryArguments("PKM", m); break;

                case 22: getMemoryArguments("NONE", m); break;

                case 23: getMemoryArguments("NONE", m); break;

                case 24: getMemoryArguments("GENLOC", m); break;

                case 25: getMemoryArguments("PKM", m); break;

                case 26: getMemoryArguments("ITEM", m); break;

                case 27: getMemoryArguments("NONE", m); break;

                case 28: getMemoryArguments("NONE", m); break;

                case 29: getMemoryArguments("PKM", m); break;

                case 30: getMemoryArguments("NONE", m); break;

                case 31: getMemoryArguments("GENLOC", m); break;

                case 32: getMemoryArguments("GENLOC", m); break;

                case 33: getMemoryArguments("GENLOC", m); break;

                case 34: getMemoryArguments("ITEM", m); break;

                case 35: getMemoryArguments("GENLOC", m); break;

                case 36: getMemoryArguments("GENLOC", m); break;

                case 37: getMemoryArguments("GENLOC", m); break;

                case 38: getMemoryArguments("GENLOC", m); break;

                case 39: getMemoryArguments("GENLOC", m); break;

                case 40: getMemoryArguments("ITEM", m); break;

                case 41: getMemoryArguments("NONE", m); break;

                case 42: getMemoryArguments("GENLOC", m); break;

                case 43: getMemoryArguments("NONE", m); break;

                case 44: getMemoryArguments("PKM", m); break;

                case 45: getMemoryArguments("PKM", m); break;

                case 46: getMemoryArguments("NONE", m); break;

                case 47: getMemoryArguments("NONE", m); break;

                case 48: getMemoryArguments("MOVE", m); break;

                case 49: getMemoryArguments("MOVE", m); break;

                case 50: getMemoryArguments("PKM", m); break;

                case 51: getMemoryArguments("ITEM", m); break;

                case 52: getMemoryArguments("GENLOC", m); break;

                case 53: getMemoryArguments("NONE", m); break;

                case 54: getMemoryArguments("NONE", m); break;

                case 55: getMemoryArguments("NONE", m); break;

                case 56: getMemoryArguments("NONE", m); break;

                case 57: getMemoryArguments("NONE", m); break;

                case 58: getMemoryArguments("NONE", m); break;

                case 59: getMemoryArguments("GENLOC", m); break;

                case 60: getMemoryArguments("PKM", m); break;

                case 61: getMemoryArguments("NONE", m); break;

                case 62: getMemoryArguments("NONE", m); break;

                case 63: getMemoryArguments("NONE", m); break;

                case 64: getMemoryArguments("NONE", m); break;

                default: getMemoryArguments("NONE", m); break;
                }
            }

            if (!init)
            {
                return;
            }
            RTB_OT.Text = getMemoryString(CB_OTMemory, CB_OTVar, CB_OTQual, CB_OTFeel, m_parent.TB_OT.Text);
            RTB_CT.Text = getMemoryString(CB_CTMemory, CB_CTVar, CB_CTQual, CB_CTFeel, m_parent.TB_OTt2.Text);
        }
Beispiel #3
0
        // Load/Save Actions
        private void loadFields()
        {
            // Load the region/country values.
            v1cb(CB_Country0, 0x95); v1cb(CB_Region0, 0x94);
            v1cb(CB_Country1, 0x97); v1cb(CB_Region1, 0x96);
            v1cb(CB_Country2, 0x99); v1cb(CB_Region2, 0x98);
            v1cb(CB_Country3, 0x9B); v1cb(CB_Region3, 0x9A);
            v1cb(CB_Country4, 0x9D); v1cb(CB_Region4, 0x9C);

            // Load the Fullness, and Enjoyment
            v1s(M_Fullness, 0xAE); v1s(M_Enjoyment, 0xAF);

            // Load the CT Memories
            v1s(M_CT_Friendship, 0xA2); v1s(M_CT_Affection, 0xA3);
            CB_CTQual.SelectedIndex = Math.Max(0, h[0xA4] - 1);
            v1cb(CB_CTMemory, 0xA5); v2cb(CB_CTVar, 0xA8); i1cb(CB_CTFeel, 0xA6);

            // Load the OT Memories
            v1s(M_OT_Friendship, 0xCA); v1s(M_OT_Affection, 0xCB);
            CB_OTQual.SelectedIndex = Math.Max(0, h[0xCC] - 1);
            v1cb(CB_OTMemory, 0xCD); v2cb(CB_OTVar, 0xCE); i1cb(CB_OTFeel, 0xD0);

            CB_Handler.Items.Clear();
            CB_Handler.Items.AddRange(new object[] { m_parent.TB_OT.Text + " (" + ot + ")" });

            if (Util.TrimFromZero(m_parent.TB_OTt2.Text) != "")
            {
                CB_Handler.Items.AddRange(new object[] { m_parent.TB_OTt2.Text });
            }
            else
            {
                m_parent.buff[0x93] = 0;
            }

            tabControl1.SelectedIndex = CB_Handler.SelectedIndex = m_parent.buff[0x93];

            if (m_parent.CHK_IsEgg.Checked)
            {
                L_OT_Friendship.Text = m_parent.Label_HatchCounter.Text;
                GB_M_OT.Enabled      = GB_M_CT.Enabled = GB_Residence.Enabled = false;

                BTN_Save.Enabled   = M_Fullness.Enabled = M_Enjoyment.Enabled = false;
                L_Fullness.Enabled = L_Enjoyment.Enabled = false;

                GB_M_OT.Text = "N/A: " + Form1.eggname;
                GB_M_CT.Text = "N/A: " + Form1.eggname;
            }
            else
            {
                L_OT_Friendship.Text = m_parent.Label_Friendship.Text;
                GB_M_OT.Enabled      = GB_M_CT.Enabled = true;
                GB_Residence.Enabled = true;

                BTN_Save.Enabled   = M_Fullness.Enabled = M_Enjoyment.Enabled = true;
                L_Fullness.Enabled = L_Enjoyment.Enabled = true;

                GB_M_OT.Text = String.Format(withOT + " (" + ot + ")", m_parent.TB_OT.Text);
                GB_M_CT.Text = String.Format(withOT, m_parent.TB_OTt2.Text);
            }

            GB_M_CT.Enabled      = true;
            GB_Residence.Enabled = true;

            if ((!m_parent.CHK_IsEgg.Checked))
            {
                bool enable;
                int  game = Util.getIndex(m_parent.CB_GameOrigin);
                if ((game < 24) && (game != 0))
                {
                    // Banked Mon
                    GB_M_CT.Text = withOT + " " + m_parent.TB_OTt2.Text;
                    GB_M_OT.Text = past + " " + ot + ": " + m_parent.TB_OT.Text;
                    enable       = false;
                }
                else
                {
                    enable       = true;
                    GB_M_OT.Text = withOT + " " + m_parent.TB_OT.Text + " (" + ot + ")";
                    GB_M_CT.Text = withOT + m_parent.TB_OTt2.Text;
                    if ((m_parent.TB_OTt2.Text == ""))
                    {
                        GB_M_CT.Enabled = GB_Residence.Enabled = false;
                        GB_M_CT.Text    = notleft + " " + ot + " - " + disabled;
                    }
                    else
                    {
                        GB_M_CT.Text = withOT + " " + m_parent.TB_OTt2.Text;
                    }
                }
                RTB_OT.Visible = CB_OTQual.Enabled = CB_OTMemory.Enabled = CB_OTFeel.Enabled = CB_OTVar.Enabled = M_OT_Affection.Enabled = enable;
            }
            init = true;

            // Manually load the Memory Parse
            RTB_CT.Text = getMemoryString(CB_CTMemory, CB_CTVar, CB_CTQual, CB_CTFeel, m_parent.TB_OTt2.Text);
            RTB_OT.Text = getMemoryString(CB_OTMemory, CB_OTVar, CB_OTQual, CB_OTFeel, m_parent.TB_OT.Text);
        }
Beispiel #4
0
 private void CB_Multi_SelectedIndexChanged(object sender, EventArgs e)
 {
     PB_Sprite.Image = (Image)Properties.Resources.ResourceManager.GetObject(Main.SAV.ORAS || Main.SAV.ORASDEMO ? "tr_" + Util.getIndex(CB_MultiplayerSprite).ToString("00") : "tr_00");
 }
Beispiel #5
0
        // View Updates
        private void B_Search_Click(object sender, EventArgs e)
        {
            // Populate Search Query Result
            IEnumerable <PK6> res = RawDB;

            // Primary Searchables
            int species = Util.getIndex(CB_Species);
            int ability = Util.getIndex(CB_Ability);
            int nature  = Util.getIndex(CB_Nature);
            int item    = Util.getIndex(CB_HeldItem);

            if (species != -1)
            {
                res = res.Where(pk => pk.Species == species);
            }
            if (ability != -1)
            {
                res = res.Where(pk => pk.Ability == ability);
            }
            if (nature != -1)
            {
                res = res.Where(pk => pk.Nature == nature);
            }
            if (item != -1)
            {
                res = res.Where(pk => pk.HeldItem == item);
            }

            // Secondary Searchables
            int move1 = Util.getIndex(CB_Move1);
            int move2 = Util.getIndex(CB_Move2);
            int move3 = Util.getIndex(CB_Move3);
            int move4 = Util.getIndex(CB_Move4);

            if (move1 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move1));
            }
            if (move2 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move2));
            }
            if (move3 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move3));
            }
            if (move4 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move4));
            }
            int vers = Util.getIndex(CB_GameOrigin);

            if (vers != -1)
            {
                res = res.Where(pk => pk.Version == vers);
            }
            int hptype = Util.getIndex(CB_HPType);

            if (hptype != -1)
            {
                res = res.Where(pk => pk.HPType == hptype);
            }
            if (CHK_Shiny.CheckState == CheckState.Checked)
            {
                res = res.Where(pk => pk.IsShiny);
            }
            if (CHK_Shiny.CheckState == CheckState.Unchecked)
            {
                res = res.Where(pk => !pk.IsShiny);
            }
            if (CHK_IsEgg.CheckState == CheckState.Checked)
            {
                res = res.Where(pk => pk.IsEgg);
            }
            if (CHK_IsEgg.CheckState == CheckState.Unchecked)
            {
                res = res.Where(pk => !pk.IsEgg);
            }
            if (CHK_IsEgg.CheckState == CheckState.Checked && MT_ESV.Text != "")
            {
                res = res.Where(pk => pk.PSV == Convert.ToInt16(MT_ESV.Text));
            }

            // Tertiary Searchables
            if (TB_Level.Text != "") // Level
            {
                int level = Convert.ToInt16(TB_Level.Text);
                if (level <= 100)
                {
                    switch (CB_Level.SelectedIndex)
                    {
                    case 0: break; // Any

                    case 1:        // <=
                        res = res.Where(pk => pk.Stat_Level <= level);
                        break;

                    case 2: // ==
                        res = res.Where(pk => pk.Stat_Level == level);
                        break;

                    case 3: // >=
                        res = res.Where(pk => pk.Stat_Level >= level);
                        break;
                    }
                }
            }
            switch (CB_IV.SelectedIndex)
            {
            case 0: break; // Do nothing

            case 1:        // <= 90
                res = res.Where(pk => pk.IVs.Sum() <= 90);
                break;

            case 2:     // 91-120
                res = res.Where(pk => pk.IVs.Sum() > 90 && pk.IVs.Sum() <= 120);
                break;

            case 3:     // 121-150
                res = res.Where(pk => pk.IVs.Sum() > 120 && pk.IVs.Sum() <= 150);
                break;

            case 4:     // 151-179
                res = res.Where(pk => pk.IVs.Sum() > 150 && pk.IVs.Sum() < 180);
                break;

            case 5:     // 180+
                res = res.Where(pk => pk.IVs.Sum() >= 180);
                break;

            case 6:     // == 186
                res = res.Where(pk => pk.IVs.Sum() == 186);
                break;
            }
            switch (CB_EVTrain.SelectedIndex)
            {
            case 0: break; // Do nothing

            case 1:        // None (0)
                res = res.Where(pk => pk.EVs.Sum() == 0);
                break;

            case 2:     // Some (127-0)
                res = res.Where(pk => pk.EVs.Sum() < 128);
                break;

            case 3:     // Half (128-507)
                res = res.Where(pk => pk.EVs.Sum() >= 128 && pk.EVs.Sum() < 508);
                break;

            case 4:     // Full (508+)
                res = res.Where(pk => pk.EVs.Sum() >= 508);
                break;
            }
            switch (CB_Generation.SelectedIndex)
            {
            case 0: break; // Do nothing

            case 1:        // Gen 6
                res = res.Where(pk => pk.Gen6);
                break;

            case 2:     // Gen 5
                res = res.Where(pk => pk.Gen5);
                break;

            case 3:     // Gen 4
                res = res.Where(pk => pk.Gen4);
                break;

            case 4:     // Gen 3
                res = res.Where(pk => pk.Gen3);
                break;
            }

            // Filter for Selected Source
            if (!Menu_SearchBoxes.Checked)
            {
                res = res.Where(pk => pk.Identifier.Contains("db\\"));
            }
            if (!Menu_SearchDatabase.Checked)
            {
                res = res.Where(pk => !pk.Identifier.Contains("db\\"));
            }

            slotSelected = -1; // reset the slot last viewed
            var results = res.ToArray();

            if (results.Length == 0)
            {
                if (!Menu_SearchBoxes.Checked && !Menu_SearchDatabase.Checked)
                {
                    Util.Alert("No data source to search!", "No results found!");
                }
                else
                {
                    Util.Alert("No results found!");
                }
            }
            setResults(new List <PK6>(results)); // updates Count Label as well.
            System.Media.SystemSounds.Asterisk.Play();
        }
Beispiel #6
0
        // View Updates
        private void B_Search_Click(object sender, EventArgs e)
        {
            // Populate Search Query Result
            IEnumerable <MysteryGift> res = RawDB;

            int format = MAXFORMAT + 1 - CB_Format.SelectedIndex;

            switch (CB_FormatComparator.SelectedIndex)
            {
            case 0: /* Do nothing */ break;

            case 1: res = res.Where(mg => mg.Format >= format); break;

            case 2: res = res.Where(mg => mg.Format == format); break;

            case 3: res = res.Where(mg => mg.Format <= format); break;
            }

            // Primary Searchables
            int species = Util.getIndex(CB_Species);
            int item    = Util.getIndex(CB_HeldItem);

            if (species != -1)
            {
                res = res.Where(pk => pk.Species == species);
            }
            if (item != -1)
            {
                res = res.Where(pk => pk.HeldItem == item);
            }

            // Secondary Searchables
            int move1 = Util.getIndex(CB_Move1);
            int move2 = Util.getIndex(CB_Move2);
            int move3 = Util.getIndex(CB_Move3);
            int move4 = Util.getIndex(CB_Move4);

            if (move1 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move1));
            }
            if (move2 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move2));
            }
            if (move3 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move3));
            }
            if (move4 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move4));
            }
            if (CHK_Shiny.CheckState == CheckState.Checked)
            {
                res = res.Where(pk => pk.IsShiny);
            }
            if (CHK_Shiny.CheckState == CheckState.Unchecked)
            {
                res = res.Where(pk => !pk.IsShiny);
            }
            if (CHK_IsEgg.CheckState == CheckState.Checked)
            {
                res = res.Where(pk => pk.IsEgg);
            }
            if (CHK_IsEgg.CheckState == CheckState.Unchecked)
            {
                res = res.Where(pk => !pk.IsEgg);
            }

            slotSelected = -1; // reset the slot last viewed

            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(gift => // Compare across all filters
                {
                    foreach (var cmd in filters)
                    {
                        if (!gift.GetType().HasPropertyAll(cmd.PropertyName))
                        {
                            return(false);
                        }
                        try { if (ReflectUtil.GetValueEquals(gift, 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)
            {
                Util.Alert("No results found!");
            }
            setResults(new List <MysteryGift>(results)); // updates Count Label as well.
            System.Media.SystemSounds.Asterisk.Play();
        }
Beispiel #7
0
        private void save()
        {
            SAV.Game   = (byte)(CB_Game.SelectedIndex + 0x18);
            SAV.Gender = (byte)CB_Gender.SelectedIndex;

            SAV.TID           = (ushort)Util.ToUInt32(MT_TID.Text);
            SAV.SID           = (ushort)Util.ToUInt32(MT_SID.Text);
            SAV.Money         = Util.ToUInt32(MT_Money.Text);
            SAV.SubRegion     = Util.getIndex(CB_Region);
            SAV.Country       = Util.getIndex(CB_Country);
            SAV.ConsoleRegion = Util.getIndex(CB_3DSReg);
            SAV.Language      = Util.getIndex(CB_Language);

            SAV.OT = TB_OTName.Text;

            SAV.Saying1 = TB_Saying1.Text;
            SAV.Saying2 = TB_Saying2.Text;
            SAV.Saying3 = TB_Saying3.Text;
            SAV.Saying4 = TB_Saying4.Text;
            SAV.Saying5 = TB_Saying5.Text;

            // Copy Maison Data in
            if (SAV.MaisonStats > -1)
            {
                for (int i = 0; i < MaisonRecords.Length; i++)
                {
                    SAV.setMaisonStat(i, ushort.Parse(MaisonRecords[i].Text));
                }
            }

            // Copy Position
            if (GB_Map.Enabled)
            {
                SAV.M = (int)NUD_M.Value;
                SAV.X = (float)NUD_X.Value;
                SAV.Z = (float)NUD_Z.Value;
                SAV.Y = (float)NUD_Y.Value;
            }

            SAV.BP = ushort.Parse(TB_BP.Text);
            // Set Current PokéMiles
            SAV.setPSSStat(0xFC / 4, Util.ToUInt32(TB_PM.Text));
            // Set Max Obtained Pokémiles
            SAV.setPSSStat(0x100 / 4, Util.ToUInt32(TB_PM.Text));
            SAV.Style = byte.Parse(TB_Style.Text);

            // Copy Badges
            int badgeval = 0;

            for (int i = 0; i < 8; i++)
            {
                badgeval |= (cba[i].Checked ? 1 : 0) << i;
            }
            SAV.Badges = badgeval;

            // Save PlayTime
            SAV.PlayedHours   = ushort.Parse(MT_Hours.Text);
            SAV.PlayedMinutes = ushort.Parse(MT_Minutes.Text) % 60;
            SAV.PlayedSeconds = ushort.Parse(MT_Seconds.Text) % 60;

            // Sprite
            SAV.Sprite = Convert.ToByte(CB_MultiplayerSprite.SelectedValue);

            // Appearance
            if (SAV.XY)
            {
                SAV.Data[SAV.TrainerCard + 0x30] = byte.Parse(MT_14030.Text);
                SAV.Data[SAV.TrainerCard + 0x31] = (byte)(byte.Parse(MT_HairColor.Text) | (byte.Parse(MT_Hat.Text) << 3));
                SAV.Data[SAV.TrainerCard + 0x32] = byte.Parse(MT_14032.Text);
                SAV.Data[SAV.TrainerCard + 0x33] = byte.Parse(MT_14033.Text);
                SAV.Data[SAV.TrainerCard + 0x34] = byte.Parse(MT_14034.Text);
                SAV.Data[SAV.TrainerCard + 0x35] = byte.Parse(MT_14035.Text);
                SAV.Data[SAV.TrainerCard + 0x36] = byte.Parse(MT_14036.Text);
                SAV.Data[SAV.TrainerCard + 0x37] = byte.Parse(MT_14037.Text);
                SAV.Data[SAV.TrainerCard + 0x38] = byte.Parse(MT_14038.Text);
                SAV.Data[SAV.TrainerCard + 0x39] = byte.Parse(MT_14039.Text);
                SAV.Data[SAV.TrainerCard + 0x3A] = byte.Parse(MT_1403A.Text);
                SAV.Data[SAV.TrainerCard + 0x3B] = byte.Parse(MT_1403B.Text);
                SAV.Data[SAV.TrainerCard + 0x3C] = byte.Parse(MT_1403C.Text);
                SAV.Data[SAV.TrainerCard + 0x3D] = byte.Parse(MT_1403D.Text);
                SAV.Data[SAV.TrainerCard + 0x3E] = byte.Parse(MT_1403E.Text);
                SAV.Data[SAV.TrainerCard + 0x3F] = byte.Parse(MT_1403F.Text);
            }

            // Vivillon
            SAV.Vivillon = CB_Vivillon.SelectedIndex;

            int seconds = (int)(CAL_AdventureStartDate.Value - new DateTime(2000, 1, 1)).TotalSeconds;

            seconds           -= seconds % 86400;
            seconds           += (int)(CAL_AdventureStartTime.Value - new DateTime(2000, 1, 1)).TotalSeconds;
            SAV.SecondsToStart = seconds;

            int fame = (int)(CAL_HoFDate.Value - new DateTime(2000, 1, 1)).TotalSeconds;

            fame -= fame % 86400;
            fame += (int)(CAL_HoFTime.Value - new DateTime(2000, 1, 1)).TotalSeconds;
            SAV.SecondsToFame = fame;

            SAV.LastSavedYear   = CAL_LastSavedDate.Value.Year;
            SAV.LastSavedMonth  = CAL_LastSavedDate.Value.Month;
            SAV.LastSavedDay    = CAL_LastSavedDate.Value.Day;
            SAV.LastSavedHour   = CAL_LastSavedTime.Value.Hour;
            SAV.LastSavedMinute = CAL_LastSavedTime.Value.Minute;
        }
Beispiel #8
0
        private PKM prepareXK3()
        {
            XK3 xk3 = pkm as XK3;

            if (xk3 == null)
            {
                return(null);
            }

            xk3.Species       = Util.getIndex(CB_Species);
            xk3.HeldItem      = Util.getIndex(CB_HeldItem);
            xk3.TID           = Util.ToInt32(TB_TID.Text);
            xk3.SID           = Util.ToInt32(TB_SID.Text);
            xk3.EXP           = Util.ToUInt32(TB_EXP.Text);
            xk3.PID           = Util.getHEXval(TB_PID.Text);
            xk3.AbilityNumber = CB_Ability.SelectedIndex; // 0/1 (stored in IVbits)

            xk3.FatefulEncounter = CHK_Fateful.Checked;
            xk3.Gender           = PKX.getGender(Label_Gender.Text);
            xk3.EV_HP            = Util.ToInt32(TB_HPEV.Text);
            xk3.EV_ATK           = Util.ToInt32(TB_ATKEV.Text);
            xk3.EV_DEF           = Util.ToInt32(TB_DEFEV.Text);
            xk3.EV_SPE           = Util.ToInt32(TB_SPEEV.Text);
            xk3.EV_SPA           = Util.ToInt32(TB_SPAEV.Text);
            xk3.EV_SPD           = Util.ToInt32(TB_SPDEV.Text);

            xk3.CNT_Cool   = Util.ToInt32(TB_Cool.Text);
            xk3.CNT_Beauty = Util.ToInt32(TB_Beauty.Text);
            xk3.CNT_Cute   = Util.ToInt32(TB_Cute.Text);
            xk3.CNT_Smart  = Util.ToInt32(TB_Smart.Text);
            xk3.CNT_Tough  = Util.ToInt32(TB_Tough.Text);
            xk3.CNT_Sheen  = Util.ToInt32(TB_Sheen.Text);

            xk3.PKRS_Days   = CB_PKRSDays.SelectedIndex;
            xk3.PKRS_Strain = CB_PKRSStrain.SelectedIndex;
            xk3.Nickname    = TB_Nickname.Text;
            xk3.Move1       = Util.getIndex(CB_Move1);
            xk3.Move2       = Util.getIndex(CB_Move2);
            xk3.Move3       = Util.getIndex(CB_Move3);
            xk3.Move4       = Util.getIndex(CB_Move4);
            xk3.Move1_PP    = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0;
            xk3.Move2_PP    = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0;
            xk3.Move3_PP    = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0;
            xk3.Move4_PP    = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0;
            xk3.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0;
            xk3.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0;
            xk3.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0;
            xk3.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0;

            xk3.IV_HP       = Util.ToInt32(TB_HPIV.Text);
            xk3.IV_ATK      = Util.ToInt32(TB_ATKIV.Text);
            xk3.IV_DEF      = Util.ToInt32(TB_DEFIV.Text);
            xk3.IV_SPE      = Util.ToInt32(TB_SPEIV.Text);
            xk3.IV_SPA      = Util.ToInt32(TB_SPAIV.Text);
            xk3.IV_SPD      = Util.ToInt32(TB_SPDIV.Text);
            xk3.IsEgg       = CHK_IsEgg.Checked;
            xk3.IsNicknamed = CHK_Nicknamed.Checked;

            xk3.OT_Name           = TB_OT.Text;
            xk3.CurrentFriendship = Util.ToInt32(TB_Friendship.Text);

            xk3.Ball      = Util.getIndex(CB_Ball);
            xk3.Met_Level = Util.ToInt32(TB_MetLevel.Text);
            xk3.OT_Gender = PKX.getGender(Label_OTGender.Text);
            xk3.Version   = Util.getIndex(CB_GameOrigin);
            xk3.Language  = Util.getIndex(CB_Language);

            xk3.Met_Location = Util.getIndex(CB_MetLocation);

            // Toss in Party Stats
            Array.Resize(ref xk3.Data, xk3.SIZE_PARTY);
            xk3.Stat_Level     = Util.ToInt32(TB_Level.Text);
            xk3.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text);
            xk3.Stat_HPMax     = Util.ToInt32(Stat_HP.Text);
            xk3.Stat_ATK       = Util.ToInt32(Stat_ATK.Text);
            xk3.Stat_DEF       = Util.ToInt32(Stat_DEF.Text);
            xk3.Stat_SPE       = Util.ToInt32(Stat_SPE.Text);
            xk3.Stat_SPA       = Util.ToInt32(Stat_SPA.Text);
            xk3.Stat_SPD       = Util.ToInt32(Stat_SPD.Text);

            if (HaX)
            {
                xk3.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue);
            }

            // Shadow Info
            xk3.ShadowID = (int)NUD_ShadowID.Value;
            if (xk3.ShadowID > 0)
            {
                xk3.Purification = (int)NUD_Purification.Value;
            }

            // Fix Moves if a slot is empty
            xk3.FixMoves();

            xk3.RefreshChecksum();
            return(xk3);
        }
Beispiel #9
0
        private PKM preparePK6()
        {
            PK6 pk6 = pkm as PK6;

            if (pk6 == null)
            {
                return(null);
            }

            // Repopulate PK6 with Edited Stuff
            if (Util.getIndex(CB_GameOrigin) < 24)
            {
                uint EC  = Util.getHEXval(TB_EC.Text);
                uint PID = Util.getHEXval(TB_PID.Text);
                uint SID = Util.ToUInt32(TB_TID.Text);
                uint TID = Util.ToUInt32(TB_TID.Text);
                uint LID = PID & 0xFFFF;
                uint HID = PID >> 16;
                uint XOR = TID ^ LID ^ SID ^ HID;

                // Ensure we don't have a shiny.
                if (XOR >> 3 == 1) // Illegal, fix. (not 16<XOR>=8)
                {
                    // Keep as shiny, so we have to mod the PID
                    PID        ^= XOR;
                    TB_PID.Text = PID.ToString("X8");
                    TB_EC.Text  = PID.ToString("X8");
                }
                else if ((XOR ^ 0x8000) >> 3 == 1 && PID != EC)
                {
                    TB_EC.Text = (PID ^ 0x80000000).ToString("X8");
                }
                else // Not Illegal, no fix.
                {
                    TB_EC.Text = PID.ToString("X8");
                }
            }

            pk6.EncryptionConstant = Util.getHEXval(TB_EC.Text);
            pk6.Checksum           = 0; // 0 CHK for now

            // Block A
            pk6.Species       = Util.getIndex(CB_Species);
            pk6.HeldItem      = Util.getIndex(CB_HeldItem);
            pk6.TID           = Util.ToInt32(TB_TID.Text);
            pk6.SID           = Util.ToInt32(TB_SID.Text);
            pk6.EXP           = Util.ToUInt32(TB_EXP.Text);
            pk6.Ability       = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
            pk6.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text);   // Number
            // pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag)
            pk6.PID              = Util.getHEXval(TB_PID.Text);
            pk6.Nature           = (byte)Util.getIndex(CB_Nature);
            pk6.FatefulEncounter = CHK_Fateful.Checked;
            pk6.Gender           = PKX.getGender(Label_Gender.Text);
            pk6.AltForm          = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F;
            pk6.EV_HP            = Util.ToInt32(TB_HPEV.Text); // EVs
            pk6.EV_ATK           = Util.ToInt32(TB_ATKEV.Text);
            pk6.EV_DEF           = Util.ToInt32(TB_DEFEV.Text);
            pk6.EV_SPE           = Util.ToInt32(TB_SPEEV.Text);
            pk6.EV_SPA           = Util.ToInt32(TB_SPAEV.Text);
            pk6.EV_SPD           = Util.ToInt32(TB_SPDEV.Text);

            pk6.CNT_Cool   = Util.ToInt32(TB_Cool.Text);     // CNT
            pk6.CNT_Beauty = Util.ToInt32(TB_Beauty.Text);
            pk6.CNT_Cute   = Util.ToInt32(TB_Cute.Text);
            pk6.CNT_Smart  = Util.ToInt32(TB_Smart.Text);
            pk6.CNT_Tough  = Util.ToInt32(TB_Tough.Text);
            pk6.CNT_Sheen  = Util.ToInt32(TB_Sheen.Text);

            pk6.PKRS_Days   = CB_PKRSDays.SelectedIndex;
            pk6.PKRS_Strain = CB_PKRSStrain.SelectedIndex;
            // Already in buff (then transferred to new pkx)
            // 0x2C, 0x2D, 0x2E, 0x2F
            // 0x30, 0x31, 0x32, 0x33
            // 0x34, 0x35, 0x36, 0x37
            // 0x38, 0x39

            // Unused
            // 0x3A, 0x3B
            // 0x3C, 0x3D, 0x3E, 0x3F

            // Block B
            // Convert Nickname field back to bytes
            pk6.Nickname     = TB_Nickname.Text;
            pk6.Move1        = Util.getIndex(CB_Move1);
            pk6.Move2        = Util.getIndex(CB_Move2);
            pk6.Move3        = Util.getIndex(CB_Move3);
            pk6.Move4        = Util.getIndex(CB_Move4);
            pk6.Move1_PP     = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0;
            pk6.Move2_PP     = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0;
            pk6.Move3_PP     = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0;
            pk6.Move4_PP     = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0;
            pk6.Move1_PPUps  = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0;
            pk6.Move2_PPUps  = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0;
            pk6.Move3_PPUps  = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0;
            pk6.Move4_PPUps  = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0;
            pk6.RelearnMove1 = Util.getIndex(CB_RelearnMove1);
            pk6.RelearnMove2 = Util.getIndex(CB_RelearnMove2);
            pk6.RelearnMove3 = Util.getIndex(CB_RelearnMove3);
            pk6.RelearnMove4 = Util.getIndex(CB_RelearnMove4);
            // 0x72 - Ribbon editor sets this flag (Secret Super Training)
            // 0x73
            pk6.IV_HP       = Util.ToInt32(TB_HPIV.Text);
            pk6.IV_ATK      = Util.ToInt32(TB_ATKIV.Text);
            pk6.IV_DEF      = Util.ToInt32(TB_DEFIV.Text);
            pk6.IV_SPE      = Util.ToInt32(TB_SPEIV.Text);
            pk6.IV_SPA      = Util.ToInt32(TB_SPAIV.Text);
            pk6.IV_SPD      = Util.ToInt32(TB_SPDIV.Text);
            pk6.IsEgg       = CHK_IsEgg.Checked;
            pk6.IsNicknamed = CHK_Nicknamed.Checked;

            // Block C
            pk6.HT_Name = TB_OTt2.Text;

            // 0x90-0xAF
            pk6.HT_Gender = PKX.getGender(Label_CTGender.Text) & 1;
            // Plus more, set by MemoryAmie (already in buff)

            // Block D
            pk6.OT_Name           = TB_OT.Text;
            pk6.CurrentFriendship = Util.ToInt32(TB_Friendship.Text);

            DateTime?egg_date     = null;
            int      egg_location = 0;

            if (CHK_AsEgg.Checked)      // If encountered as an egg, load the Egg Met data from fields.
            {
                egg_date     = CAL_EggDate.Value;
                egg_location = Util.getIndex(CB_EggLocation);
            }
            // Egg Met Data
            pk6.EggMetDate   = egg_date;
            pk6.Egg_Location = egg_location;
            // Met Data
            pk6.MetDate      = CAL_MetDate.Value;
            pk6.Met_Location = Util.getIndex(CB_MetLocation);

            if (pk6.IsEgg && pk6.Met_Location == 0)    // If still an egg, it has no hatch location/date. Zero it!
            {
                pk6.MetDate = null;
            }

            // 0xD7 Unknown

            pk6.Ball          = Util.getIndex(CB_Ball);
            pk6.Met_Level     = Util.ToInt32(TB_MetLevel.Text);
            pk6.OT_Gender     = PKX.getGender(Label_OTGender.Text);
            pk6.EncounterType = Util.getIndex(CB_EncounterType);
            pk6.Version       = Util.getIndex(CB_GameOrigin);
            pk6.Country       = Util.getIndex(CB_Country);
            pk6.Region        = Util.getIndex(CB_SubRegion);
            pk6.ConsoleRegion = Util.getIndex(CB_3DSReg);
            pk6.Language      = Util.getIndex(CB_Language);
            // 0xE4-0xE7

            // Toss in Party Stats
            Array.Resize(ref pk6.Data, pk6.SIZE_PARTY);
            pk6.Stat_Level     = Util.ToInt32(TB_Level.Text);
            pk6.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text);
            pk6.Stat_HPMax     = Util.ToInt32(Stat_HP.Text);
            pk6.Stat_ATK       = Util.ToInt32(Stat_ATK.Text);
            pk6.Stat_DEF       = Util.ToInt32(Stat_DEF.Text);
            pk6.Stat_SPE       = Util.ToInt32(Stat_SPE.Text);
            pk6.Stat_SPA       = Util.ToInt32(Stat_SPA.Text);
            pk6.Stat_SPD       = Util.ToInt32(Stat_SPD.Text);

            // Unneeded Party Stats (Status, Flags, Unused)
            pk6.Data[0xE8]              = pk6.Data[0xE9] = pk6.Data[0xEA] = pk6.Data[0xEB] =
                pk6.Data[0xED]          = pk6.Data[0xEE] = pk6.Data[0xEF] =
                    pk6.Data[0xFE]      = pk6.Data[0xFF] = pk6.Data[0x100] =
                        pk6.Data[0x101] = pk6.Data[0x102] = pk6.Data[0x103] = 0;

            // Hax Illegality
            if (HaX)
            {
                pk6.Ability    = (byte)Util.getIndex(DEV_Ability);
                pk6.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue);
            }

            // Fix Moves if a slot is empty
            pk6.FixMoves();
            pk6.FixRelearn();

            // Fix Handler (Memories & OT) -- no foreign memories for Pokemon without a foreign trainer (none for eggs)
            if (Menu_ModifyPKM.Checked)
            {
                pk6.FixMemories();
            }

            // PKX is now filled
            pk6.RefreshChecksum();
            return(pk6);
        }
Beispiel #10
0
        private void Write_Entry(object sender, EventArgs e)
        {
            if (!editing)
            {
                return; //Don't do writing until loaded
            }
            Validate_TextBoxes();
            byte[]   StringBuffer = new byte[22];      //Mimic in-game behavior of not clearing strings. It's awful, but accuracy > good.
            string[] text_writes  = new string[6 * 2]; //2 strings per mon, 6 mons

            int index = LB_DataEntry.SelectedIndex;

            int offset = index * 0x1B4;

            for (int i = 0; i < text_writes.Length; i++)
            {
                string nickname = Util.TrimFromZero(Encoding.Unicode.GetString(data, offset + 0x18, 22));
                string OTname   = Util.TrimFromZero(Encoding.Unicode.GetString(data, offset + 0x30, 22));
                text_writes[i] = nickname;
                i++;
                text_writes[i] = OTname;
                offset        += 0x48;
            }

            int partymember = Convert.ToInt32(NUP_PartyIndex.Value) - 1;

            text_writes[partymember * 2]     = TB_Nickname.Text;
            text_writes[partymember * 2 + 1] = TB_OT.Text;

            offset = index * 0x1B4 + partymember * 0x48;

            Array.Copy(BitConverter.GetBytes(Convert.ToUInt16(CB_Species.SelectedValue)), 0, data, offset + 0x00, 2);
            Array.Copy(BitConverter.GetBytes(Convert.ToUInt16(CB_HeldItem.SelectedValue)), 0, data, offset + 0x02, 2);
            Array.Copy(BitConverter.GetBytes(Convert.ToUInt16(CB_Move1.SelectedValue)), 0, data, offset + 0x04, 2);
            Array.Copy(BitConverter.GetBytes(Convert.ToUInt16(CB_Move2.SelectedValue)), 0, data, offset + 0x06, 2);
            Array.Copy(BitConverter.GetBytes(Convert.ToUInt16(CB_Move3.SelectedValue)), 0, data, offset + 0x08, 2);
            Array.Copy(BitConverter.GetBytes(Convert.ToUInt16(CB_Move4.SelectedValue)), 0, data, offset + 0x0A, 2);
            Array.Copy(BitConverter.GetBytes(Convert.ToUInt32(TB_EC.Text, 16)), 0, data, offset + 0x0C, 4);

            Array.Copy(BitConverter.GetBytes(Convert.ToUInt16(TB_TID.Text)), 0, data, offset + 0x010, 2);
            Array.Copy(BitConverter.GetBytes(Convert.ToUInt16(TB_SID.Text)), 0, data, offset + 0x012, 2);

            #region Write Strings
            {
                int ofs = index * 0x1B4;
                for (int i = 0; i < 6; i++)
                {
                    Array.Copy(Encoding.Unicode.GetBytes(text_writes[i * 2]), StringBuffer, text_writes[i * 2].Length * 2);
                    int pos = text_writes[i * 2].Length * 2;
                    if (pos < StringBuffer.Length)
                    {
                        StringBuffer[pos] = 0;
                    }

                    Array.Copy(StringBuffer, 0, data, ofs + 0x18, 22);
                    Array.Copy(Encoding.Unicode.GetBytes(text_writes[i * 2 + 1]), StringBuffer, text_writes[i * 2 + 1].Length * 2);
                    pos = text_writes[i * 2 + 1].Length * 2;
                    if (pos < StringBuffer.Length)
                    {
                        StringBuffer[pos] = 0;
                    }

                    Array.Copy(StringBuffer, 0, data, ofs + 0x30, 22);
                    ofs += 0x48;
                }
            }
            #endregion

            uint rawslgf = BitConverter.ToUInt32(data, offset + 0x14);
            uint slgf    = 0;
            slgf |= (uint)(CB_Form.SelectedIndex & 0x1F);
            slgf |= (uint)((PKX.getGender(Label_Gender.Text) & 0x3) << 5);
            slgf |= (uint)((Convert.ToUInt16(TB_Level.Text) & 0x7F) << 7);
            if (CHK_Shiny.Checked)
            {
                slgf |= 1 << 14;
            }

            slgf |= rawslgf & 0x8000;
            Array.Copy(BitConverter.GetBytes(slgf), 0, data, offset + 0x014, 2);

            uint nick = 0;
            if (CHK_Nicknamed.Checked)
            {
                nick = 1;
            }
            Array.Copy(BitConverter.GetBytes(nick), 0, data, offset + 0x016, 2);

            offset = index * 0x1B4;

            uint vnd  = 0;
            uint date = 0;
            vnd  |= Convert.ToUInt32(TB_VN.Text) & 0xFF;
            date |= (uint)((CAL_MetDate.Value.Year - 2000) & 0xFF);
            date |= (uint)((CAL_MetDate.Value.Month & 0xF) << 8);
            date |= (uint)((CAL_MetDate.Value.Day & 0x1F) << 12);
            vnd  |= (date & 0x1FFFF) << 14;
            //Fix for top bit
            uint rawvnd = BitConverter.ToUInt32(data, offset + 0x1B0);
            vnd |= rawvnd & 0x80000000;
            Array.Copy(BitConverter.GetBytes(vnd), 0, data, offset + 0x1B0, 4);

            bpkx.Image = PKX.getSprite(Util.getIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.getGender(Label_Gender.Text), Util.getIndex(CB_HeldItem), false, CHK_Shiny.Checked);
            displayEntry(null, null); // refresh text view
        }
Beispiel #11
0
        private void updateShiny(object sender, EventArgs e)
        {
            if (!editing)
            {
                return; //Don't do writing until loaded
            }
            bpkx.Image = PKX.getSprite(Util.getIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.getGender(Label_Gender.Text), Util.getIndex(CB_HeldItem), false, CHK_Shiny.Checked);

            Write_Entry(null, null);
        }
Beispiel #12
0
 private void CB_Multi_SelectedIndexChanged(object sender, EventArgs e)
 {
     PB_Sprite.Image = (Image)Properties.Resources.ResourceManager.GetObject((m_parent.savegame_oras) ? "tr_" + Util.getIndex(CB_Multi).ToString("00") : "tr_00");
 }
Beispiel #13
0
        private void save()
        {
            SAV.Game   = (byte)(CB_Game.SelectedIndex + 30);
            SAV.Gender = (byte)CB_Gender.SelectedIndex;

            SAV.TID           = (ushort)Util.ToUInt32(MT_TID.Text);
            SAV.SID           = (ushort)Util.ToUInt32(MT_SID.Text);
            SAV.Money         = Util.ToUInt32(MT_Money.Text);
            SAV.SubRegion     = Util.getIndex(CB_Region);
            SAV.Country       = Util.getIndex(CB_Country);
            SAV.ConsoleRegion = Util.getIndex(CB_3DSReg);
            SAV.Language      = Util.getIndex(CB_Language);
            SAV.AlolaTime     = (ulong)Util.getIndex(CB_AlolaTime);

            SAV.OT = TB_OTName.Text;

            // Copy Position
            if (GB_Map.Enabled && MapUpdated)
            {
                SAV.M = (int)NUD_M.Value;
                SAV.X = (float)NUD_X.Value;
                SAV.Z = (float)NUD_Z.Value;
                SAV.Y = (float)NUD_Y.Value;
                SAV.R = (float)NUD_R.Value;
            }

            // Save PlayTime
            SAV.PlayedHours   = ushort.Parse(MT_Hours.Text);
            SAV.PlayedMinutes = ushort.Parse(MT_Minutes.Text) % 60;
            SAV.PlayedSeconds = ushort.Parse(MT_Seconds.Text) % 60;

            int seconds = (int)(CAL_AdventureStartDate.Value - new DateTime(2000, 1, 1)).TotalSeconds;

            seconds           -= seconds % 86400;
            seconds           += (int)(CAL_AdventureStartTime.Value - new DateTime(2000, 1, 1)).TotalSeconds;
            SAV.SecondsToStart = seconds;

            int fame = (int)(CAL_HoFDate.Value - new DateTime(2000, 1, 1)).TotalSeconds;

            fame -= fame % 86400;
            fame += (int)(CAL_HoFTime.Value - new DateTime(2000, 1, 1)).TotalSeconds;
            SAV.SecondsToFame = fame;

            SAV.LastSavedYear   = CAL_LastSavedDate.Value.Year;
            SAV.LastSavedMonth  = CAL_LastSavedDate.Value.Month;
            SAV.LastSavedDay    = CAL_LastSavedDate.Value.Day;
            SAV.LastSavedHour   = CAL_LastSavedTime.Value.Hour;
            SAV.LastSavedMinute = CAL_LastSavedTime.Value.Minute;

            SAV.BP         = (uint)NUD_BP.Value;
            SAV.FestaCoins = (uint)NUD_FC.Value;

            // Poké Finder
            SAV.PokeFinderSnapCount        = (uint)NUD_SnapCount.Value;
            SAV.PokeFinderThumbsTotalValue = (uint)NUD_ThumbsTotal.Value;
            SAV.PokeFinderThumbsHighValue  = (uint)NUD_ThumbsRecord.Value;

            SAV.PokeFinderCameraVersion = (ushort)CB_CameraVersion.SelectedIndex;
            SAV.PokeFinderGyroFlag      = CHK_Gyro.Checked;

            // Battle Tree
            SAV.setTreeStreak((int)NUD_RCStreak0.Value, 0, super: false, max: false);
            SAV.setTreeStreak((int)NUD_RCStreak1.Value, 1, super: false, max: false);
            SAV.setTreeStreak((int)NUD_RCStreak2.Value, 2, super: false, max: false);
            SAV.setTreeStreak((int)NUD_RMStreak0.Value, 0, super: false, max: true);
            SAV.setTreeStreak((int)NUD_RMStreak1.Value, 1, super: false, max: true);
            SAV.setTreeStreak((int)NUD_RMStreak2.Value, 2, super: false, max: true);

            SAV.setTreeStreak((int)NUD_SCStreak0.Value, 0, super: true, max: false);
            SAV.setTreeStreak((int)NUD_SCStreak1.Value, 1, super: true, max: false);
            SAV.setTreeStreak((int)NUD_SCStreak2.Value, 2, super: true, max: false);
            SAV.setTreeStreak((int)NUD_SMStreak0.Value, 0, super: true, max: true);
            SAV.setTreeStreak((int)NUD_SMStreak1.Value, 1, super: true, max: true);
            SAV.setTreeStreak((int)NUD_SMStreak2.Value, 2, super: true, max: true);
        }
Beispiel #14
0
 private void changeEncounteredCount(object sender, EventArgs e)
 {
     if (!editing)
     {
         Array.Copy(BitConverter.GetBytes(Math.Min(0xFFFF, Util.ToUInt32(MT_Count))), 0, sav, Main.SAV.EncounterCount + (Util.getIndex(CB_Species) - 1) * 2, 2);
     }
 }
Beispiel #15
0
        // View Updates
        private void B_Search_Click(object sender, EventArgs e)
        {
            // Populate Search Query Result
            IEnumerable <PKM> res = RawDB;

            int format = MAXFORMAT + 1 - CB_Format.SelectedIndex;

            switch (CB_FormatComparator.SelectedIndex)
            {
            case 0: /* Do nothing */ break;

            case 1: res = res.Where(pk => pk.Format >= format); break;

            case 2: res = res.Where(pk => pk.Format == format); break;

            case 3: res = res.Where(pk => pk.Format <= format); break;
            }

            switch (CB_Generation.SelectedIndex)
            {
            case 0: /* Do nothing */ break;

            case 1: res = res.Where(pk => pk.Gen6); break;

            case 2: res = res.Where(pk => pk.Gen5); break;

            case 3: res = res.Where(pk => pk.Gen4); break;

            case 4: res = res.Where(pk => pk.Gen3); break;
            }

            // Primary Searchables
            int species = Util.getIndex(CB_Species);
            int ability = Util.getIndex(CB_Ability);
            int nature  = Util.getIndex(CB_Nature);
            int item    = Util.getIndex(CB_HeldItem);

            if (species != -1)
            {
                res = res.Where(pk => pk.Species == species);
            }
            if (ability != -1)
            {
                res = res.Where(pk => pk.Ability == ability);
            }
            if (nature != -1)
            {
                res = res.Where(pk => pk.Nature == nature);
            }
            if (item != -1)
            {
                res = res.Where(pk => pk.HeldItem == item);
            }

            // Secondary Searchables
            int move1 = Util.getIndex(CB_Move1);
            int move2 = Util.getIndex(CB_Move2);
            int move3 = Util.getIndex(CB_Move3);
            int move4 = Util.getIndex(CB_Move4);

            if (move1 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move1));
            }
            if (move2 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move2));
            }
            if (move3 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move3));
            }
            if (move4 != -1)
            {
                res = res.Where(pk => pk.Moves.Contains(move4));
            }
            int vers = Util.getIndex(CB_GameOrigin);

            if (vers != -1)
            {
                res = res.Where(pk => pk.Version == vers);
            }
            int hptype = Util.getIndex(CB_HPType);

            if (hptype != -1)
            {
                res = res.Where(pk => pk.HPType == hptype);
            }
            if (CHK_Shiny.CheckState == CheckState.Checked)
            {
                res = res.Where(pk => pk.IsShiny);
            }
            if (CHK_Shiny.CheckState == CheckState.Unchecked)
            {
                res = res.Where(pk => !pk.IsShiny);
            }
            if (CHK_IsEgg.CheckState == CheckState.Checked)
            {
                res = res.Where(pk => pk.IsEgg);
            }
            if (CHK_IsEgg.CheckState == CheckState.Unchecked)
            {
                res = res.Where(pk => !pk.IsEgg);
            }
            if (CHK_IsEgg.CheckState == CheckState.Checked && MT_ESV.Text != "")
            {
                res = res.Where(pk => pk.PSV == Convert.ToInt16(MT_ESV.Text));
            }

            // Tertiary Searchables
            if (TB_Level.Text != "") // Level
            {
                int level = Convert.ToInt16(TB_Level.Text);
                if (level <= 100)
                {
                    switch (CB_Level.SelectedIndex)
                    {
                    case 0: break; // Any

                    case 1:        // <=
                        res = res.Where(pk => pk.Stat_Level <= level);
                        break;

                    case 2: // ==
                        res = res.Where(pk => pk.Stat_Level == level);
                        break;

                    case 3: // >=
                        res = res.Where(pk => pk.Stat_Level >= level);
                        break;
                    }
                }
            }
            switch (CB_IV.SelectedIndex)
            {
            case 0: break; // Do nothing

            case 1:        // <= 90
                res = res.Where(pk => pk.IVs.Sum() <= 90);
                break;

            case 2:     // 91-120
                res = res.Where(pk => pk.IVs.Sum() > 90 && pk.IVs.Sum() <= 120);
                break;

            case 3:     // 121-150
                res = res.Where(pk => pk.IVs.Sum() > 120 && pk.IVs.Sum() <= 150);
                break;

            case 4:     // 151-179
                res = res.Where(pk => pk.IVs.Sum() > 150 && pk.IVs.Sum() < 180);
                break;

            case 5:     // 180+
                res = res.Where(pk => pk.IVs.Sum() >= 180);
                break;

            case 6:     // == 186
                res = res.Where(pk => pk.IVs.Sum() == 186);
                break;
            }
            switch (CB_EVTrain.SelectedIndex)
            {
            case 0: break; // Do nothing

            case 1:        // None (0)
                res = res.Where(pk => pk.EVs.Sum() == 0);
                break;

            case 2:     // Some (127-0)
                res = res.Where(pk => pk.EVs.Sum() < 128);
                break;

            case 3:     // Half (128-507)
                res = res.Where(pk => pk.EVs.Sum() >= 128 && pk.EVs.Sum() < 508);
                break;

            case 4:     // Full (508+)
                res = res.Where(pk => pk.EVs.Sum() >= 508);
                break;
            }

            // Filter for Selected Source
            if (!Menu_SearchBoxes.Checked)
            {
                res = res.Where(pk => pk.Identifier.Contains("db\\"));
            }
            if (!Menu_SearchDatabase.Checked)
            {
                res = res.Where(pk => !pk.Identifier.Contains("db\\"));
            }

            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((PK6)pk).Valid);
            }
            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)
            {
                if (!Menu_SearchBoxes.Checked && !Menu_SearchDatabase.Checked)
                {
                    Util.Alert("No data source to search!", "No results found!");
                }
                else
                {
                    Util.Alert("No results found!");
                }
            }
            setResults(new List <PKM>(results)); // updates Count Label as well.
            System.Media.SystemSounds.Asterisk.Play();
        }
Beispiel #16
0
        private PKM preparePK5()
        {
            PK5 pk5 = pkm as PK5;

            if (pk5 == null)
            {
                return(null);
            }

            pk5.Species  = Util.getIndex(CB_Species);
            pk5.HeldItem = Util.getIndex(CB_HeldItem);
            pk5.TID      = Util.ToInt32(TB_TID.Text);
            pk5.SID      = Util.ToInt32(TB_SID.Text);
            pk5.EXP      = Util.ToUInt32(TB_EXP.Text);
            pk5.PID      = Util.getHEXval(TB_PID.Text);

            pk5.Nature           = (byte)Util.getIndex(CB_Nature);
            pk5.FatefulEncounter = CHK_Fateful.Checked;
            pk5.Gender           = PKX.getGender(Label_Gender.Text);
            pk5.AltForm          = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F;
            pk5.EV_HP            = Util.ToInt32(TB_HPEV.Text);
            pk5.EV_ATK           = Util.ToInt32(TB_ATKEV.Text);
            pk5.EV_DEF           = Util.ToInt32(TB_DEFEV.Text);
            pk5.EV_SPE           = Util.ToInt32(TB_SPEEV.Text);
            pk5.EV_SPA           = Util.ToInt32(TB_SPAEV.Text);
            pk5.EV_SPD           = Util.ToInt32(TB_SPDEV.Text);

            pk5.CNT_Cool   = Util.ToInt32(TB_Cool.Text);
            pk5.CNT_Beauty = Util.ToInt32(TB_Beauty.Text);
            pk5.CNT_Cute   = Util.ToInt32(TB_Cute.Text);
            pk5.CNT_Smart  = Util.ToInt32(TB_Smart.Text);
            pk5.CNT_Tough  = Util.ToInt32(TB_Tough.Text);
            pk5.CNT_Sheen  = Util.ToInt32(TB_Sheen.Text);

            pk5.PKRS_Days   = CB_PKRSDays.SelectedIndex;
            pk5.PKRS_Strain = CB_PKRSStrain.SelectedIndex;
            pk5.Nickname    = TB_Nickname.Text;
            pk5.Move1       = Util.getIndex(CB_Move1);
            pk5.Move2       = Util.getIndex(CB_Move2);
            pk5.Move3       = Util.getIndex(CB_Move3);
            pk5.Move4       = Util.getIndex(CB_Move4);
            pk5.Move1_PP    = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0;
            pk5.Move2_PP    = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0;
            pk5.Move3_PP    = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0;
            pk5.Move4_PP    = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0;
            pk5.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0;
            pk5.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0;
            pk5.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0;
            pk5.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0;

            pk5.IV_HP       = Util.ToInt32(TB_HPIV.Text);
            pk5.IV_ATK      = Util.ToInt32(TB_ATKIV.Text);
            pk5.IV_DEF      = Util.ToInt32(TB_DEFIV.Text);
            pk5.IV_SPE      = Util.ToInt32(TB_SPEIV.Text);
            pk5.IV_SPA      = Util.ToInt32(TB_SPAIV.Text);
            pk5.IV_SPD      = Util.ToInt32(TB_SPDIV.Text);
            pk5.IsEgg       = CHK_IsEgg.Checked;
            pk5.IsNicknamed = CHK_Nicknamed.Checked;

            pk5.OT_Name           = TB_OT.Text;
            pk5.CurrentFriendship = Util.ToInt32(TB_Friendship.Text);

            // Default Dates
            DateTime?egg_date     = null;
            int      egg_location = 0;

            if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields.
            {
                egg_date     = CAL_EggDate.Value;
                egg_location = Util.getIndex(CB_EggLocation);
            }
            // Egg Met Data
            pk5.EggMetDate   = egg_date;
            pk5.Egg_Location = egg_location;
            // Met Data
            pk5.MetDate      = CAL_MetDate.Value;
            pk5.Met_Location = Util.getIndex(CB_MetLocation);

            if (pk5.IsEgg && pk5.Met_Location == 0)    // If still an egg, it has no hatch location/date. Zero it!
            {
                pk5.MetDate = null;
            }

            pk5.Ball          = Util.getIndex(CB_Ball);
            pk5.Met_Level     = Util.ToInt32(TB_MetLevel.Text);
            pk5.OT_Gender     = PKX.getGender(Label_OTGender.Text);
            pk5.EncounterType = Util.getIndex(CB_EncounterType);
            pk5.Version       = Util.getIndex(CB_GameOrigin);
            pk5.Language      = Util.getIndex(CB_Language);

            pk5.NPokémon = CHK_NSparkle.Checked;

            // Toss in Party Stats
            Array.Resize(ref pk5.Data, pk5.SIZE_PARTY);
            pk5.Stat_Level     = Util.ToInt32(TB_Level.Text);
            pk5.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text);
            pk5.Stat_HPMax     = Util.ToInt32(Stat_HP.Text);
            pk5.Stat_ATK       = Util.ToInt32(Stat_ATK.Text);
            pk5.Stat_DEF       = Util.ToInt32(Stat_DEF.Text);
            pk5.Stat_SPE       = Util.ToInt32(Stat_SPE.Text);
            pk5.Stat_SPA       = Util.ToInt32(Stat_SPA.Text);
            pk5.Stat_SPD       = Util.ToInt32(Stat_SPD.Text);

            if (HaX)
            {
                pk5.Ability    = (byte)Util.getIndex(DEV_Ability);
                pk5.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue);
            }
            else
            {
                pk5.Ability       = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
                pk5.HiddenAbility = CB_Ability.SelectedIndex > 1; // not 0 or 1
            }

            // Fix Moves if a slot is empty
            pk5.FixMoves();

            pk5.RefreshChecksum();
            return(pk5);
        }
Beispiel #17
0
        private void loadchks()
        {
            // Load Bools for the data
            int pk;

            try
            {
                pk = Util.getIndex(CB_Species);
            }
            catch { pk = LB_Species.SelectedIndex + 1; }

            CheckBox[] CP =
            {
                CHK_P1, CHK_P2, CHK_P3, CHK_P4, CHK_P5, CHK_P6, CHK_P7, CHK_P8, CHK_P9, CHK_P10,
            };
            CheckBox[] CL =
            {
                CHK_L1, CHK_L2, CHK_L3, CHK_L4, CHK_L5, CHK_L6, CHK_L7,
            };
            // Load Partitions
            for (int i = 0; i < 10; i++)
            {
                CP[i].Checked = specbools[i, pk - 1];
            }
            for (int i = 0; i < 7; i++)
            {
                CL[i].Checked = langbools[i, pk - 1];
            }

            if (pk < 650)
            {
                CHK_F1.Enabled = true; CHK_F1.Checked = foreignbools[pk - 1];
            }
            else
            {
                CHK_F1.Enabled = CHK_F1.Checked = false;
            }

            if (pk > 721)
            {
                //CHK_P1.Checked = CHK_P1.Enabled = false;
                //CHK_P10.Checked = CHK_P10.Enabled = false;
                //CHK_P6.Enabled = CHK_P7.Enabled = CHK_P8.Enabled = CHK_P9.Enabled = false;

                for (int i = 0; i < 10; i++)
                {
                    CP[i].Enabled = true;
                }

                for (int i = 0; i < 7; i++)
                {
                    CL[i].Checked = CL[i].Enabled = false;
                }
            }
            else
            {
                CHK_P1.Enabled  = true;
                CHK_P10.Enabled = true;

                int index = LB_Species.SelectedIndex + 1;
                PKX.PersonalParser.Personal MonData = PKX.PersonalGetter.GetPersonal(index);
                int gt = MonData.GenderRatio;

                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

                for (int i = 0; i < 7; i++)
                {
                    CL[i].Enabled = true;
                }
            }
        }
Beispiel #18
0
        private PKM preparePK2()
        {
            PK2 pk2 = pkm as PK2;
            if (pk2 == null)
                return null;

            pk2.Species = Util.getIndex(CB_Species);
            pk2.TID = Util.ToInt32(TB_TID.Text);
            pk2.EXP = Util.ToUInt32(TB_EXP.Text);
            pk2.HeldItem = Util.getIndex(CB_HeldItem);
            pk2.IsEgg = CHK_IsEgg.Checked;
            pk2.CurrentFriendship = Util.ToInt32(TB_Friendship.Text);
            pk2.Met_Level = Util.ToInt32(TB_MetLevel.Text);
            pk2.Met_Location = Util.getIndex(CB_MetLocation);
            pk2.Met_TimeOfDay = CB_MetTimeOfDay.SelectedIndex;

            pk2.EV_HP = Util.ToInt32(TB_HPEV.Text);
            pk2.EV_ATK = Util.ToInt32(TB_ATKEV.Text);
            pk2.EV_DEF = Util.ToInt32(TB_DEFEV.Text);
            pk2.EV_SPE = Util.ToInt32(TB_SPEEV.Text);
            pk2.EV_SPC = Util.ToInt32(TB_SPAEV.Text);

            if (CHK_Nicknamed.Checked)
                pk2.Nickname = TB_Nickname.Text;
            else 
                pk2.setNotNicknamed();
            pk2.Move1 = Util.getIndex(CB_Move1);
            pk2.Move2 = Util.getIndex(CB_Move2);
            pk2.Move3 = Util.getIndex(CB_Move3);
            pk2.Move4 = Util.getIndex(CB_Move4);
            pk2.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0;
            pk2.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0;
            pk2.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0;
            pk2.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0;
            pk2.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0;
            pk2.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0;
            pk2.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0;
            pk2.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0;

            pk2.IV_HP = Util.ToInt32(TB_HPIV.Text);
            pk2.IV_ATK = Util.ToInt32(TB_ATKIV.Text);
            pk2.IV_DEF = Util.ToInt32(TB_DEFIV.Text);
            pk2.IV_SPE = Util.ToInt32(TB_SPEIV.Text);
            pk2.IV_SPA = Util.ToInt32(TB_SPAIV.Text);

            pk2.OT_Name = TB_OT.Text;

            // Toss in Party Stats
            Array.Resize(ref pk2.Data, pk2.SIZE_PARTY);
            pk2.Stat_Level = Util.ToInt32(TB_Level.Text);
            pk2.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text);
            pk2.Stat_HPMax = Util.ToInt32(Stat_HP.Text);
            pk2.Stat_ATK = Util.ToInt32(Stat_ATK.Text);
            pk2.Stat_DEF = Util.ToInt32(Stat_DEF.Text);
            pk2.Stat_SPE = Util.ToInt32(Stat_SPE.Text);
            pk2.Stat_SPA = Util.ToInt32(Stat_SPA.Text);
            pk2.Stat_SPD = Util.ToInt32(Stat_SPD.Text);

            if (HaX)
            {
                pk2.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue);
            }

            // Fix Moves if a slot is empty 
            pk2.FixMoves();

            return pk2;
        }