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); }
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); }
// 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); }
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"); }
// 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(); }
// 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(); }
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; }
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); }
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); }
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 }
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); }
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"); }
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); }
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); } }
// 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(); }
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); }
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; } } }
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; }