private void saveFields() { // Save Region & Country Data pkm.Geo1_Region = WinFormsUtil.getIndex(CB_Region0); pkm.Geo2_Region = WinFormsUtil.getIndex(CB_Region1); pkm.Geo3_Region = WinFormsUtil.getIndex(CB_Region2); pkm.Geo4_Region = WinFormsUtil.getIndex(CB_Region3); pkm.Geo5_Region = WinFormsUtil.getIndex(CB_Region4); pkm.Geo1_Country = WinFormsUtil.getIndex(CB_Country0); pkm.Geo2_Country = WinFormsUtil.getIndex(CB_Country1); pkm.Geo3_Country = WinFormsUtil.getIndex(CB_Country2); pkm.Geo4_Country = WinFormsUtil.getIndex(CB_Country3); pkm.Geo5_Country = WinFormsUtil.getIndex(CB_Country4); // Save 0-255 stats pkm.HT_Friendship = Util.ToInt32(M_CT_Friendship.Text); pkm.HT_Affection = Util.ToInt32(M_CT_Affection.Text); pkm.OT_Friendship = Util.ToInt32(M_OT_Friendship.Text); pkm.OT_Affection = Util.ToInt32(M_OT_Affection.Text); pkm.Fullness = (byte)Util.ToInt32(M_Fullness.Text); pkm.Enjoyment = (byte)Util.ToInt32(M_Enjoyment.Text); // Save Memories pkm.HT_Memory = WinFormsUtil.getIndex(CB_CTMemory); pkm.HT_TextVar = CB_CTVar.Enabled ? WinFormsUtil.getIndex(CB_CTVar) : 0; pkm.HT_Intensity = CB_CTFeel.Enabled ? CB_CTQual.SelectedIndex + 1 : 0; pkm.HT_Feeling = CB_CTFeel.Enabled ? CB_CTFeel.SelectedIndex : 0; pkm.OT_Memory = WinFormsUtil.getIndex(CB_OTMemory); pkm.OT_TextVar = CB_OTVar.Enabled ? WinFormsUtil.getIndex(CB_OTVar) : 0; pkm.OT_Intensity = CB_OTFeel.Enabled ? CB_OTQual.SelectedIndex + 1 : 0; pkm.OT_Feeling = CB_OTFeel.Enabled ? CB_OTFeel.SelectedIndex : 0; Main.pkm = pkm; }
private string getMemoryString(ComboBox m, ComboBox arg, ComboBox q, ComboBox f, string tr) { string result; string nn = pkm.Nickname; string a = (ComboItem)arg.SelectedItem == null ? arg.Text ?? "ERROR" : ((ComboItem)arg.SelectedItem).Text; int mem = WinFormsUtil.getIndex(m); bool enabled = false; if (mem == 0) { result = GameInfo.Strings.memories[38]; } else { result = string.Format(GameInfo.Strings.memories[mem + 38], nn, tr, a, f.Text, q.Text); enabled = true; } // Show labels if the memory allows for them. if (q == CB_CTQual) { L_CT_Quality.Visible = L_CT_Feeling.Visible = enabled; } else { L_OT_Quality.Visible = L_OT_Feeling.Visible = enabled; } // Show Quality and Feeling. q.Visible = q.Enabled = f.Visible = f.Enabled = enabled; return(result); }
private void B_ApplyTrash_Click(object sender, EventArgs e) { string species = PKX.getSpeciesNameGeneration(WinFormsUtil.getIndex(CB_Species), WinFormsUtil.getIndex(CB_Language), (int)NUD_Generation.Value); if (species == "") // no result { species = CB_Species.Text; } byte[] current = PKX.setString(TB_Text.Text, Main.SAV.Generation, Main.SAV.Japanese, bigendian, Raw.Length, Main.SAV.Language); byte[] data = PKX.setString(species, Main.SAV.Generation, Main.SAV.Japanese, bigendian, Raw.Length, Main.SAV.Language); if (data.Length <= current.Length) { WinFormsUtil.Alert("Trash byte layer is hidden by current text.", $"Current Bytes: {current.Length}" + Environment.NewLine + $"Layer Bytes: {data.Length}"); return; } if (data.Length > Bytes.Count) { WinFormsUtil.Alert("Trash byte layer is too long to apply."); return; } for (int i = current.Length; i < data.Length; i++) { Bytes[i].Value = data[i]; } }
private void updateSpecies(object sender, EventArgs e) { // Get Forms for Given Species setForms(); // Check for Gender Changes // Get Gender Threshold int gt = SAV.Personal[WinFormsUtil.getIndex(CB_Species)].Gender; if (gt == 255) // Genderless { genderflag = 2; } else if (gt == 254) // Female Only { genderflag = 1; } else if (gt == 0) // Male Only { genderflag = 0; } setGenderLabel(); setAbilityList(); }
private void updateCountry(object sender, EventArgs e) { if (WinFormsUtil.getIndex(sender as ComboBox) > 0) { Main.setCountrySubRegion(CB_Region, "sr_" + WinFormsUtil.getIndex(sender as ComboBox).ToString("000")); } }
private void saveFavPKM() { if (loading || !GB_PKM.Enabled) { return; } int index = currentpkm; byte[] pkm = new byte[0x34]; BitConverter.GetBytes(Util.getHEXval(TB_EC.Text)).CopyTo(pkm, 0); BitConverter.GetBytes((ushort)WinFormsUtil.getIndex(CB_Species)).CopyTo(pkm, 8); BitConverter.GetBytes((ushort)WinFormsUtil.getIndex(CB_HeldItem)).CopyTo(pkm, 0xA); pkm[0xC] = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); pkm[0xD] = (byte)(CB_Ability.SelectedIndex << 1); pkm[0x14] = (byte)WinFormsUtil.getIndex(CB_Nature); int fegform = 0; fegform += PKX.getGender(Label_Gender.Text) << 1; fegform += CB_Form.SelectedIndex << 3; pkm[0x15] = (byte)fegform; pkm[0x16] = (byte)Math.Min(Convert.ToInt32(TB_HPEV.Text), 252); pkm[0x17] = (byte)Math.Min(Convert.ToInt32(TB_ATKEV.Text), 252); pkm[0x18] = (byte)Math.Min(Convert.ToInt32(TB_DEFEV.Text), 252); pkm[0x19] = (byte)Math.Min(Convert.ToInt32(TB_SPAEV.Text), 252); pkm[0x1A] = (byte)Math.Min(Convert.ToInt32(TB_SPDEV.Text), 252); pkm[0x1B] = (byte)Math.Min(Convert.ToInt32(TB_SPEEV.Text), 252); BitConverter.GetBytes((ushort)WinFormsUtil.getIndex(CB_Move1)).CopyTo(pkm, 0x1C); BitConverter.GetBytes((ushort)WinFormsUtil.getIndex(CB_Move2)).CopyTo(pkm, 0x1E); BitConverter.GetBytes((ushort)WinFormsUtil.getIndex(CB_Move3)).CopyTo(pkm, 0x20); BitConverter.GetBytes((ushort)WinFormsUtil.getIndex(CB_Move4)).CopyTo(pkm, 0x22); pkm[0x24] = (byte)CB_PPu1.SelectedIndex; pkm[0x25] = (byte)CB_PPu2.SelectedIndex; pkm[0x26] = (byte)CB_PPu3.SelectedIndex; pkm[0x27] = (byte)CB_PPu4.SelectedIndex; pkm[0x28] = (byte)(Convert.ToByte(TB_HPIV.Text) & 0x1F); pkm[0x29] = (byte)(Convert.ToByte(TB_ATKIV.Text) & 0x1F); pkm[0x2A] = (byte)(Convert.ToByte(TB_DEFIV.Text) & 0x1F); pkm[0x2B] = (byte)(Convert.ToByte(TB_SPAIV.Text) & 0x1F); pkm[0x2C] = (byte)(Convert.ToByte(TB_SPDIV.Text) & 0x1F); pkm[0x2D] = (byte)(Convert.ToByte(TB_SPEIV.Text) & 0x1F); int shiny = (CHK_Shiny.Checked? 1 : 0) << 6; pkm[0x2D] |= (byte)shiny; pkm[0x2E] = Convert.ToByte(TB_Friendship.Text); pkm[0x2F] = (byte)WinFormsUtil.getIndex(CB_Ball); pkm[0x30] = Convert.ToByte(TB_Level.Text); for (int i = 0; i < 0x34; i++) // Copy data back to storage. { pkmdata[index - 1, i] = pkm[i]; } }
private void CB_Multi_SelectedIndexChanged(object sender, EventArgs e) { if (editing) { return; } SAV.MultiplayerSpriteID = WinFormsUtil.getIndex(CB_MultiplayerSprite); PB_Sprite.Image = SAV.Sprite(); }
private void updateShiny(object sender, EventArgs e) { if (!editing) { return; //Don't do writing until loaded } bpkx.Image = PKMUtil.getSprite(WinFormsUtil.getIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.getGender(Label_Gender.Text), WinFormsUtil.getIndex(CB_HeldItem), false, CHK_Shiny.Checked); Write_Entry(null, null); }
private void changeRecordSpecies(object sender, EventArgs e) { int index = listBox1.SelectedIndex; if (index < 0) { return; } BitConverter.GetBytes(WinFormsUtil.getIndex(CB_Species)).CopyTo(SAV.Data, offsetSpec + 4 * index); }
private void setForms() { int species = WinFormsUtil.getIndex(CB_Species); bool hasForms = PersonalTable.AO[species].HasFormes || new[] { 664, 665, 414 }.Contains(species); CB_Form.Enabled = CB_Form.Visible = hasForms; CB_Form.DisplayMember = "Text"; CB_Form.ValueMember = "Value"; CB_Form.DataSource = PKX.getFormList(species, GameInfo.Strings.types, GameInfo.Strings.forms, Main.gendersymbols).ToList(); }
private void Label_Gender_Click(object sender, EventArgs e) { // Get Gender Threshold int gt = SAV.Personal[WinFormsUtil.getIndex(CB_Species)].Gender; if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless { return; } if (gt < 256) // If not a single gender(less) species: { Label_Gender.Text = Main.gendersymbols[PKX.getGender(Label_Gender.Text) ^ 1]; } }
private void changeCountryIndex(object sender, EventArgs e) { int index = Array.IndexOf(cba, sender); if (WinFormsUtil.getIndex(sender as ComboBox) > 0) { Main.setCountrySubRegion(mta[index], "sr_" + WinFormsUtil.getIndex(sender as ComboBox).ToString("000")); mta[index].Enabled = true; } else { mta[index].DataSource = new[] { new { Text = "", Value = 0 } }; mta[index].Enabled = false; mta[index].SelectedValue = 0; } }
private void updateGender(object sender, EventArgs e) { // Get Gender Threshold int species = WinFormsUtil.getIndex(CB_Species); int gt = SAV.Personal[species].Gender; if (gt == 255) { Label_Gender.Text = gendersymbols[2]; } else if (gt == 254) { Label_Gender.Text = gendersymbols[1]; } else if (gt == 0) { Label_Gender.Text = gendersymbols[0]; } if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless abort { return; } if (gt < 256) // If not a single gender(less) species: { Label_Gender.Text = PKX.getGender(Label_Gender.Text) == 0 ? gendersymbols[1] : gendersymbols[0]; if (PKX.getGender(CB_Form.Text) == 0 && Label_Gender.Text != gendersymbols[0]) { CB_Form.SelectedIndex = 1; } else if (PKX.getGender(CB_Form.Text) == 1 && Label_Gender.Text != gendersymbols[1]) { CB_Form.SelectedIndex = 0; } } if (species == 668) { CB_Form.SelectedIndex = PKX.getGender(Label_Gender.Text); } Write_Entry(null, null); }
private void B_Close_Click(object sender, EventArgs e) { int ofs = SAV.HoF; SAV.Data[ofs] &= 0xFE; SAV.Data[ofs] |= (byte)(CHK_Flag.Checked ? 1 : 0); BitConverter.GetBytes((ushort)NUD_Count.Value).CopyTo(SAV.Data, ofs + 2); for (int i = 0; i < entries.Length; i++) { int o = ofs + 4 + i * 2; var cb = entries[i]; var val = WinFormsUtil.getIndex(cb); BitConverter.GetBytes((ushort)val).CopyTo(SAV.Data, o); } SAV.Data.CopyTo(Main.SAV.Data, 0); Main.SAV.Edited = true; Close(); }
private void setAbilityList() { int newabil = Convert.ToInt16(MT_AbilNo.Text) >> 1; int species = WinFormsUtil.getIndex(CB_Species); int formnum = CB_Form.SelectedIndex; int[] abils = PersonalTable.AO.getAbilities(species, formnum); // Build Ability List List <string> ability_list = new List <string> { abilitylist[abils[0]] + " (1)", abilitylist[abils[1]] + " (2)", abilitylist[abils[2]] + " (H)" }; CB_Ability.DataSource = ability_list; CB_Ability.SelectedIndex = newabil < 3 ? newabil : 0; }
private void B_Save_Click(object sender, EventArgs e) { // Copy Bags byte[] bagarray = new byte[12]; int emptyslots = 0; for (int i = 0; i < 12; i++) { string bag = dataGridView1.Rows[i].Cells[1].Value.ToString(); if (Array.IndexOf(trba, bag) == 0) { emptyslots++; continue; } bagarray[i - emptyslots] = (byte)Array.IndexOf(trba, bag); } try { BitConverter.GetBytes(float.Parse(TB_Time1.Text)).CopyTo(SAV.Data, offsetTime + 4 * 30); } catch { } try { BitConverter.GetBytes(float.Parse(TB_Time2.Text)).CopyTo(SAV.Data, offsetTime + 4 * 31); } catch { } BitConverter.GetBytes((ushort)WinFormsUtil.getIndex(CB_S2)).CopyTo(SAV.Data, offsetSpec + 4 * 30); bagarray.CopyTo(SAV.Data, SAV.SuperTrain + 0x308); Array.Copy(SAV.Data, Main.SAV.Data, Main.SAV.Data.Length); Main.SAV.Edited = true; Close(); }
private void updateNickname(object sender, EventArgs e) { if (!CHK_Nicknamed.Checked) { // Fetch Current Species and set it as Nickname Text int species = WinFormsUtil.getIndex(CB_Species); if (species == 0 || species > 721) { TB_Nickname.Text = ""; } else { try { // get language TB_Nickname.Text = PKX.getSpeciesNameGeneration(species, SAV.Language, 6); } catch { } } } TB_Nickname.ReadOnly = !CHK_Nicknamed.Checked; Write_Entry(null, null); }
private void B_OK_Click(object sender, EventArgs e) { Result = (GameVersion)WinFormsUtil.getIndex(CB_Game); Close(); }
// 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; } if (CB_FormatComparator.SelectedIndex != 0) { if (format <= 2) // 1-2 { res = res.Where(pk => pk.Format <= 2); } if (format >= 3 && format <= 6) // 3-6 { res = res.Where(pk => pk.Format >= 3); } if (format >= 7) // 1,3-6,7 { res = res.Where(pk => pk.Format != 2); } } switch (CB_Generation.SelectedIndex) { case 0: /* Do nothing */ break; case 1: res = res.Where(pk => pk.Gen7); break; case 2: res = res.Where(pk => pk.Gen6); break; case 3: res = res.Where(pk => pk.Gen5); break; case 4: res = res.Where(pk => pk.Gen4); break; case 5: res = res.Where(pk => pk.Gen3); break; } // Primary Searchables int species = WinFormsUtil.getIndex(CB_Species); int ability = WinFormsUtil.getIndex(CB_Ability); int nature = WinFormsUtil.getIndex(CB_Nature); int item = WinFormsUtil.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 = WinFormsUtil.getIndex(CB_Move1); int move2 = WinFormsUtil.getIndex(CB_Move2); int move3 = WinFormsUtil.getIndex(CB_Move3); int move4 = WinFormsUtil.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 = WinFormsUtil.getIndex(CB_GameOrigin); if (vers != -1) { res = res.Where(pk => pk.Version == vers); } int hptype = WinFormsUtil.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.StartsWith(DatabasePath + Path.DirectorySeparatorChar, StringComparison.Ordinal)); } if (!Menu_SearchDatabase.Checked) { res = res.Where(pk => !pk.Identifier.StartsWith(DatabasePath + Path.DirectorySeparatorChar, StringComparison.Ordinal)); } slotSelected = -1; // reset the slot last viewed if (Menu_SearchLegal.Checked && !Menu_SearchIllegal.Checked) // Legal Only { res = res.Where(pk => pk.GenNumber >= 6 && new LegalityAnalysis(pk).Valid); } if (!Menu_SearchLegal.Checked && Menu_SearchIllegal.Checked) // Illegal Only { res = res.Where(pk => pk.GenNumber >= 6 && !new LegalityAnalysis(pk).Valid); } if (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(); BatchEditor.screenStrings(filters); res = res.Where(pkm => // Compare across all filters { foreach (var cmd in filters) { if (!pkm.GetType().HasPropertyAll(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); }); } if (Menu_SearchClones.Checked) { var r = res.ToArray(); var hashes = r.Select(hash).ToArray(); res = r.Where((t, i) => hashes.Count(x => x == hashes[i]) > 1).OrderBy(hash); } var results = res.ToArray(); if (results.Length == 0) { if (!Menu_SearchBoxes.Checked && !Menu_SearchDatabase.Checked) { WinFormsUtil.Alert("No data source to search!", "No results found!"); } else { WinFormsUtil.Alert("No results found!"); } } setResults(new List <PKM>(results)); // updates Count Label as well. System.Media.SystemSounds.Asterisk.Play(); }
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 = WinFormsUtil.getIndex(CB_Region); SAV.Country = WinFormsUtil.getIndex(CB_Country); SAV.ConsoleRegion = WinFormsUtil.getIndex(CB_3DSReg); SAV.Language = WinFormsUtil.getIndex(CB_Language); SAV.AlolaTime = (ulong)WinFormsUtil.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; if (SAV.LastSavedDate.HasValue) { SAV.LastSavedDate = new DateTime(CAL_LastSavedDate.Value.Year, CAL_LastSavedDate.Value.Month, CAL_LastSavedDate.Value.Day, CAL_LastSavedTime.Value.Hour, CAL_LastSavedTime.Value.Minute, 0); } 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); // Skin changed && (gender matches || override) int gender = CB_Gender.SelectedIndex & 1; int skin = CB_SkinColor.SelectedIndex & 1; string gStr = CB_Gender.Items[gender].ToString(); string sStr = CB_Gender.Items[skin].ToString(); if (SAV.DressUpSkinColor != CB_SkinColor.SelectedIndex && (SAV.Gender == skin || DialogResult.Yes != WinFormsUtil.Prompt(MessageBoxButtons.YesNo, $"Gender-Skin mismatch:\nGender: {gStr}, Skin: {sStr}", "Save selected Skin Color?"))) { SAV.DressUpSkinColor = CB_SkinColor.SelectedIndex; } SAV.FestivalPlazaName = TB_PlazaName.Text; // Vivillon if (CB_Vivillon.SelectedIndex >= 0) { SAV.Vivillon = CB_Vivillon.SelectedIndex; } SAV.DaysFromRefreshed = (byte)NUD_DaysFromRefreshed.Value; }
private PKM preparePK1() { PK1 pk1 = pkm as PK1; if (pk1 == null) { return(null); } pk1.Species = WinFormsUtil.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 = WinFormsUtil.getIndex(CB_Move1); pk1.Move2 = WinFormsUtil.getIndex(CB_Move2); pk1.Move3 = WinFormsUtil.getIndex(CB_Move3); pk1.Move4 = WinFormsUtil.getIndex(CB_Move4); pk1.Move1_PP = WinFormsUtil.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; pk1.Move2_PP = WinFormsUtil.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; pk1.Move3_PP = WinFormsUtil.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; pk1.Move4_PP = WinFormsUtil.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; pk1.Move1_PPUps = WinFormsUtil.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; pk1.Move2_PPUps = WinFormsUtil.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; pk1.Move3_PPUps = WinFormsUtil.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; pk1.Move4_PPUps = WinFormsUtil.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 PKM preparePK5() { PK5 pk5 = pkm as PK5; if (pk5 == null) { return(null); } pk5.Species = WinFormsUtil.getIndex(CB_Species); pk5.HeldItem = WinFormsUtil.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)WinFormsUtil.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 = WinFormsUtil.getIndex(CB_Move1); pk5.Move2 = WinFormsUtil.getIndex(CB_Move2); pk5.Move3 = WinFormsUtil.getIndex(CB_Move3); pk5.Move4 = WinFormsUtil.getIndex(CB_Move4); pk5.Move1_PP = WinFormsUtil.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; pk5.Move2_PP = WinFormsUtil.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; pk5.Move3_PP = WinFormsUtil.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; pk5.Move4_PP = WinFormsUtil.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; pk5.Move1_PPUps = WinFormsUtil.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; pk5.Move2_PPUps = WinFormsUtil.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; pk5.Move3_PPUps = WinFormsUtil.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; pk5.Move4_PPUps = WinFormsUtil.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 = WinFormsUtil.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 = WinFormsUtil.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 = WinFormsUtil.getIndex(CB_Ball); pk5.Met_Level = Util.ToInt32(TB_MetLevel.Text); pk5.OT_Gender = PKX.getGender(Label_OTGender.Text); pk5.EncounterType = WinFormsUtil.getIndex(CB_EncounterType); pk5.Version = WinFormsUtil.getIndex(CB_GameOrigin); pk5.Language = WinFormsUtil.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)WinFormsUtil.getIndex(DEV_Ability); pk5.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); } else { pk5.Ability = (byte)Array.IndexOf(GameInfo.Strings.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 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 = WinFormsUtil.getIndex(CB_Region); SAV.Country = WinFormsUtil.getIndex(CB_Country); SAV.ConsoleRegion = WinFormsUtil.getIndex(CB_3DSReg); SAV.Language = WinFormsUtil.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.MultiplayerSpriteID = 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); SAV.OT_Nick = TB_TRNick.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; if (SAV.LastSavedDate.HasValue) { SAV.LastSavedDate = new DateTime(CAL_LastSavedDate.Value.Year, CAL_LastSavedDate.Value.Month, CAL_LastSavedDate.Value.Day, CAL_LastSavedTime.Value.Hour, CAL_LastSavedTime.Value.Minute, 0); } }
private void changeMemory(object sender, EventArgs e) { ComboBox m = (ComboBox)sender; if (m == CB_CTMemory || m == CB_OTMemory) { int memory = WinFormsUtil.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, pkm.OT_Name); RTB_CT.Text = getMemoryString(CB_CTMemory, CB_CTVar, CB_CTQual, CB_CTFeel, pkm.HT_Name); }
private void Write_Entry(object sender, EventArgs e) { if (!editing) { return; //Don't do writing until loaded } Validate_TextBoxes(); int index = LB_DataEntry.SelectedIndex; int partymember = Convert.ToInt32(NUP_PartyIndex.Value) - 1; int offset = index * 0x1B4 + partymember * 0x48; BitConverter.GetBytes(Convert.ToUInt16(CB_Species.SelectedValue)).CopyTo(data, offset + 0x00); BitConverter.GetBytes(Convert.ToUInt16(CB_HeldItem.SelectedValue)).CopyTo(data, offset + 0x02); BitConverter.GetBytes(Convert.ToUInt16(CB_Move1.SelectedValue)).CopyTo(data, offset + 0x04); BitConverter.GetBytes(Convert.ToUInt16(CB_Move2.SelectedValue)).CopyTo(data, offset + 0x06); BitConverter.GetBytes(Convert.ToUInt16(CB_Move3.SelectedValue)).CopyTo(data, offset + 0x08); BitConverter.GetBytes(Convert.ToUInt16(CB_Move4.SelectedValue)).CopyTo(data, offset + 0x0A); BitConverter.GetBytes(Convert.ToUInt32(TB_EC.Text, 16)).CopyTo(data, offset + 0x0C); BitConverter.GetBytes(Convert.ToUInt16(TB_TID.Text)).CopyTo(data, offset + 0x10); BitConverter.GetBytes(Convert.ToUInt16(TB_SID.Text)).CopyTo(data, offset + 0x12); 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 + 0x14, 2); uint nick = 0; if (CHK_Nicknamed.Checked) { nick = 1; } Array.Copy(BitConverter.GetBytes(nick), 0, data, offset + 0x16, 2); //Mimic in-game behavior of not clearing strings. It's awful, but accuracy > good. string pk = TB_Nickname.Text; if (pk.Length != 12) { pk = pk.PadRight(pk.Length + 1, '\0'); } string ot = TB_OT.Text; if (ot.Length != 12) { ot = ot.PadRight(pk.Length + 1, '\0'); } Encoding.Unicode.GetBytes(pk).CopyTo(data, offset + 0x18); Encoding.Unicode.GetBytes(ot).CopyTo(data, offset + 0x30); 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 = PKMUtil.getSprite(WinFormsUtil.getIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.getGender(Label_Gender.Text), WinFormsUtil.getIndex(CB_HeldItem), false, CHK_Shiny.Checked); displayEntry(null, null); // refresh text view }
private PKM preparePK7() { PK7 pk7 = pkm as PK7; if (pk7 == null) { return(null); } // Repopulate PK6 with Edited Stuff if (WinFormsUtil.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"); } } pk7.EncryptionConstant = Util.getHEXval(TB_EC.Text); pk7.Checksum = 0; // 0 CHK for now // Block A pk7.Species = WinFormsUtil.getIndex(CB_Species); pk7.HeldItem = WinFormsUtil.getIndex(CB_HeldItem); pk7.TID = Util.ToInt32(TB_TID.Text); pk7.SID = Util.ToInt32(TB_SID.Text); pk7.EXP = Util.ToUInt32(TB_EXP.Text); string selectedAbility = (string)CB_Ability.SelectedItem; pk7.Ability = (byte)Array.IndexOf(GameInfo.Strings.abilitylist, (selectedAbility != "" && selectedAbility != null) ? selectedAbility.Remove(selectedAbility.Length - 4) : "(None)"); pk7.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number // pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag) pk7.PID = Util.getHEXval(TB_PID.Text); pk7.Nature = (byte)WinFormsUtil.getIndex(CB_Nature); pk7.FatefulEncounter = CHK_Fateful.Checked; pk7.Gender = PKX.getGender(Label_Gender.Text); pk7.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; pk7.EV_HP = Util.ToInt32(TB_HPEV.Text); // EVs pk7.EV_ATK = Util.ToInt32(TB_ATKEV.Text); pk7.EV_DEF = Util.ToInt32(TB_DEFEV.Text); pk7.EV_SPE = Util.ToInt32(TB_SPEEV.Text); pk7.EV_SPA = Util.ToInt32(TB_SPAEV.Text); pk7.EV_SPD = Util.ToInt32(TB_SPDEV.Text); pk7.CNT_Cool = Util.ToInt32(TB_Cool.Text); // CNT pk7.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); pk7.CNT_Cute = Util.ToInt32(TB_Cute.Text); pk7.CNT_Smart = Util.ToInt32(TB_Smart.Text); pk7.CNT_Tough = Util.ToInt32(TB_Tough.Text); pk7.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); pk7.PKRS_Days = CB_PKRSDays.SelectedIndex; pk7.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 pk7.Nickname = TB_Nickname.Text; pk7.Move1 = WinFormsUtil.getIndex(CB_Move1); pk7.Move2 = WinFormsUtil.getIndex(CB_Move2); pk7.Move3 = WinFormsUtil.getIndex(CB_Move3); pk7.Move4 = WinFormsUtil.getIndex(CB_Move4); pk7.Move1_PP = WinFormsUtil.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; pk7.Move2_PP = WinFormsUtil.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; pk7.Move3_PP = WinFormsUtil.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; pk7.Move4_PP = WinFormsUtil.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; pk7.Move1_PPUps = WinFormsUtil.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; pk7.Move2_PPUps = WinFormsUtil.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; pk7.Move3_PPUps = WinFormsUtil.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; pk7.Move4_PPUps = WinFormsUtil.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; pk7.RelearnMove1 = WinFormsUtil.getIndex(CB_RelearnMove1); pk7.RelearnMove2 = WinFormsUtil.getIndex(CB_RelearnMove2); pk7.RelearnMove3 = WinFormsUtil.getIndex(CB_RelearnMove3); pk7.RelearnMove4 = WinFormsUtil.getIndex(CB_RelearnMove4); // 0x72 - Ribbon editor sets this flag (Secret Super Training) // 0x73 pk7.IV_HP = Util.ToInt32(TB_HPIV.Text); pk7.IV_ATK = Util.ToInt32(TB_ATKIV.Text); pk7.IV_DEF = Util.ToInt32(TB_DEFIV.Text); pk7.IV_SPE = Util.ToInt32(TB_SPEIV.Text); pk7.IV_SPA = Util.ToInt32(TB_SPAIV.Text); pk7.IV_SPD = Util.ToInt32(TB_SPDIV.Text); pk7.IsEgg = CHK_IsEgg.Checked; pk7.IsNicknamed = CHK_Nicknamed.Checked; // Block C pk7.HT_Name = TB_OTt2.Text; // 0x90-0xAF pk7.HT_Gender = PKX.getGender(Label_CTGender.Text) & 1; // Plus more, set by MemoryAmie (already in buff) // Block D pk7.OT_Name = TB_OT.Text; pk7.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 = WinFormsUtil.getIndex(CB_EggLocation); } // Egg Met Data pk7.EggMetDate = egg_date; pk7.Egg_Location = egg_location; // Met Data pk7.MetDate = CAL_MetDate.Value; pk7.Met_Location = WinFormsUtil.getIndex(CB_MetLocation); if (pk7.IsEgg && pk7.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! { pk7.MetDate = null; } // 0xD7 Unknown pk7.Ball = WinFormsUtil.getIndex(CB_Ball); pk7.Met_Level = Util.ToInt32(TB_MetLevel.Text); pk7.OT_Gender = PKX.getGender(Label_OTGender.Text); pk7.EncounterType = WinFormsUtil.getIndex(CB_EncounterType); pk7.Version = WinFormsUtil.getIndex(CB_GameOrigin); pk7.Country = WinFormsUtil.getIndex(CB_Country); pk7.Region = WinFormsUtil.getIndex(CB_SubRegion); pk7.ConsoleRegion = WinFormsUtil.getIndex(CB_3DSReg); pk7.Language = WinFormsUtil.getIndex(CB_Language); // 0xE4-0xE7 // Toss in Party Stats Array.Resize(ref pk7.Data, pk7.SIZE_PARTY); pk7.Stat_Level = Util.ToInt32(TB_Level.Text); pk7.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); pk7.Stat_HPMax = Util.ToInt32(Stat_HP.Text); pk7.Stat_ATK = Util.ToInt32(Stat_ATK.Text); pk7.Stat_DEF = Util.ToInt32(Stat_DEF.Text); pk7.Stat_SPE = Util.ToInt32(Stat_SPE.Text); pk7.Stat_SPA = Util.ToInt32(Stat_SPA.Text); pk7.Stat_SPD = Util.ToInt32(Stat_SPD.Text); // Unneeded Party Stats (Status, Flags, Unused) pk7.Data[0xE8] = pk7.Data[0xE9] = pk7.Data[0xEA] = pk7.Data[0xEB] = pk7.Data[0xED] = pk7.Data[0xEE] = pk7.Data[0xEF] = pk7.Data[0xFE] = pk7.Data[0xFF] = pk7.Data[0x100] = pk7.Data[0x101] = pk7.Data[0x102] = pk7.Data[0x103] = 0; // Hax Illegality if (HaX) { pk7.Ability = (byte)WinFormsUtil.getIndex(DEV_Ability); pk7.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); } // Fix Moves if a slot is empty pk7.FixMoves(); pk7.FixRelearn(); // Fix Handler (Memories & OT) -- no foreign memories for Pokemon without a foreign trainer (none for eggs) if (Menu_ModifyPKM.Checked) { pk7.FixMemories(); } // PKX is now filled pk7.RefreshChecksum(); return(pk7); }
private PKM preparePK2() { PK2 pk2 = pkm as PK2; if (pk2 == null) { return(null); } pk2.Species = WinFormsUtil.getIndex(CB_Species); pk2.TID = Util.ToInt32(TB_TID.Text); pk2.EXP = Util.ToUInt32(TB_EXP.Text); pk2.HeldItem = WinFormsUtil.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 = WinFormsUtil.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 = WinFormsUtil.getIndex(CB_Move1); pk2.Move2 = WinFormsUtil.getIndex(CB_Move2); pk2.Move3 = WinFormsUtil.getIndex(CB_Move3); pk2.Move4 = WinFormsUtil.getIndex(CB_Move4); pk2.Move1_PP = WinFormsUtil.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; pk2.Move2_PP = WinFormsUtil.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; pk2.Move3_PP = WinFormsUtil.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; pk2.Move4_PP = WinFormsUtil.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; pk2.Move1_PPUps = WinFormsUtil.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; pk2.Move2_PPUps = WinFormsUtil.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; pk2.Move3_PPUps = WinFormsUtil.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; pk2.Move4_PPUps = WinFormsUtil.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); }
// 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 = WinFormsUtil.getIndex(CB_Species); int item = WinFormsUtil.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 = WinFormsUtil.getIndex(CB_Move1); int move2 = WinFormsUtil.getIndex(CB_Move2); int move3 = WinFormsUtil.getIndex(CB_Move3); int move4 = WinFormsUtil.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))) { WinFormsUtil.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) { WinFormsUtil.Alert("No results found!"); } setResults(new List <MysteryGift>(results)); // updates Count Label as well. System.Media.SystemSounds.Asterisk.Play(); }
private PKM preparePK3() { PK3 pk3 = pkm as PK3; if (pk3 == null) { return(null); } pk3.Species = WinFormsUtil.getIndex(CB_Species); pk3.HeldItem = WinFormsUtil.getIndex(CB_HeldItem); pk3.TID = Util.ToInt32(TB_TID.Text); pk3.SID = Util.ToInt32(TB_SID.Text); pk3.EXP = Util.ToUInt32(TB_EXP.Text); pk3.PID = Util.getHEXval(TB_PID.Text); pk3.AbilityNumber = 1 << CB_Ability.SelectedIndex; // to match gen6+ pk3.FatefulEncounter = CHK_Fateful.Checked; pk3.Gender = PKX.getGender(Label_Gender.Text); pk3.EV_HP = Util.ToInt32(TB_HPEV.Text); pk3.EV_ATK = Util.ToInt32(TB_ATKEV.Text); pk3.EV_DEF = Util.ToInt32(TB_DEFEV.Text); pk3.EV_SPE = Util.ToInt32(TB_SPEEV.Text); pk3.EV_SPA = Util.ToInt32(TB_SPAEV.Text); pk3.EV_SPD = Util.ToInt32(TB_SPDEV.Text); pk3.CNT_Cool = Util.ToInt32(TB_Cool.Text); pk3.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); pk3.CNT_Cute = Util.ToInt32(TB_Cute.Text); pk3.CNT_Smart = Util.ToInt32(TB_Smart.Text); pk3.CNT_Tough = Util.ToInt32(TB_Tough.Text); pk3.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); pk3.PKRS_Days = CB_PKRSDays.SelectedIndex; pk3.PKRS_Strain = CB_PKRSStrain.SelectedIndex; pk3.Nickname = TB_Nickname.Text; pk3.Move1 = WinFormsUtil.getIndex(CB_Move1); pk3.Move2 = WinFormsUtil.getIndex(CB_Move2); pk3.Move3 = WinFormsUtil.getIndex(CB_Move3); pk3.Move4 = WinFormsUtil.getIndex(CB_Move4); pk3.Move1_PP = WinFormsUtil.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; pk3.Move2_PP = WinFormsUtil.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; pk3.Move3_PP = WinFormsUtil.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; pk3.Move4_PP = WinFormsUtil.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; pk3.Move1_PPUps = WinFormsUtil.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; pk3.Move2_PPUps = WinFormsUtil.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; pk3.Move3_PPUps = WinFormsUtil.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; pk3.Move4_PPUps = WinFormsUtil.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; pk3.IV_HP = Util.ToInt32(TB_HPIV.Text); pk3.IV_ATK = Util.ToInt32(TB_ATKIV.Text); pk3.IV_DEF = Util.ToInt32(TB_DEFIV.Text); pk3.IV_SPE = Util.ToInt32(TB_SPEIV.Text); pk3.IV_SPA = Util.ToInt32(TB_SPAIV.Text); pk3.IV_SPD = Util.ToInt32(TB_SPDIV.Text); pk3.IsEgg = CHK_IsEgg.Checked; pk3.IsNicknamed = CHK_Nicknamed.Checked; pk3.OT_Name = TB_OT.Text; pk3.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); pk3.Ball = WinFormsUtil.getIndex(CB_Ball); pk3.Met_Level = Util.ToInt32(TB_MetLevel.Text); pk3.OT_Gender = PKX.getGender(Label_OTGender.Text); pk3.Version = WinFormsUtil.getIndex(CB_GameOrigin); pk3.Language = WinFormsUtil.getIndex(CB_Language); pk3.Met_Location = WinFormsUtil.getIndex(CB_MetLocation); // Toss in Party Stats Array.Resize(ref pk3.Data, pk3.SIZE_PARTY); pk3.Stat_Level = Util.ToInt32(TB_Level.Text); pk3.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); pk3.Stat_HPMax = Util.ToInt32(Stat_HP.Text); pk3.Stat_ATK = Util.ToInt32(Stat_ATK.Text); pk3.Stat_DEF = Util.ToInt32(Stat_DEF.Text); pk3.Stat_SPE = Util.ToInt32(Stat_SPE.Text); pk3.Stat_SPA = Util.ToInt32(Stat_SPA.Text); pk3.Stat_SPD = Util.ToInt32(Stat_SPD.Text); if (HaX) { pk3.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); } // Fix Moves if a slot is empty pk3.FixMoves(); pk3.RefreshChecksum(); return(pk3); }