From 171ab7b85f41edb7e1ce77be0d239f5a4159260d Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 9 Jul 2016 16:17:55 -0700 Subject: [PATCH] Split out pk# population/retrieval --- MainWindow/Main.cs | 1007 ----------------------------------------- MainWindow/MainPK3.cs | 194 ++++++++ MainWindow/MainPK4.cs | 247 ++++++++++ MainWindow/MainPK5.cs | 260 +++++++++++ MainWindow/MainPK6.cs | 342 ++++++++++++++ 5 files changed, 1043 insertions(+), 1007 deletions(-) create mode 100644 MainWindow/MainPK3.cs create mode 100644 MainWindow/MainPK4.cs create mode 100644 MainWindow/MainPK5.cs create mode 100644 MainWindow/MainPK6.cs diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index 61c26cd8d..23dc5bd9c 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1092,504 +1092,6 @@ public void populateFields(PKM pk, bool focus = true) dragout.Image = pk.Sprite; updateLegality(); } - private void populateFieldsPK3() - { - PK3 pk3 = pkm as PK3; - if (pk3 == null) - return; - - // Do first - pk3.Stat_Level = PKX.getLevel(pk3.Species, pk3.EXP); - if (pk3.Stat_Level == 100) - pk3.EXP = PKX.getEXP(pk3.Stat_Level, pk3.Species); - - CB_Species.SelectedValue = pk3.Species; - TB_Level.Text = pk3.Stat_Level.ToString(); - TB_EXP.Text = pk3.EXP.ToString(); - - // Load rest - CHK_Fateful.Checked = pk3.FatefulEncounter; - CHK_IsEgg.Checked = pk3.IsEgg; - CHK_Nicknamed.Checked = pk3.IsNicknamed; - Label_OTGender.Text = gendersymbols[pk3.OT_Gender]; - Label_OTGender.ForeColor = pk3.OT_Gender == 1 ? Color.Red : Color.Blue; - TB_PID.Text = pk3.PID.ToString("X8"); - CB_HeldItem.SelectedValue = pk3.G3Item; - setAbilityList(); - int[] abils = PKX.getAbilities(pk3.Species, 0); - int abil = Array.IndexOf(abils, pk3.Ability); - CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; - CB_Nature.SelectedValue = pk3.Nature; - TB_TID.Text = pk3.TID.ToString("00000"); - TB_SID.Text = pk3.SID.ToString("00000"); - TB_Nickname.Text = pk3.Nickname; - TB_OT.Text = pk3.OT_Name; - TB_Friendship.Text = pk3.CurrentFriendship.ToString(); - GB_OT.BackgroundImage = null; - CB_Language.SelectedValue = pk3.Language; - CB_GameOrigin.SelectedValue = pk3.Version; - CB_EncounterType.SelectedValue = pk3.Gen4 ? pk3.EncounterType : 0; - CB_Ball.SelectedValue = pk3.Ball; - - CB_MetLocation.SelectedValue = pk3.Met_Location; - - TB_MetLevel.Text = pk3.Met_Level.ToString(); - - // Reset Label and ComboBox visibility, as well as non-data checked status. - Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk3.PKRS_Strain != 0; - Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk3.PKRS_Days != 0; - - // Set SelectedIndexes for PKRS - CB_PKRSStrain.SelectedIndex = pk3.PKRS_Strain; - CHK_Cured.Checked = pk3.PKRS_Strain > 0 && pk3.PKRS_Days == 0; - CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk3.PKRS_Days); // to strip out bad hacked 'rus - - TB_Cool.Text = pk3.CNT_Cool.ToString(); - TB_Beauty.Text = pk3.CNT_Beauty.ToString(); - TB_Cute.Text = pk3.CNT_Cute.ToString(); - TB_Smart.Text = pk3.CNT_Smart.ToString(); - TB_Tough.Text = pk3.CNT_Tough.ToString(); - TB_Sheen.Text = pk3.CNT_Sheen.ToString(); - - TB_HPIV.Text = pk3.IV_HP.ToString(); - TB_ATKIV.Text = pk3.IV_ATK.ToString(); - TB_DEFIV.Text = pk3.IV_DEF.ToString(); - TB_SPEIV.Text = pk3.IV_SPE.ToString(); - TB_SPAIV.Text = pk3.IV_SPA.ToString(); - TB_SPDIV.Text = pk3.IV_SPD.ToString(); - CB_HPType.SelectedValue = pk3.HPType; - - TB_HPEV.Text = pk3.EV_HP.ToString(); - TB_ATKEV.Text = pk3.EV_ATK.ToString(); - TB_DEFEV.Text = pk3.EV_DEF.ToString(); - TB_SPEEV.Text = pk3.EV_SPE.ToString(); - TB_SPAEV.Text = pk3.EV_SPA.ToString(); - TB_SPDEV.Text = pk3.EV_SPD.ToString(); - - CB_Move1.SelectedValue = pk3.Move1; - CB_Move2.SelectedValue = pk3.Move2; - CB_Move3.SelectedValue = pk3.Move3; - CB_Move4.SelectedValue = pk3.Move4; - CB_PPu1.SelectedIndex = pk3.Move1_PPUps; - CB_PPu2.SelectedIndex = pk3.Move2_PPUps; - CB_PPu3.SelectedIndex = pk3.Move3_PPUps; - CB_PPu4.SelectedIndex = pk3.Move4_PPUps; - TB_PP1.Text = pk3.Move1_PP.ToString(); - TB_PP2.Text = pk3.Move2_PP.ToString(); - TB_PP3.Text = pk3.Move3_PP.ToString(); - TB_PP4.Text = pk3.Move4_PP.ToString(); - - // Load Extrabyte Value - TB_ExtraByte.Text = pk3.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); - - updateStats(); - setIsShiny(); - - TB_EXP.Text = pk3.EXP.ToString(); - Label_Gender.Text = gendersymbols[pk3.Gender]; - Label_Gender.ForeColor = pk3.Gender == 2 ? Label_Species.ForeColor : (pk3.Gender == 1 ? Color.Red : Color.Blue); - } - private void populateFieldsPK4() - { - PK4 pk4 = pkm as PK4; - if (pk4 == null) - return; - - // Do first - pk4.Stat_Level = PKX.getLevel(pk4.Species, pk4.EXP); - if (pk4.Stat_Level == 100) - pk4.EXP = PKX.getEXP(pk4.Stat_Level, pk4.Species); - - CB_Species.SelectedValue = pk4.Species; - TB_Level.Text = pk4.Stat_Level.ToString(); - TB_EXP.Text = pk4.EXP.ToString(); - - // Load rest - CHK_Fateful.Checked = pk4.FatefulEncounter; - CHK_IsEgg.Checked = pk4.IsEgg; - CHK_Nicknamed.Checked = pk4.IsNicknamed; - Label_OTGender.Text = gendersymbols[pk4.OT_Gender]; - Label_OTGender.ForeColor = pk4.OT_Gender == 1 ? Color.Red : Color.Blue; - TB_PID.Text = pk4.PID.ToString("X8"); - CB_HeldItem.SelectedValue = pk4.HeldItem; - setAbilityList(); - CB_Nature.SelectedValue = pk4.Nature; - TB_TID.Text = pk4.TID.ToString("00000"); - TB_SID.Text = pk4.SID.ToString("00000"); - TB_Nickname.Text = pk4.Nickname; - TB_OT.Text = pk4.OT_Name; - TB_Friendship.Text = pk4.CurrentFriendship.ToString(); - GB_OT.BackgroundImage = null; - CB_Language.SelectedValue = pk4.Language; - CB_GameOrigin.SelectedValue = pk4.Version; - CB_EncounterType.SelectedValue = pk4.Gen4 ? pk4.EncounterType : 0; - CB_Ball.SelectedValue = pk4.Ball; - - if (pk4.Met_Month == 0) { pk4.Met_Month = 1; } - if (pk4.Met_Day == 0) { pk4.Met_Day = 1; } - try { CAL_MetDate.Value = new DateTime(pk4.Met_Year + 2000, pk4.Met_Month, pk4.Met_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - - if (pk4.Egg_Location != 0) - { - // Was obtained initially as an egg. - CHK_AsEgg.Checked = true; - GB_EggConditions.Enabled = true; - - CB_EggLocation.SelectedValue = pk4.Egg_Location; - try { CAL_EggDate.Value = new DateTime(pk4.Egg_Year + 2000, pk4.Egg_Month, pk4.Egg_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - } - else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } - - CB_MetLocation.SelectedValue = pk4.Met_Location; - - TB_MetLevel.Text = pk4.Met_Level.ToString(); - - // Reset Label and ComboBox visibility, as well as non-data checked status. - Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk4.PKRS_Strain != 0; - Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk4.PKRS_Days != 0; - - // Set SelectedIndexes for PKRS - CB_PKRSStrain.SelectedIndex = pk4.PKRS_Strain; - CHK_Cured.Checked = pk4.PKRS_Strain > 0 && pk4.PKRS_Days == 0; - CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk4.PKRS_Days); // to strip out bad hacked 'rus - - TB_Cool.Text = pk4.CNT_Cool.ToString(); - TB_Beauty.Text = pk4.CNT_Beauty.ToString(); - TB_Cute.Text = pk4.CNT_Cute.ToString(); - TB_Smart.Text = pk4.CNT_Smart.ToString(); - TB_Tough.Text = pk4.CNT_Tough.ToString(); - TB_Sheen.Text = pk4.CNT_Sheen.ToString(); - - TB_HPIV.Text = pk4.IV_HP.ToString(); - TB_ATKIV.Text = pk4.IV_ATK.ToString(); - TB_DEFIV.Text = pk4.IV_DEF.ToString(); - TB_SPEIV.Text = pk4.IV_SPE.ToString(); - TB_SPAIV.Text = pk4.IV_SPA.ToString(); - TB_SPDIV.Text = pk4.IV_SPD.ToString(); - CB_HPType.SelectedValue = pk4.HPType; - - TB_HPEV.Text = pk4.EV_HP.ToString(); - TB_ATKEV.Text = pk4.EV_ATK.ToString(); - TB_DEFEV.Text = pk4.EV_DEF.ToString(); - TB_SPEEV.Text = pk4.EV_SPE.ToString(); - TB_SPAEV.Text = pk4.EV_SPA.ToString(); - TB_SPDEV.Text = pk4.EV_SPD.ToString(); - - CB_Move1.SelectedValue = pk4.Move1; - CB_Move2.SelectedValue = pk4.Move2; - CB_Move3.SelectedValue = pk4.Move3; - CB_Move4.SelectedValue = pk4.Move4; - CB_PPu1.SelectedIndex = pk4.Move1_PPUps; - CB_PPu2.SelectedIndex = pk4.Move2_PPUps; - CB_PPu3.SelectedIndex = pk4.Move3_PPUps; - CB_PPu4.SelectedIndex = pk4.Move4_PPUps; - TB_PP1.Text = pk4.Move1_PP.ToString(); - TB_PP2.Text = pk4.Move2_PP.ToString(); - TB_PP3.Text = pk4.Move3_PP.ToString(); - TB_PP4.Text = pk4.Move4_PP.ToString(); - - // Set Form if count is enough, else cap. - CB_Form.SelectedIndex = CB_Form.Items.Count > pk4.AltForm ? pk4.AltForm : CB_Form.Items.Count - 1; - - // Load Extrabyte Value - TB_ExtraByte.Text = pk4.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); - - updateStats(); - setIsShiny(); - - TB_EXP.Text = pk4.EXP.ToString(); - Label_Gender.Text = gendersymbols[pk4.Gender]; - Label_Gender.ForeColor = pk4.Gender == 2 ? Label_Species.ForeColor : (pk4.Gender == 1 ? Color.Red : Color.Blue); - - if (HaX) - DEV_Ability.SelectedValue = pk4.Ability; - else - { - int[] abils = PKX.getAbilities(pk4.Species, pk4.AltForm); - int abil = Array.IndexOf(abils, pk4.Ability); - CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; - } - } - private void populateFieldsPK5() - { - PK5 pk5 = pkm as PK5; - if (pk5 == null) - return; - - // Do first - pk5.Stat_Level = PKX.getLevel(pk5.Species, pk5.EXP); - if (pk5.Stat_Level == 100) - pk5.EXP = PKX.getEXP(pk5.Stat_Level, pk5.Species); - - CB_Species.SelectedValue = pk5.Species; - TB_Level.Text = pk5.Stat_Level.ToString(); - TB_EXP.Text = pk5.EXP.ToString(); - - // Load rest - CHK_Fateful.Checked = pk5.FatefulEncounter; - CHK_IsEgg.Checked = pk5.IsEgg; - CHK_Nicknamed.Checked = pk5.IsNicknamed; - Label_OTGender.Text = gendersymbols[pk5.OT_Gender]; - Label_OTGender.ForeColor = pk5.OT_Gender == 1 ? Color.Red : Color.Blue; - TB_PID.Text = pk5.PID.ToString("X8"); - CB_HeldItem.SelectedValue = pk5.HeldItem; - setAbilityList(); - CB_Nature.SelectedValue = pk5.Nature; - TB_TID.Text = pk5.TID.ToString("00000"); - TB_SID.Text = pk5.SID.ToString("00000"); - TB_Nickname.Text = pk5.Nickname; - TB_OT.Text = pk5.OT_Name; - TB_Friendship.Text = pk5.CurrentFriendship.ToString(); - if (pk5.CurrentHandler == 1) // HT - { - GB_nOT.BackgroundImage = mixedHighlight; - GB_OT.BackgroundImage = null; - } - else // = 0 - { - GB_OT.BackgroundImage = mixedHighlight; - GB_nOT.BackgroundImage = null; - } - CB_Language.SelectedValue = pk5.Language; - CB_GameOrigin.SelectedValue = pk5.Version; - CB_EncounterType.SelectedValue = pk5.Gen4 ? pk5.EncounterType : 0; - CB_Ball.SelectedValue = pk5.Ball; - - if (pk5.Met_Month == 0) { pk5.Met_Month = 1; } - if (pk5.Met_Day == 0) { pk5.Met_Day = 1; } - try { CAL_MetDate.Value = new DateTime(pk5.Met_Year + 2000, pk5.Met_Month, pk5.Met_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - - if (pk5.Egg_Location != 0) - { - // Was obtained initially as an egg. - CHK_AsEgg.Checked = true; - GB_EggConditions.Enabled = true; - - CB_EggLocation.SelectedValue = pk5.Egg_Location; - try { CAL_EggDate.Value = new DateTime(pk5.Egg_Year + 2000, pk5.Egg_Month, pk5.Egg_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - } - else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } - - CB_MetLocation.SelectedValue = pk5.Met_Location; - - TB_MetLevel.Text = pk5.Met_Level.ToString(); - - // Reset Label and ComboBox visibility, as well as non-data checked status. - Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk5.PKRS_Strain != 0; - Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk5.PKRS_Days != 0; - - // Set SelectedIndexes for PKRS - CB_PKRSStrain.SelectedIndex = pk5.PKRS_Strain; - CHK_Cured.Checked = pk5.PKRS_Strain > 0 && pk5.PKRS_Days == 0; - CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk5.PKRS_Days); // to strip out bad hacked 'rus - - TB_Cool.Text = pk5.CNT_Cool.ToString(); - TB_Beauty.Text = pk5.CNT_Beauty.ToString(); - TB_Cute.Text = pk5.CNT_Cute.ToString(); - TB_Smart.Text = pk5.CNT_Smart.ToString(); - TB_Tough.Text = pk5.CNT_Tough.ToString(); - TB_Sheen.Text = pk5.CNT_Sheen.ToString(); - - TB_HPIV.Text = pk5.IV_HP.ToString(); - TB_ATKIV.Text = pk5.IV_ATK.ToString(); - TB_DEFIV.Text = pk5.IV_DEF.ToString(); - TB_SPEIV.Text = pk5.IV_SPE.ToString(); - TB_SPAIV.Text = pk5.IV_SPA.ToString(); - TB_SPDIV.Text = pk5.IV_SPD.ToString(); - CB_HPType.SelectedValue = pk5.HPType; - - TB_HPEV.Text = pk5.EV_HP.ToString(); - TB_ATKEV.Text = pk5.EV_ATK.ToString(); - TB_DEFEV.Text = pk5.EV_DEF.ToString(); - TB_SPEEV.Text = pk5.EV_SPE.ToString(); - TB_SPAEV.Text = pk5.EV_SPA.ToString(); - TB_SPDEV.Text = pk5.EV_SPD.ToString(); - - CB_Move1.SelectedValue = pk5.Move1; - CB_Move2.SelectedValue = pk5.Move2; - CB_Move3.SelectedValue = pk5.Move3; - CB_Move4.SelectedValue = pk5.Move4; - CB_PPu1.SelectedIndex = pk5.Move1_PPUps; - CB_PPu2.SelectedIndex = pk5.Move2_PPUps; - CB_PPu3.SelectedIndex = pk5.Move3_PPUps; - CB_PPu4.SelectedIndex = pk5.Move4_PPUps; - TB_PP1.Text = pk5.Move1_PP.ToString(); - TB_PP2.Text = pk5.Move2_PP.ToString(); - TB_PP3.Text = pk5.Move3_PP.ToString(); - TB_PP4.Text = pk5.Move4_PP.ToString(); - - // Set Form if count is enough, else cap. - CB_Form.SelectedIndex = CB_Form.Items.Count > pk5.AltForm ? pk5.AltForm : CB_Form.Items.Count - 1; - - // Load Extrabyte Value - TB_ExtraByte.Text = pk5.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); - - updateStats(); - setIsShiny(); - - TB_EXP.Text = pk5.EXP.ToString(); - Label_Gender.Text = gendersymbols[pk5.Gender]; - Label_Gender.ForeColor = pk5.Gender == 2 ? Label_Species.ForeColor : (pk5.Gender == 1 ? Color.Red : Color.Blue); - - if (HaX) - DEV_Ability.SelectedValue = pk5.Ability; - else if (pk5.HiddenAbility) - CB_Ability.SelectedIndex = CB_Ability.Items.Count - 1; - else - { - int[] abils = PKX.getAbilities(pk5.Species, pk5.AltForm); - int abil = Array.IndexOf(abils, pk5.Ability); - CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; - } - } - private void populateFieldsPK6() - { - PK6 pk6 = pkm as PK6; - if (pk6 == null) - return; - - // Do first - pk6.Stat_Level = PKX.getLevel(pk6.Species, pk6.EXP); - if (pk6.Stat_Level == 100) - pk6.EXP = PKX.getEXP(pk6.Stat_Level, pk6.Species); - - CB_Species.SelectedValue = pk6.Species; - TB_Level.Text = pk6.Stat_Level.ToString(); - TB_EXP.Text = pk6.EXP.ToString(); - - // Load rest - TB_EC.Text = pk6.EncryptionConstant.ToString("X8"); - CHK_Fateful.Checked = pk6.FatefulEncounter; - CHK_IsEgg.Checked = pk6.IsEgg; - CHK_Nicknamed.Checked = pk6.IsNicknamed; - Label_OTGender.Text = gendersymbols[pk6.OT_Gender]; - Label_OTGender.ForeColor = pk6.OT_Gender == 1 ? Color.Red : Color.Blue; - TB_PID.Text = pk6.PID.ToString("X8"); - CB_HeldItem.SelectedValue = pk6.HeldItem; - setAbilityList(); - TB_AbilityNumber.Text = pk6.AbilityNumber.ToString(); - CB_Ability.SelectedIndex = pk6.AbilityNumber < 6 ? pk6.AbilityNumber >> 1 : 0; // with some simple error handling - CB_Nature.SelectedValue = pk6.Nature; - TB_TID.Text = pk6.TID.ToString("00000"); - TB_SID.Text = pk6.SID.ToString("00000"); - TB_Nickname.Text = pk6.Nickname; - TB_OT.Text = pk6.OT_Name; - TB_OTt2.Text = pk6.HT_Name; - TB_Friendship.Text = pk6.CurrentFriendship.ToString(); - if (pk6.CurrentHandler == 1) // HT - { - GB_nOT.BackgroundImage = mixedHighlight; - GB_OT.BackgroundImage = null; - } - else // = 0 - { - GB_OT.BackgroundImage = mixedHighlight; - GB_nOT.BackgroundImage = null; - } - CB_Language.SelectedValue = pk6.Language; - CB_Country.SelectedValue = pk6.Country; - CB_SubRegion.SelectedValue = pk6.Region; - CB_3DSReg.SelectedValue = pk6.ConsoleRegion; - CB_GameOrigin.SelectedValue = pk6.Version; - CB_EncounterType.SelectedValue = pk6.Gen4 ? pk6.EncounterType : 0; - CB_Ball.SelectedValue = pk6.Ball; - - if (pk6.Met_Month == 0) { pk6.Met_Month = 1; } - if (pk6.Met_Day == 0) { pk6.Met_Day = 1; } - try { CAL_MetDate.Value = new DateTime(pk6.Met_Year + 2000, pk6.Met_Month, pk6.Met_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - - if (pk6.Egg_Location != 0) - { - // Was obtained initially as an egg. - CHK_AsEgg.Checked = true; - GB_EggConditions.Enabled = true; - - CB_EggLocation.SelectedValue = pk6.Egg_Location; - try { CAL_EggDate.Value = new DateTime(pk6.Egg_Year + 2000, pk6.Egg_Month, pk6.Egg_Day); } - catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } - } - else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } - - CB_MetLocation.SelectedValue = pk6.Met_Location; - - // Set CT Gender to None if no CT, else set to gender symbol. - Label_CTGender.Text = pk6.HT_Name == "" ? "" : gendersymbols[pk6.HT_Gender % 2]; - Label_CTGender.ForeColor = pk6.HT_Gender == 1 ? Color.Red : Color.Blue; - - TB_MetLevel.Text = pk6.Met_Level.ToString(); - - // Reset Label and ComboBox visibility, as well as non-data checked status. - Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk6.PKRS_Strain != 0; - Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk6.PKRS_Days != 0; - - // Set SelectedIndexes for PKRS - CB_PKRSStrain.SelectedIndex = pk6.PKRS_Strain; - CHK_Cured.Checked = pk6.PKRS_Strain > 0 && pk6.PKRS_Days == 0; - CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk6.PKRS_Days); // to strip out bad hacked 'rus - - TB_Cool.Text = pk6.CNT_Cool.ToString(); - TB_Beauty.Text = pk6.CNT_Beauty.ToString(); - TB_Cute.Text = pk6.CNT_Cute.ToString(); - TB_Smart.Text = pk6.CNT_Smart.ToString(); - TB_Tough.Text = pk6.CNT_Tough.ToString(); - TB_Sheen.Text = pk6.CNT_Sheen.ToString(); - - TB_HPIV.Text = pk6.IV_HP.ToString(); - TB_ATKIV.Text = pk6.IV_ATK.ToString(); - TB_DEFIV.Text = pk6.IV_DEF.ToString(); - TB_SPEIV.Text = pk6.IV_SPE.ToString(); - TB_SPAIV.Text = pk6.IV_SPA.ToString(); - TB_SPDIV.Text = pk6.IV_SPD.ToString(); - CB_HPType.SelectedValue = pk6.HPType; - - TB_HPEV.Text = pk6.EV_HP.ToString(); - TB_ATKEV.Text = pk6.EV_ATK.ToString(); - TB_DEFEV.Text = pk6.EV_DEF.ToString(); - TB_SPEEV.Text = pk6.EV_SPE.ToString(); - TB_SPAEV.Text = pk6.EV_SPA.ToString(); - TB_SPDEV.Text = pk6.EV_SPD.ToString(); - - CB_Move1.SelectedValue = pk6.Move1; - CB_Move2.SelectedValue = pk6.Move2; - CB_Move3.SelectedValue = pk6.Move3; - CB_Move4.SelectedValue = pk6.Move4; - CB_RelearnMove1.SelectedValue = pk6.RelearnMove1; - CB_RelearnMove2.SelectedValue = pk6.RelearnMove2; - CB_RelearnMove3.SelectedValue = pk6.RelearnMove3; - CB_RelearnMove4.SelectedValue = pk6.RelearnMove4; - CB_PPu1.SelectedIndex = pk6.Move1_PPUps; - CB_PPu2.SelectedIndex = pk6.Move2_PPUps; - CB_PPu3.SelectedIndex = pk6.Move3_PPUps; - CB_PPu4.SelectedIndex = pk6.Move4_PPUps; - TB_PP1.Text = pk6.Move1_PP.ToString(); - TB_PP2.Text = pk6.Move2_PP.ToString(); - TB_PP3.Text = pk6.Move3_PP.ToString(); - TB_PP4.Text = pk6.Move4_PP.ToString(); - - // Set Form if count is enough, else cap. - CB_Form.SelectedIndex = CB_Form.Items.Count > pk6.AltForm ? pk6.AltForm : CB_Form.Items.Count - 1; - - // Load Extrabyte Value - TB_ExtraByte.Text = pk6.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); - - updateStats(); - setIsShiny(); - - TB_EXP.Text = pk6.EXP.ToString(); - Label_Gender.Text = gendersymbols[pk6.Gender]; - Label_Gender.ForeColor = pk6.Gender == 2 ? Label_Species.ForeColor : (pk6.Gender == 1 ? Color.Red : Color.Blue); - - // Highlight the Current Handler - clickGT(pk6.CurrentHandler == 1 ? GB_nOT : GB_OT, null); - - if (HaX) - DEV_Ability.SelectedValue = pk6.Ability; - } // General Use Functions shared by other Forms // internal static void setCountrySubRegion(ComboBox CB, string type) @@ -2816,515 +2318,6 @@ public PKM preparePKM(bool click = true) PKM pk = getPKMfromFields(); return pk?.Clone(); } - private PKM preparePK3() - { - PK3 pk3 = pkm as PK3; - if (pk3 == null) - return null; - - pk3.Species = Util.getIndex(CB_Species); - pk3.G3Item = Util.getIndex(CB_HeldItem); - pk3.TID = Util.ToInt32(TB_TID.Text); - pk3.SID = Util.ToInt32(TB_SID.Text); - pk3.EXP = Util.ToUInt32(TB_EXP.Text); - pk3.PID = Util.getHEXval(TB_PID.Text); - pk3.Ability = CB_Ability.SelectedIndex; // 0/1 (stored in IVbits) - - pk3.FatefulEncounter = CHK_Fateful.Checked; - pk3.Gender = PKX.getGender(Label_Gender.Text); - pk3.EV_HP = Util.ToInt32(TB_HPEV.Text); - pk3.EV_ATK = Util.ToInt32(TB_ATKEV.Text); - pk3.EV_DEF = Util.ToInt32(TB_DEFEV.Text); - pk3.EV_SPE = Util.ToInt32(TB_SPEEV.Text); - pk3.EV_SPA = Util.ToInt32(TB_SPAEV.Text); - pk3.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - - pk3.CNT_Cool = Util.ToInt32(TB_Cool.Text); - pk3.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); - pk3.CNT_Cute = Util.ToInt32(TB_Cute.Text); - pk3.CNT_Smart = Util.ToInt32(TB_Smart.Text); - pk3.CNT_Tough = Util.ToInt32(TB_Tough.Text); - pk3.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); - - pk3.PKRS_Days = CB_PKRSDays.SelectedIndex; - pk3.PKRS_Strain = CB_PKRSStrain.SelectedIndex; - pk3.Nickname = TB_Nickname.Text; - pk3.Move1 = Util.getIndex(CB_Move1); - pk3.Move2 = Util.getIndex(CB_Move2); - pk3.Move3 = Util.getIndex(CB_Move3); - pk3.Move4 = Util.getIndex(CB_Move4); - pk3.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; - pk3.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; - pk3.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; - pk3.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; - pk3.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; - pk3.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; - pk3.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; - pk3.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; - - pk3.IV_HP = Util.ToInt32(TB_HPIV.Text); - pk3.IV_ATK = Util.ToInt32(TB_ATKIV.Text); - pk3.IV_DEF = Util.ToInt32(TB_DEFIV.Text); - pk3.IV_SPE = Util.ToInt32(TB_SPEIV.Text); - pk3.IV_SPA = Util.ToInt32(TB_SPAIV.Text); - pk3.IV_SPD = Util.ToInt32(TB_SPDIV.Text); - pk3.IsEgg = CHK_IsEgg.Checked; - pk3.IsNicknamed = CHK_Nicknamed.Checked; - - pk3.OT_Name = TB_OT.Text; - pk3.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - - pk3.Ball = Util.getIndex(CB_Ball); - pk3.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk3.OT_Gender = PKX.getGender(Label_OTGender.Text); - pk3.Version = Util.getIndex(CB_GameOrigin); - pk3.Language = Util.getIndex(CB_Language); - - pk3.Met_Location = Util.getIndex(CB_MetLocation); - - // Toss in Party Stats - Array.Resize(ref pk3.Data, pk3.SIZE_PARTY); - pk3.Stat_Level = Util.ToInt32(TB_Level.Text); - pk3.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); - pk3.Stat_HPMax = Util.ToInt32(Stat_HP.Text); - pk3.Stat_ATK = Util.ToInt32(Stat_ATK.Text); - pk3.Stat_DEF = Util.ToInt32(Stat_DEF.Text); - pk3.Stat_SPE = Util.ToInt32(Stat_SPE.Text); - pk3.Stat_SPA = Util.ToInt32(Stat_SPA.Text); - pk3.Stat_SPD = Util.ToInt32(Stat_SPD.Text); - - if (HaX) - { - pk3.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); - } - - // Fix Moves if a slot is empty - pk3.FixMoves(); - - pk3.RefreshChecksum(); - return pk3; - } - private PKM preparePK4() - { - PK4 pk4 = pkm as PK4; - if (pk4 == null) - return null; - - pk4.Species = Util.getIndex(CB_Species); - pk4.HeldItem = Util.getIndex(CB_HeldItem); - pk4.TID = Util.ToInt32(TB_TID.Text); - pk4.SID = Util.ToInt32(TB_SID.Text); - pk4.EXP = Util.ToUInt32(TB_EXP.Text); - pk4.PID = Util.getHEXval(TB_PID.Text); - pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); - - pk4.FatefulEncounter = CHK_Fateful.Checked; - pk4.Gender = PKX.getGender(Label_Gender.Text); - pk4.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; - pk4.EV_HP = Util.ToInt32(TB_HPEV.Text); - pk4.EV_ATK = Util.ToInt32(TB_ATKEV.Text); - pk4.EV_DEF = Util.ToInt32(TB_DEFEV.Text); - pk4.EV_SPE = Util.ToInt32(TB_SPEEV.Text); - pk4.EV_SPA = Util.ToInt32(TB_SPAEV.Text); - pk4.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - - pk4.CNT_Cool = Util.ToInt32(TB_Cool.Text); - pk4.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); - pk4.CNT_Cute = Util.ToInt32(TB_Cute.Text); - pk4.CNT_Smart = Util.ToInt32(TB_Smart.Text); - pk4.CNT_Tough = Util.ToInt32(TB_Tough.Text); - pk4.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); - - pk4.PKRS_Days = CB_PKRSDays.SelectedIndex; - pk4.PKRS_Strain = CB_PKRSStrain.SelectedIndex; - pk4.Nickname = TB_Nickname.Text; - pk4.Move1 = Util.getIndex(CB_Move1); - pk4.Move2 = Util.getIndex(CB_Move2); - pk4.Move3 = Util.getIndex(CB_Move3); - pk4.Move4 = Util.getIndex(CB_Move4); - pk4.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; - pk4.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; - pk4.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; - pk4.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; - pk4.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; - pk4.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; - pk4.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; - pk4.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; - - pk4.IV_HP = Util.ToInt32(TB_HPIV.Text); - pk4.IV_ATK = Util.ToInt32(TB_ATKIV.Text); - pk4.IV_DEF = Util.ToInt32(TB_DEFIV.Text); - pk4.IV_SPE = Util.ToInt32(TB_SPEIV.Text); - pk4.IV_SPA = Util.ToInt32(TB_SPAIV.Text); - pk4.IV_SPD = Util.ToInt32(TB_SPDIV.Text); - pk4.IsEgg = CHK_IsEgg.Checked; - pk4.IsNicknamed = CHK_Nicknamed.Checked; - - pk4.OT_Name = TB_OT.Text; - pk4.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - - pk4.Ball = Util.getIndex(CB_Ball); - pk4.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk4.OT_Gender = PKX.getGender(Label_OTGender.Text); - pk4.EncounterType = Util.getIndex(CB_EncounterType); - pk4.Version = Util.getIndex(CB_GameOrigin); - pk4.Language = Util.getIndex(CB_Language); - - // Default Dates - int egg_year = 2000; - int egg_month = 0; - int egg_day = 0; - int egg_location = 0; - if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. - { - egg_year = CAL_EggDate.Value.Year; - egg_month = CAL_EggDate.Value.Month; - egg_day = CAL_EggDate.Value.Day; - egg_location = Util.getIndex(CB_EggLocation); - } - // Egg Met Data - pk4.Egg_Year = egg_year - 2000; - pk4.Egg_Month = egg_month; - pk4.Egg_Day = egg_day; - pk4.Egg_Location = egg_location; - // Met Data - pk4.Met_Year = CAL_MetDate.Value.Year - 2000; - pk4.Met_Month = CAL_MetDate.Value.Month; - pk4.Met_Day = CAL_MetDate.Value.Day; - pk4.Met_Location = Util.getIndex(CB_MetLocation); - - if (pk4.IsEgg && pk4.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! - pk4.Met_Year = pk4.Met_Month = pk4.Met_Day = 0; - - // Toss in Party Stats - Array.Resize(ref pk4.Data, pk4.SIZE_PARTY); - pk4.Stat_Level = Util.ToInt32(TB_Level.Text); - pk4.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); - pk4.Stat_HPMax = Util.ToInt32(Stat_HP.Text); - pk4.Stat_ATK = Util.ToInt32(Stat_ATK.Text); - pk4.Stat_DEF = Util.ToInt32(Stat_DEF.Text); - pk4.Stat_SPE = Util.ToInt32(Stat_SPE.Text); - pk4.Stat_SPA = Util.ToInt32(Stat_SPA.Text); - pk4.Stat_SPD = Util.ToInt32(Stat_SPD.Text); - - if (HaX) - { - pk4.Ability = (byte)Util.getIndex(DEV_Ability); - pk4.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); - } - - // Fix Moves if a slot is empty - pk4.FixMoves(); - - pk4.RefreshChecksum(); - return pk4; - } - private PKM preparePK5() - { - PK5 pk5 = pkm as PK5; - if (pk5 == null) - return null; - - pk5.Species = Util.getIndex(CB_Species); - pk5.HeldItem = Util.getIndex(CB_HeldItem); - pk5.TID = Util.ToInt32(TB_TID.Text); - pk5.SID = Util.ToInt32(TB_SID.Text); - pk5.EXP = Util.ToUInt32(TB_EXP.Text); - pk5.PID = Util.getHEXval(TB_PID.Text); - pk5.Ability = (byte)Util.getIndex(DEV_Ability); - pk5.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); - - pk5.Nature = (byte)Util.getIndex(CB_Nature); - pk5.FatefulEncounter = CHK_Fateful.Checked; - pk5.Gender = PKX.getGender(Label_Gender.Text); - pk5.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; - pk5.EV_HP = Util.ToInt32(TB_HPEV.Text); - pk5.EV_ATK = Util.ToInt32(TB_ATKEV.Text); - pk5.EV_DEF = Util.ToInt32(TB_DEFEV.Text); - pk5.EV_SPE = Util.ToInt32(TB_SPEEV.Text); - pk5.EV_SPA = Util.ToInt32(TB_SPAEV.Text); - pk5.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - - pk5.CNT_Cool = Util.ToInt32(TB_Cool.Text); - pk5.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); - pk5.CNT_Cute = Util.ToInt32(TB_Cute.Text); - pk5.CNT_Smart = Util.ToInt32(TB_Smart.Text); - pk5.CNT_Tough = Util.ToInt32(TB_Tough.Text); - pk5.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); - - pk5.PKRS_Days = CB_PKRSDays.SelectedIndex; - pk5.PKRS_Strain = CB_PKRSStrain.SelectedIndex; - pk5.Nickname = TB_Nickname.Text; - pk5.Move1 = Util.getIndex(CB_Move1); - pk5.Move2 = Util.getIndex(CB_Move2); - pk5.Move3 = Util.getIndex(CB_Move3); - pk5.Move4 = Util.getIndex(CB_Move4); - pk5.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; - pk5.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; - pk5.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; - pk5.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; - pk5.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; - pk5.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; - pk5.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; - pk5.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; - - pk5.IV_HP = Util.ToInt32(TB_HPIV.Text); - pk5.IV_ATK = Util.ToInt32(TB_ATKIV.Text); - pk5.IV_DEF = Util.ToInt32(TB_DEFIV.Text); - pk5.IV_SPE = Util.ToInt32(TB_SPEIV.Text); - pk5.IV_SPA = Util.ToInt32(TB_SPAIV.Text); - pk5.IV_SPD = Util.ToInt32(TB_SPDIV.Text); - pk5.IsEgg = CHK_IsEgg.Checked; - pk5.IsNicknamed = CHK_Nicknamed.Checked; - - pk5.OT_Name = TB_OT.Text; - pk5.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - - // Default Dates - int egg_year = 2000; - int egg_month = 0; - int egg_day = 0; - int egg_location = 0; - if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. - { - egg_year = CAL_EggDate.Value.Year; - egg_month = CAL_EggDate.Value.Month; - egg_day = CAL_EggDate.Value.Day; - egg_location = Util.getIndex(CB_EggLocation); - } - // Egg Met Data - pk5.Egg_Year = egg_year - 2000; - pk5.Egg_Month = egg_month; - pk5.Egg_Day = egg_day; - pk5.Egg_Location = egg_location; - // Met Data - pk5.Met_Year = CAL_MetDate.Value.Year - 2000; - pk5.Met_Month = CAL_MetDate.Value.Month; - pk5.Met_Day = CAL_MetDate.Value.Day; - pk5.Met_Location = Util.getIndex(CB_MetLocation); - - if (pk5.IsEgg && pk5.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! - pk5.Met_Year = pk5.Met_Month = pk5.Met_Day = 0; - - pk5.Ball = Util.getIndex(CB_Ball); - pk5.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk5.OT_Gender = PKX.getGender(Label_OTGender.Text); - pk5.EncounterType = Util.getIndex(CB_EncounterType); - pk5.Version = Util.getIndex(CB_GameOrigin); - pk5.Language = Util.getIndex(CB_Language); - - // Toss in Party Stats - Array.Resize(ref pk5.Data, pk5.SIZE_PARTY); - pk5.Stat_Level = Util.ToInt32(TB_Level.Text); - pk5.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); - pk5.Stat_HPMax = Util.ToInt32(Stat_HP.Text); - pk5.Stat_ATK = Util.ToInt32(Stat_ATK.Text); - pk5.Stat_DEF = Util.ToInt32(Stat_DEF.Text); - pk5.Stat_SPE = Util.ToInt32(Stat_SPE.Text); - pk5.Stat_SPA = Util.ToInt32(Stat_SPA.Text); - pk5.Stat_SPD = Util.ToInt32(Stat_SPD.Text); - - if (HaX) - { - pk5.Ability = (byte)Util.getIndex(DEV_Ability); - pk5.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); - } - - // Fix Moves if a slot is empty - pk5.FixMoves(); - - pk5.RefreshChecksum(); - return pk5; - } - private PKM preparePK6() - { - PK6 pk6 = pkm as PK6; - if (pk6 == null) - return null; - - // Repopulate PK6 with Edited Stuff - if (Util.getIndex(CB_GameOrigin) < 24) - { - uint EC = Util.getHEXval(TB_EC.Text); - uint PID = Util.getHEXval(TB_PID.Text); - uint SID = Util.ToUInt32(TB_TID.Text); - uint TID = Util.ToUInt32(TB_TID.Text); - uint LID = PID & 0xFFFF; - uint HID = PID >> 16; - uint XOR = TID ^ LID ^ SID ^ HID; - - // Ensure we don't have a shiny. - if (XOR >> 3 == 1) // Illegal, fix. (not 16=8) - { - // Keep as shiny, so we have to mod the PID - PID ^= XOR; - TB_PID.Text = PID.ToString("X8"); - TB_EC.Text = PID.ToString("X8"); - } - else if ((XOR ^ 0x8000) >> 3 == 1 && PID != EC) - TB_EC.Text = (PID ^ 0x80000000).ToString("X8"); - else // Not Illegal, no fix. - TB_EC.Text = PID.ToString("X8"); - } - - pk6.EncryptionConstant = Util.getHEXval(TB_EC.Text); - pk6.Checksum = 0; // 0 CHK for now - - // Block A - pk6.Species = Util.getIndex(CB_Species); - pk6.HeldItem = Util.getIndex(CB_HeldItem); - pk6.TID = Util.ToInt32(TB_TID.Text); - pk6.SID = Util.ToInt32(TB_SID.Text); - pk6.EXP = Util.ToUInt32(TB_EXP.Text); - pk6.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); - pk6.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number - // pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag) - pk6.PID = Util.getHEXval(TB_PID.Text); - pk6.Nature = (byte)Util.getIndex(CB_Nature); - pk6.FatefulEncounter = CHK_Fateful.Checked; - pk6.Gender = PKX.getGender(Label_Gender.Text); - pk6.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; - pk6.EV_HP = Util.ToInt32(TB_HPEV.Text); // EVs - pk6.EV_ATK = Util.ToInt32(TB_ATKEV.Text); - pk6.EV_DEF = Util.ToInt32(TB_DEFEV.Text); - pk6.EV_SPE = Util.ToInt32(TB_SPEEV.Text); - pk6.EV_SPA = Util.ToInt32(TB_SPAEV.Text); - pk6.EV_SPD = Util.ToInt32(TB_SPDEV.Text); - - pk6.CNT_Cool = Util.ToInt32(TB_Cool.Text); // CNT - pk6.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); - pk6.CNT_Cute = Util.ToInt32(TB_Cute.Text); - pk6.CNT_Smart = Util.ToInt32(TB_Smart.Text); - pk6.CNT_Tough = Util.ToInt32(TB_Tough.Text); - pk6.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); - - pk6.PKRS_Days = CB_PKRSDays.SelectedIndex; - pk6.PKRS_Strain = CB_PKRSStrain.SelectedIndex; - // Already in buff (then transferred to new pkx) - // 0x2C, 0x2D, 0x2E, 0x2F - // 0x30, 0x31, 0x32, 0x33 - // 0x34, 0x35, 0x36, 0x37 - // 0x38, 0x39 - - // Unused - // 0x3A, 0x3B - // 0x3C, 0x3D, 0x3E, 0x3F - - // Block B - // Convert Nickname field back to bytes - pk6.Nickname = TB_Nickname.Text; - pk6.Move1 = Util.getIndex(CB_Move1); - pk6.Move2 = Util.getIndex(CB_Move2); - pk6.Move3 = Util.getIndex(CB_Move3); - pk6.Move4 = Util.getIndex(CB_Move4); - pk6.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; - pk6.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; - pk6.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; - pk6.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; - pk6.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; - pk6.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; - pk6.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; - pk6.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; - pk6.RelearnMove1 = Util.getIndex(CB_RelearnMove1); - pk6.RelearnMove2 = Util.getIndex(CB_RelearnMove2); - pk6.RelearnMove3 = Util.getIndex(CB_RelearnMove3); - pk6.RelearnMove4 = Util.getIndex(CB_RelearnMove4); - // 0x72 - Ribbon editor sets this flag (Secret Super Training) - // 0x73 - pk6.IV_HP = Util.ToInt32(TB_HPIV.Text); - pk6.IV_ATK = Util.ToInt32(TB_ATKIV.Text); - pk6.IV_DEF = Util.ToInt32(TB_DEFIV.Text); - pk6.IV_SPE = Util.ToInt32(TB_SPEIV.Text); - pk6.IV_SPA = Util.ToInt32(TB_SPAIV.Text); - pk6.IV_SPD = Util.ToInt32(TB_SPDIV.Text); - pk6.IsEgg = CHK_IsEgg.Checked; - pk6.IsNicknamed = CHK_Nicknamed.Checked; - - // Block C - pk6.HT_Name = TB_OTt2.Text; - - // 0x90-0xAF - pk6.HT_Gender = PKX.getGender(Label_CTGender.Text); - // Plus more, set by MemoryAmie (already in buff) - - // Block D - pk6.OT_Name = TB_OT.Text; - pk6.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - - int egg_year = 2000; // Default Dates - int egg_month = 0; - int egg_day = 0; - int egg_location = 0; - if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. - { - egg_year = CAL_EggDate.Value.Year; - egg_month = CAL_EggDate.Value.Month; - egg_day = CAL_EggDate.Value.Day; - egg_location = Util.getIndex(CB_EggLocation); - } - // Egg Met Data - pk6.Egg_Year = egg_year - 2000; - pk6.Egg_Month = egg_month; - pk6.Egg_Day = egg_day; - pk6.Egg_Location = egg_location; - // Met Data - pk6.Met_Year = CAL_MetDate.Value.Year - 2000; - pk6.Met_Month = CAL_MetDate.Value.Month; - pk6.Met_Day = CAL_MetDate.Value.Day; - pk6.Met_Location = Util.getIndex(CB_MetLocation); - - if (pk6.IsEgg && pk6.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! - pk6.Met_Year = pk6.Met_Month = pk6.Met_Day = 0; - - // 0xD7 Unknown - - pk6.Ball = Util.getIndex(CB_Ball); - pk6.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk6.OT_Gender = PKX.getGender(Label_OTGender.Text); - pk6.EncounterType = Util.getIndex(CB_EncounterType); - pk6.Version = Util.getIndex(CB_GameOrigin); - pk6.Country = Util.getIndex(CB_Country); - pk6.Region = Util.getIndex(CB_SubRegion); - pk6.ConsoleRegion = Util.getIndex(CB_3DSReg); - pk6.Language = Util.getIndex(CB_Language); - // 0xE4-0xE7 - - // Toss in Party Stats - Array.Resize(ref pk6.Data, pk6.SIZE_PARTY); - pk6.Stat_Level = Util.ToInt32(TB_Level.Text); - pk6.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); - pk6.Stat_HPMax = Util.ToInt32(Stat_HP.Text); - pk6.Stat_ATK = Util.ToInt32(Stat_ATK.Text); - pk6.Stat_DEF = Util.ToInt32(Stat_DEF.Text); - pk6.Stat_SPE = Util.ToInt32(Stat_SPE.Text); - pk6.Stat_SPA = Util.ToInt32(Stat_SPA.Text); - pk6.Stat_SPD = Util.ToInt32(Stat_SPD.Text); - - // Unneeded Party Stats (Status, Flags, Unused) - pk6.Data[0xE8] = pk6.Data[0xE9] = pk6.Data[0xEA] = pk6.Data[0xEB] = - pk6.Data[0xED] = pk6.Data[0xEE] = pk6.Data[0xEF] = - pk6.Data[0xFE] = pk6.Data[0xFF] = pk6.Data[0x100] = - pk6.Data[0x101] = pk6.Data[0x102] = pk6.Data[0x103] = 0; - - // Hax Illegality - if (HaX) - { - pk6.Ability = (byte)Util.getIndex(DEV_Ability); - pk6.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); - } - - // Fix Moves if a slot is empty - pk6.FixMoves(); - pk6.FixRelearn(); - - // Fix Handler (Memories & OT) -- no foreign memories for Pokemon without a foreign trainer (none for eggs) - if (Menu_ModifyPK6.Checked) - pk6.FixMemories(); - - // PKX is now filled - pk6.RefreshChecksum(); - return pk6; - } // Drag & Drop Events private void tabMain_DragEnter(object sender, DragEventArgs e) { diff --git a/MainWindow/MainPK3.cs b/MainWindow/MainPK3.cs new file mode 100644 index 000000000..af808a5d0 --- /dev/null +++ b/MainWindow/MainPK3.cs @@ -0,0 +1,194 @@ +using System; +using System.Drawing; + +namespace PKHeX +{ + public partial class Main + { + private void populateFieldsPK3() + { + PK3 pk3 = pkm as PK3; + if (pk3 == null) + return; + + // Do first + pk3.Stat_Level = PKX.getLevel(pk3.Species, pk3.EXP); + if (pk3.Stat_Level == 100) + pk3.EXP = PKX.getEXP(pk3.Stat_Level, pk3.Species); + + CB_Species.SelectedValue = pk3.Species; + TB_Level.Text = pk3.Stat_Level.ToString(); + TB_EXP.Text = pk3.EXP.ToString(); + + // Load rest + CHK_Fateful.Checked = pk3.FatefulEncounter; + CHK_IsEgg.Checked = pk3.IsEgg; + CHK_Nicknamed.Checked = pk3.IsNicknamed; + Label_OTGender.Text = gendersymbols[pk3.OT_Gender]; + Label_OTGender.ForeColor = pk3.OT_Gender == 1 ? Color.Red : Color.Blue; + TB_PID.Text = pk3.PID.ToString("X8"); + CB_HeldItem.SelectedValue = pk3.G3Item; + setAbilityList(); + int[] abils = PKX.getAbilities(pk3.Species, 0); + int abil = Array.IndexOf(abils, pk3.Ability); + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; + CB_Nature.SelectedValue = pk3.Nature; + TB_TID.Text = pk3.TID.ToString("00000"); + TB_SID.Text = pk3.SID.ToString("00000"); + TB_Nickname.Text = pk3.Nickname; + TB_OT.Text = pk3.OT_Name; + TB_Friendship.Text = pk3.CurrentFriendship.ToString(); + GB_OT.BackgroundImage = null; + CB_Language.SelectedValue = pk3.Language; + CB_GameOrigin.SelectedValue = pk3.Version; + CB_EncounterType.SelectedValue = pk3.Gen4 ? pk3.EncounterType : 0; + CB_Ball.SelectedValue = pk3.Ball; + + CB_MetLocation.SelectedValue = pk3.Met_Location; + + TB_MetLevel.Text = pk3.Met_Level.ToString(); + + // Reset Label and ComboBox visibility, as well as non-data checked status. + Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk3.PKRS_Strain != 0; + Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk3.PKRS_Days != 0; + + // Set SelectedIndexes for PKRS + CB_PKRSStrain.SelectedIndex = pk3.PKRS_Strain; + CHK_Cured.Checked = pk3.PKRS_Strain > 0 && pk3.PKRS_Days == 0; + CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk3.PKRS_Days); // to strip out bad hacked 'rus + + TB_Cool.Text = pk3.CNT_Cool.ToString(); + TB_Beauty.Text = pk3.CNT_Beauty.ToString(); + TB_Cute.Text = pk3.CNT_Cute.ToString(); + TB_Smart.Text = pk3.CNT_Smart.ToString(); + TB_Tough.Text = pk3.CNT_Tough.ToString(); + TB_Sheen.Text = pk3.CNT_Sheen.ToString(); + + TB_HPIV.Text = pk3.IV_HP.ToString(); + TB_ATKIV.Text = pk3.IV_ATK.ToString(); + TB_DEFIV.Text = pk3.IV_DEF.ToString(); + TB_SPEIV.Text = pk3.IV_SPE.ToString(); + TB_SPAIV.Text = pk3.IV_SPA.ToString(); + TB_SPDIV.Text = pk3.IV_SPD.ToString(); + CB_HPType.SelectedValue = pk3.HPType; + + TB_HPEV.Text = pk3.EV_HP.ToString(); + TB_ATKEV.Text = pk3.EV_ATK.ToString(); + TB_DEFEV.Text = pk3.EV_DEF.ToString(); + TB_SPEEV.Text = pk3.EV_SPE.ToString(); + TB_SPAEV.Text = pk3.EV_SPA.ToString(); + TB_SPDEV.Text = pk3.EV_SPD.ToString(); + + CB_Move1.SelectedValue = pk3.Move1; + CB_Move2.SelectedValue = pk3.Move2; + CB_Move3.SelectedValue = pk3.Move3; + CB_Move4.SelectedValue = pk3.Move4; + CB_PPu1.SelectedIndex = pk3.Move1_PPUps; + CB_PPu2.SelectedIndex = pk3.Move2_PPUps; + CB_PPu3.SelectedIndex = pk3.Move3_PPUps; + CB_PPu4.SelectedIndex = pk3.Move4_PPUps; + TB_PP1.Text = pk3.Move1_PP.ToString(); + TB_PP2.Text = pk3.Move2_PP.ToString(); + TB_PP3.Text = pk3.Move3_PP.ToString(); + TB_PP4.Text = pk3.Move4_PP.ToString(); + + // Load Extrabyte Value + TB_ExtraByte.Text = pk3.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); + + updateStats(); + setIsShiny(); + + TB_EXP.Text = pk3.EXP.ToString(); + Label_Gender.Text = gendersymbols[pk3.Gender]; + Label_Gender.ForeColor = pk3.Gender == 2 ? Label_Species.ForeColor : (pk3.Gender == 1 ? Color.Red : Color.Blue); + } + private PKM preparePK3() + { + PK3 pk3 = pkm as PK3; + if (pk3 == null) + return null; + + pk3.Species = Util.getIndex(CB_Species); + pk3.G3Item = Util.getIndex(CB_HeldItem); + pk3.TID = Util.ToInt32(TB_TID.Text); + pk3.SID = Util.ToInt32(TB_SID.Text); + pk3.EXP = Util.ToUInt32(TB_EXP.Text); + pk3.PID = Util.getHEXval(TB_PID.Text); + pk3.Ability = CB_Ability.SelectedIndex; // 0/1 (stored in IVbits) + + pk3.FatefulEncounter = CHK_Fateful.Checked; + pk3.Gender = PKX.getGender(Label_Gender.Text); + pk3.EV_HP = Util.ToInt32(TB_HPEV.Text); + pk3.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + pk3.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + pk3.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + pk3.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + pk3.EV_SPD = Util.ToInt32(TB_SPDEV.Text); + + pk3.CNT_Cool = Util.ToInt32(TB_Cool.Text); + pk3.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); + pk3.CNT_Cute = Util.ToInt32(TB_Cute.Text); + pk3.CNT_Smart = Util.ToInt32(TB_Smart.Text); + pk3.CNT_Tough = Util.ToInt32(TB_Tough.Text); + pk3.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); + + pk3.PKRS_Days = CB_PKRSDays.SelectedIndex; + pk3.PKRS_Strain = CB_PKRSStrain.SelectedIndex; + pk3.Nickname = TB_Nickname.Text; + pk3.Move1 = Util.getIndex(CB_Move1); + pk3.Move2 = Util.getIndex(CB_Move2); + pk3.Move3 = Util.getIndex(CB_Move3); + pk3.Move4 = Util.getIndex(CB_Move4); + pk3.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; + pk3.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; + pk3.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; + pk3.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; + pk3.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; + pk3.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; + pk3.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; + pk3.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; + + pk3.IV_HP = Util.ToInt32(TB_HPIV.Text); + pk3.IV_ATK = Util.ToInt32(TB_ATKIV.Text); + pk3.IV_DEF = Util.ToInt32(TB_DEFIV.Text); + pk3.IV_SPE = Util.ToInt32(TB_SPEIV.Text); + pk3.IV_SPA = Util.ToInt32(TB_SPAIV.Text); + pk3.IV_SPD = Util.ToInt32(TB_SPDIV.Text); + pk3.IsEgg = CHK_IsEgg.Checked; + pk3.IsNicknamed = CHK_Nicknamed.Checked; + + pk3.OT_Name = TB_OT.Text; + pk3.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); + + pk3.Ball = Util.getIndex(CB_Ball); + pk3.Met_Level = Util.ToInt32(TB_MetLevel.Text); + pk3.OT_Gender = PKX.getGender(Label_OTGender.Text); + pk3.Version = Util.getIndex(CB_GameOrigin); + pk3.Language = Util.getIndex(CB_Language); + + pk3.Met_Location = Util.getIndex(CB_MetLocation); + + // Toss in Party Stats + Array.Resize(ref pk3.Data, pk3.SIZE_PARTY); + pk3.Stat_Level = Util.ToInt32(TB_Level.Text); + pk3.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); + pk3.Stat_HPMax = Util.ToInt32(Stat_HP.Text); + pk3.Stat_ATK = Util.ToInt32(Stat_ATK.Text); + pk3.Stat_DEF = Util.ToInt32(Stat_DEF.Text); + pk3.Stat_SPE = Util.ToInt32(Stat_SPE.Text); + pk3.Stat_SPA = Util.ToInt32(Stat_SPA.Text); + pk3.Stat_SPD = Util.ToInt32(Stat_SPD.Text); + + if (HaX) + { + pk3.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); + } + + // Fix Moves if a slot is empty + pk3.FixMoves(); + + pk3.RefreshChecksum(); + return pk3; + } + } +} diff --git a/MainWindow/MainPK4.cs b/MainWindow/MainPK4.cs new file mode 100644 index 000000000..312cd63d8 --- /dev/null +++ b/MainWindow/MainPK4.cs @@ -0,0 +1,247 @@ +using System; +using System.Drawing; + +namespace PKHeX +{ + public partial class Main + { + private void populateFieldsPK4() + { + PK4 pk4 = pkm as PK4; + if (pk4 == null) + return; + + // Do first + pk4.Stat_Level = PKX.getLevel(pk4.Species, pk4.EXP); + if (pk4.Stat_Level == 100) + pk4.EXP = PKX.getEXP(pk4.Stat_Level, pk4.Species); + + CB_Species.SelectedValue = pk4.Species; + TB_Level.Text = pk4.Stat_Level.ToString(); + TB_EXP.Text = pk4.EXP.ToString(); + + // Load rest + CHK_Fateful.Checked = pk4.FatefulEncounter; + CHK_IsEgg.Checked = pk4.IsEgg; + CHK_Nicknamed.Checked = pk4.IsNicknamed; + Label_OTGender.Text = gendersymbols[pk4.OT_Gender]; + Label_OTGender.ForeColor = pk4.OT_Gender == 1 ? Color.Red : Color.Blue; + TB_PID.Text = pk4.PID.ToString("X8"); + CB_HeldItem.SelectedValue = pk4.HeldItem; + setAbilityList(); + CB_Nature.SelectedValue = pk4.Nature; + TB_TID.Text = pk4.TID.ToString("00000"); + TB_SID.Text = pk4.SID.ToString("00000"); + TB_Nickname.Text = pk4.Nickname; + TB_OT.Text = pk4.OT_Name; + TB_Friendship.Text = pk4.CurrentFriendship.ToString(); + GB_OT.BackgroundImage = null; + CB_Language.SelectedValue = pk4.Language; + CB_GameOrigin.SelectedValue = pk4.Version; + CB_EncounterType.SelectedValue = pk4.Gen4 ? pk4.EncounterType : 0; + CB_Ball.SelectedValue = pk4.Ball; + + if (pk4.Met_Month == 0) { pk4.Met_Month = 1; } + if (pk4.Met_Day == 0) { pk4.Met_Day = 1; } + try { CAL_MetDate.Value = new DateTime(pk4.Met_Year + 2000, pk4.Met_Month, pk4.Met_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + + if (pk4.Egg_Location != 0) + { + // Was obtained initially as an egg. + CHK_AsEgg.Checked = true; + GB_EggConditions.Enabled = true; + + CB_EggLocation.SelectedValue = pk4.Egg_Location; + try { CAL_EggDate.Value = new DateTime(pk4.Egg_Year + 2000, pk4.Egg_Month, pk4.Egg_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + } + else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } + + CB_MetLocation.SelectedValue = pk4.Met_Location; + + TB_MetLevel.Text = pk4.Met_Level.ToString(); + + // Reset Label and ComboBox visibility, as well as non-data checked status. + Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk4.PKRS_Strain != 0; + Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk4.PKRS_Days != 0; + + // Set SelectedIndexes for PKRS + CB_PKRSStrain.SelectedIndex = pk4.PKRS_Strain; + CHK_Cured.Checked = pk4.PKRS_Strain > 0 && pk4.PKRS_Days == 0; + CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk4.PKRS_Days); // to strip out bad hacked 'rus + + TB_Cool.Text = pk4.CNT_Cool.ToString(); + TB_Beauty.Text = pk4.CNT_Beauty.ToString(); + TB_Cute.Text = pk4.CNT_Cute.ToString(); + TB_Smart.Text = pk4.CNT_Smart.ToString(); + TB_Tough.Text = pk4.CNT_Tough.ToString(); + TB_Sheen.Text = pk4.CNT_Sheen.ToString(); + + TB_HPIV.Text = pk4.IV_HP.ToString(); + TB_ATKIV.Text = pk4.IV_ATK.ToString(); + TB_DEFIV.Text = pk4.IV_DEF.ToString(); + TB_SPEIV.Text = pk4.IV_SPE.ToString(); + TB_SPAIV.Text = pk4.IV_SPA.ToString(); + TB_SPDIV.Text = pk4.IV_SPD.ToString(); + CB_HPType.SelectedValue = pk4.HPType; + + TB_HPEV.Text = pk4.EV_HP.ToString(); + TB_ATKEV.Text = pk4.EV_ATK.ToString(); + TB_DEFEV.Text = pk4.EV_DEF.ToString(); + TB_SPEEV.Text = pk4.EV_SPE.ToString(); + TB_SPAEV.Text = pk4.EV_SPA.ToString(); + TB_SPDEV.Text = pk4.EV_SPD.ToString(); + + CB_Move1.SelectedValue = pk4.Move1; + CB_Move2.SelectedValue = pk4.Move2; + CB_Move3.SelectedValue = pk4.Move3; + CB_Move4.SelectedValue = pk4.Move4; + CB_PPu1.SelectedIndex = pk4.Move1_PPUps; + CB_PPu2.SelectedIndex = pk4.Move2_PPUps; + CB_PPu3.SelectedIndex = pk4.Move3_PPUps; + CB_PPu4.SelectedIndex = pk4.Move4_PPUps; + TB_PP1.Text = pk4.Move1_PP.ToString(); + TB_PP2.Text = pk4.Move2_PP.ToString(); + TB_PP3.Text = pk4.Move3_PP.ToString(); + TB_PP4.Text = pk4.Move4_PP.ToString(); + + // Set Form if count is enough, else cap. + CB_Form.SelectedIndex = CB_Form.Items.Count > pk4.AltForm ? pk4.AltForm : CB_Form.Items.Count - 1; + + // Load Extrabyte Value + TB_ExtraByte.Text = pk4.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); + + updateStats(); + setIsShiny(); + + TB_EXP.Text = pk4.EXP.ToString(); + Label_Gender.Text = gendersymbols[pk4.Gender]; + Label_Gender.ForeColor = pk4.Gender == 2 ? Label_Species.ForeColor : (pk4.Gender == 1 ? Color.Red : Color.Blue); + + if (HaX) + DEV_Ability.SelectedValue = pk4.Ability; + else + { + int[] abils = PKX.getAbilities(pk4.Species, pk4.AltForm); + int abil = Array.IndexOf(abils, pk4.Ability); + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; + } + } + private PKM preparePK4() + { + PK4 pk4 = pkm as PK4; + if (pk4 == null) + return null; + + pk4.Species = Util.getIndex(CB_Species); + pk4.HeldItem = Util.getIndex(CB_HeldItem); + pk4.TID = Util.ToInt32(TB_TID.Text); + pk4.SID = Util.ToInt32(TB_SID.Text); + pk4.EXP = Util.ToUInt32(TB_EXP.Text); + pk4.PID = Util.getHEXval(TB_PID.Text); + pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + + pk4.FatefulEncounter = CHK_Fateful.Checked; + pk4.Gender = PKX.getGender(Label_Gender.Text); + pk4.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; + pk4.EV_HP = Util.ToInt32(TB_HPEV.Text); + pk4.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + pk4.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + pk4.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + pk4.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + pk4.EV_SPD = Util.ToInt32(TB_SPDEV.Text); + + pk4.CNT_Cool = Util.ToInt32(TB_Cool.Text); + pk4.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); + pk4.CNT_Cute = Util.ToInt32(TB_Cute.Text); + pk4.CNT_Smart = Util.ToInt32(TB_Smart.Text); + pk4.CNT_Tough = Util.ToInt32(TB_Tough.Text); + pk4.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); + + pk4.PKRS_Days = CB_PKRSDays.SelectedIndex; + pk4.PKRS_Strain = CB_PKRSStrain.SelectedIndex; + pk4.Nickname = TB_Nickname.Text; + pk4.Move1 = Util.getIndex(CB_Move1); + pk4.Move2 = Util.getIndex(CB_Move2); + pk4.Move3 = Util.getIndex(CB_Move3); + pk4.Move4 = Util.getIndex(CB_Move4); + pk4.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; + pk4.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; + pk4.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; + pk4.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; + pk4.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; + pk4.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; + pk4.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; + pk4.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; + + pk4.IV_HP = Util.ToInt32(TB_HPIV.Text); + pk4.IV_ATK = Util.ToInt32(TB_ATKIV.Text); + pk4.IV_DEF = Util.ToInt32(TB_DEFIV.Text); + pk4.IV_SPE = Util.ToInt32(TB_SPEIV.Text); + pk4.IV_SPA = Util.ToInt32(TB_SPAIV.Text); + pk4.IV_SPD = Util.ToInt32(TB_SPDIV.Text); + pk4.IsEgg = CHK_IsEgg.Checked; + pk4.IsNicknamed = CHK_Nicknamed.Checked; + + pk4.OT_Name = TB_OT.Text; + pk4.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); + + pk4.Ball = Util.getIndex(CB_Ball); + pk4.Met_Level = Util.ToInt32(TB_MetLevel.Text); + pk4.OT_Gender = PKX.getGender(Label_OTGender.Text); + pk4.EncounterType = Util.getIndex(CB_EncounterType); + pk4.Version = Util.getIndex(CB_GameOrigin); + pk4.Language = Util.getIndex(CB_Language); + + // Default Dates + int egg_year = 2000; + int egg_month = 0; + int egg_day = 0; + int egg_location = 0; + if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. + { + egg_year = CAL_EggDate.Value.Year; + egg_month = CAL_EggDate.Value.Month; + egg_day = CAL_EggDate.Value.Day; + egg_location = Util.getIndex(CB_EggLocation); + } + // Egg Met Data + pk4.Egg_Year = egg_year - 2000; + pk4.Egg_Month = egg_month; + pk4.Egg_Day = egg_day; + pk4.Egg_Location = egg_location; + // Met Data + pk4.Met_Year = CAL_MetDate.Value.Year - 2000; + pk4.Met_Month = CAL_MetDate.Value.Month; + pk4.Met_Day = CAL_MetDate.Value.Day; + pk4.Met_Location = Util.getIndex(CB_MetLocation); + + if (pk4.IsEgg && pk4.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! + pk4.Met_Year = pk4.Met_Month = pk4.Met_Day = 0; + + // Toss in Party Stats + Array.Resize(ref pk4.Data, pk4.SIZE_PARTY); + pk4.Stat_Level = Util.ToInt32(TB_Level.Text); + pk4.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); + pk4.Stat_HPMax = Util.ToInt32(Stat_HP.Text); + pk4.Stat_ATK = Util.ToInt32(Stat_ATK.Text); + pk4.Stat_DEF = Util.ToInt32(Stat_DEF.Text); + pk4.Stat_SPE = Util.ToInt32(Stat_SPE.Text); + pk4.Stat_SPA = Util.ToInt32(Stat_SPA.Text); + pk4.Stat_SPD = Util.ToInt32(Stat_SPD.Text); + + if (HaX) + { + pk4.Ability = (byte)Util.getIndex(DEV_Ability); + pk4.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); + } + + // Fix Moves if a slot is empty + pk4.FixMoves(); + + pk4.RefreshChecksum(); + return pk4; + } + } +} diff --git a/MainWindow/MainPK5.cs b/MainWindow/MainPK5.cs new file mode 100644 index 000000000..a1a8806d5 --- /dev/null +++ b/MainWindow/MainPK5.cs @@ -0,0 +1,260 @@ +using System; +using System.Drawing; + +namespace PKHeX +{ + public partial class Main + { + private void populateFieldsPK5() + { + PK5 pk5 = pkm as PK5; + if (pk5 == null) + return; + + // Do first + pk5.Stat_Level = PKX.getLevel(pk5.Species, pk5.EXP); + if (pk5.Stat_Level == 100) + pk5.EXP = PKX.getEXP(pk5.Stat_Level, pk5.Species); + + CB_Species.SelectedValue = pk5.Species; + TB_Level.Text = pk5.Stat_Level.ToString(); + TB_EXP.Text = pk5.EXP.ToString(); + + // Load rest + CHK_Fateful.Checked = pk5.FatefulEncounter; + CHK_IsEgg.Checked = pk5.IsEgg; + CHK_Nicknamed.Checked = pk5.IsNicknamed; + Label_OTGender.Text = gendersymbols[pk5.OT_Gender]; + Label_OTGender.ForeColor = pk5.OT_Gender == 1 ? Color.Red : Color.Blue; + TB_PID.Text = pk5.PID.ToString("X8"); + CB_HeldItem.SelectedValue = pk5.HeldItem; + setAbilityList(); + CB_Nature.SelectedValue = pk5.Nature; + TB_TID.Text = pk5.TID.ToString("00000"); + TB_SID.Text = pk5.SID.ToString("00000"); + TB_Nickname.Text = pk5.Nickname; + TB_OT.Text = pk5.OT_Name; + TB_Friendship.Text = pk5.CurrentFriendship.ToString(); + if (pk5.CurrentHandler == 1) // HT + { + GB_nOT.BackgroundImage = mixedHighlight; + GB_OT.BackgroundImage = null; + } + else // = 0 + { + GB_OT.BackgroundImage = mixedHighlight; + GB_nOT.BackgroundImage = null; + } + CB_Language.SelectedValue = pk5.Language; + CB_GameOrigin.SelectedValue = pk5.Version; + CB_EncounterType.SelectedValue = pk5.Gen4 ? pk5.EncounterType : 0; + CB_Ball.SelectedValue = pk5.Ball; + + if (pk5.Met_Month == 0) { pk5.Met_Month = 1; } + if (pk5.Met_Day == 0) { pk5.Met_Day = 1; } + try { CAL_MetDate.Value = new DateTime(pk5.Met_Year + 2000, pk5.Met_Month, pk5.Met_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + + if (pk5.Egg_Location != 0) + { + // Was obtained initially as an egg. + CHK_AsEgg.Checked = true; + GB_EggConditions.Enabled = true; + + CB_EggLocation.SelectedValue = pk5.Egg_Location; + try { CAL_EggDate.Value = new DateTime(pk5.Egg_Year + 2000, pk5.Egg_Month, pk5.Egg_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + } + else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } + + CB_MetLocation.SelectedValue = pk5.Met_Location; + + TB_MetLevel.Text = pk5.Met_Level.ToString(); + + // Reset Label and ComboBox visibility, as well as non-data checked status. + Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk5.PKRS_Strain != 0; + Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk5.PKRS_Days != 0; + + // Set SelectedIndexes for PKRS + CB_PKRSStrain.SelectedIndex = pk5.PKRS_Strain; + CHK_Cured.Checked = pk5.PKRS_Strain > 0 && pk5.PKRS_Days == 0; + CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk5.PKRS_Days); // to strip out bad hacked 'rus + + TB_Cool.Text = pk5.CNT_Cool.ToString(); + TB_Beauty.Text = pk5.CNT_Beauty.ToString(); + TB_Cute.Text = pk5.CNT_Cute.ToString(); + TB_Smart.Text = pk5.CNT_Smart.ToString(); + TB_Tough.Text = pk5.CNT_Tough.ToString(); + TB_Sheen.Text = pk5.CNT_Sheen.ToString(); + + TB_HPIV.Text = pk5.IV_HP.ToString(); + TB_ATKIV.Text = pk5.IV_ATK.ToString(); + TB_DEFIV.Text = pk5.IV_DEF.ToString(); + TB_SPEIV.Text = pk5.IV_SPE.ToString(); + TB_SPAIV.Text = pk5.IV_SPA.ToString(); + TB_SPDIV.Text = pk5.IV_SPD.ToString(); + CB_HPType.SelectedValue = pk5.HPType; + + TB_HPEV.Text = pk5.EV_HP.ToString(); + TB_ATKEV.Text = pk5.EV_ATK.ToString(); + TB_DEFEV.Text = pk5.EV_DEF.ToString(); + TB_SPEEV.Text = pk5.EV_SPE.ToString(); + TB_SPAEV.Text = pk5.EV_SPA.ToString(); + TB_SPDEV.Text = pk5.EV_SPD.ToString(); + + CB_Move1.SelectedValue = pk5.Move1; + CB_Move2.SelectedValue = pk5.Move2; + CB_Move3.SelectedValue = pk5.Move3; + CB_Move4.SelectedValue = pk5.Move4; + CB_PPu1.SelectedIndex = pk5.Move1_PPUps; + CB_PPu2.SelectedIndex = pk5.Move2_PPUps; + CB_PPu3.SelectedIndex = pk5.Move3_PPUps; + CB_PPu4.SelectedIndex = pk5.Move4_PPUps; + TB_PP1.Text = pk5.Move1_PP.ToString(); + TB_PP2.Text = pk5.Move2_PP.ToString(); + TB_PP3.Text = pk5.Move3_PP.ToString(); + TB_PP4.Text = pk5.Move4_PP.ToString(); + + // Set Form if count is enough, else cap. + CB_Form.SelectedIndex = CB_Form.Items.Count > pk5.AltForm ? pk5.AltForm : CB_Form.Items.Count - 1; + + // Load Extrabyte Value + TB_ExtraByte.Text = pk5.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); + + updateStats(); + setIsShiny(); + + TB_EXP.Text = pk5.EXP.ToString(); + Label_Gender.Text = gendersymbols[pk5.Gender]; + Label_Gender.ForeColor = pk5.Gender == 2 ? Label_Species.ForeColor : (pk5.Gender == 1 ? Color.Red : Color.Blue); + + if (HaX) + DEV_Ability.SelectedValue = pk5.Ability; + else if (pk5.HiddenAbility) + CB_Ability.SelectedIndex = CB_Ability.Items.Count - 1; + else + { + int[] abils = PKX.getAbilities(pk5.Species, pk5.AltForm); + int abil = Array.IndexOf(abils, pk5.Ability); + CB_Ability.SelectedIndex = abil < 0 || abil >= CB_Ability.Items.Count ? 0 : abil; + } + } + private PKM preparePK5() + { + PK5 pk5 = pkm as PK5; + if (pk5 == null) + return null; + + pk5.Species = Util.getIndex(CB_Species); + pk5.HeldItem = Util.getIndex(CB_HeldItem); + pk5.TID = Util.ToInt32(TB_TID.Text); + pk5.SID = Util.ToInt32(TB_SID.Text); + pk5.EXP = Util.ToUInt32(TB_EXP.Text); + pk5.PID = Util.getHEXval(TB_PID.Text); + pk5.Ability = (byte)Util.getIndex(DEV_Ability); + pk5.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + + pk5.Nature = (byte)Util.getIndex(CB_Nature); + pk5.FatefulEncounter = CHK_Fateful.Checked; + pk5.Gender = PKX.getGender(Label_Gender.Text); + pk5.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; + pk5.EV_HP = Util.ToInt32(TB_HPEV.Text); + pk5.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + pk5.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + pk5.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + pk5.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + pk5.EV_SPD = Util.ToInt32(TB_SPDEV.Text); + + pk5.CNT_Cool = Util.ToInt32(TB_Cool.Text); + pk5.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); + pk5.CNT_Cute = Util.ToInt32(TB_Cute.Text); + pk5.CNT_Smart = Util.ToInt32(TB_Smart.Text); + pk5.CNT_Tough = Util.ToInt32(TB_Tough.Text); + pk5.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); + + pk5.PKRS_Days = CB_PKRSDays.SelectedIndex; + pk5.PKRS_Strain = CB_PKRSStrain.SelectedIndex; + pk5.Nickname = TB_Nickname.Text; + pk5.Move1 = Util.getIndex(CB_Move1); + pk5.Move2 = Util.getIndex(CB_Move2); + pk5.Move3 = Util.getIndex(CB_Move3); + pk5.Move4 = Util.getIndex(CB_Move4); + pk5.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; + pk5.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; + pk5.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; + pk5.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; + pk5.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; + pk5.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; + pk5.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; + pk5.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; + + pk5.IV_HP = Util.ToInt32(TB_HPIV.Text); + pk5.IV_ATK = Util.ToInt32(TB_ATKIV.Text); + pk5.IV_DEF = Util.ToInt32(TB_DEFIV.Text); + pk5.IV_SPE = Util.ToInt32(TB_SPEIV.Text); + pk5.IV_SPA = Util.ToInt32(TB_SPAIV.Text); + pk5.IV_SPD = Util.ToInt32(TB_SPDIV.Text); + pk5.IsEgg = CHK_IsEgg.Checked; + pk5.IsNicknamed = CHK_Nicknamed.Checked; + + pk5.OT_Name = TB_OT.Text; + pk5.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); + + // Default Dates + int egg_year = 2000; + int egg_month = 0; + int egg_day = 0; + int egg_location = 0; + if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. + { + egg_year = CAL_EggDate.Value.Year; + egg_month = CAL_EggDate.Value.Month; + egg_day = CAL_EggDate.Value.Day; + egg_location = Util.getIndex(CB_EggLocation); + } + // Egg Met Data + pk5.Egg_Year = egg_year - 2000; + pk5.Egg_Month = egg_month; + pk5.Egg_Day = egg_day; + pk5.Egg_Location = egg_location; + // Met Data + pk5.Met_Year = CAL_MetDate.Value.Year - 2000; + pk5.Met_Month = CAL_MetDate.Value.Month; + pk5.Met_Day = CAL_MetDate.Value.Day; + pk5.Met_Location = Util.getIndex(CB_MetLocation); + + if (pk5.IsEgg && pk5.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! + pk5.Met_Year = pk5.Met_Month = pk5.Met_Day = 0; + + pk5.Ball = Util.getIndex(CB_Ball); + pk5.Met_Level = Util.ToInt32(TB_MetLevel.Text); + pk5.OT_Gender = PKX.getGender(Label_OTGender.Text); + pk5.EncounterType = Util.getIndex(CB_EncounterType); + pk5.Version = Util.getIndex(CB_GameOrigin); + pk5.Language = Util.getIndex(CB_Language); + + // Toss in Party Stats + Array.Resize(ref pk5.Data, pk5.SIZE_PARTY); + pk5.Stat_Level = Util.ToInt32(TB_Level.Text); + pk5.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); + pk5.Stat_HPMax = Util.ToInt32(Stat_HP.Text); + pk5.Stat_ATK = Util.ToInt32(Stat_ATK.Text); + pk5.Stat_DEF = Util.ToInt32(Stat_DEF.Text); + pk5.Stat_SPE = Util.ToInt32(Stat_SPE.Text); + pk5.Stat_SPA = Util.ToInt32(Stat_SPA.Text); + pk5.Stat_SPD = Util.ToInt32(Stat_SPD.Text); + + if (HaX) + { + pk5.Ability = (byte)Util.getIndex(DEV_Ability); + pk5.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); + } + + // Fix Moves if a slot is empty + pk5.FixMoves(); + + pk5.RefreshChecksum(); + return pk5; + } + } +} diff --git a/MainWindow/MainPK6.cs b/MainWindow/MainPK6.cs new file mode 100644 index 000000000..8e17b84ba --- /dev/null +++ b/MainWindow/MainPK6.cs @@ -0,0 +1,342 @@ +using System; +using System.Drawing; + +namespace PKHeX +{ + public partial class Main + { + private void populateFieldsPK6() + { + PK6 pk6 = pkm as PK6; + if (pk6 == null) + return; + + // Do first + pk6.Stat_Level = PKX.getLevel(pk6.Species, pk6.EXP); + if (pk6.Stat_Level == 100) + pk6.EXP = PKX.getEXP(pk6.Stat_Level, pk6.Species); + + CB_Species.SelectedValue = pk6.Species; + TB_Level.Text = pk6.Stat_Level.ToString(); + TB_EXP.Text = pk6.EXP.ToString(); + + // Load rest + TB_EC.Text = pk6.EncryptionConstant.ToString("X8"); + CHK_Fateful.Checked = pk6.FatefulEncounter; + CHK_IsEgg.Checked = pk6.IsEgg; + CHK_Nicknamed.Checked = pk6.IsNicknamed; + Label_OTGender.Text = gendersymbols[pk6.OT_Gender]; + Label_OTGender.ForeColor = pk6.OT_Gender == 1 ? Color.Red : Color.Blue; + TB_PID.Text = pk6.PID.ToString("X8"); + CB_HeldItem.SelectedValue = pk6.HeldItem; + setAbilityList(); + TB_AbilityNumber.Text = pk6.AbilityNumber.ToString(); + CB_Ability.SelectedIndex = pk6.AbilityNumber < 6 ? pk6.AbilityNumber >> 1 : 0; // with some simple error handling + CB_Nature.SelectedValue = pk6.Nature; + TB_TID.Text = pk6.TID.ToString("00000"); + TB_SID.Text = pk6.SID.ToString("00000"); + TB_Nickname.Text = pk6.Nickname; + TB_OT.Text = pk6.OT_Name; + TB_OTt2.Text = pk6.HT_Name; + TB_Friendship.Text = pk6.CurrentFriendship.ToString(); + if (pk6.CurrentHandler == 1) // HT + { + GB_nOT.BackgroundImage = mixedHighlight; + GB_OT.BackgroundImage = null; + } + else // = 0 + { + GB_OT.BackgroundImage = mixedHighlight; + GB_nOT.BackgroundImage = null; + } + CB_Language.SelectedValue = pk6.Language; + CB_Country.SelectedValue = pk6.Country; + CB_SubRegion.SelectedValue = pk6.Region; + CB_3DSReg.SelectedValue = pk6.ConsoleRegion; + CB_GameOrigin.SelectedValue = pk6.Version; + CB_EncounterType.SelectedValue = pk6.Gen4 ? pk6.EncounterType : 0; + CB_Ball.SelectedValue = pk6.Ball; + + if (pk6.Met_Month == 0) { pk6.Met_Month = 1; } + if (pk6.Met_Day == 0) { pk6.Met_Day = 1; } + try { CAL_MetDate.Value = new DateTime(pk6.Met_Year + 2000, pk6.Met_Month, pk6.Met_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + + if (pk6.Egg_Location != 0) + { + // Was obtained initially as an egg. + CHK_AsEgg.Checked = true; + GB_EggConditions.Enabled = true; + + CB_EggLocation.SelectedValue = pk6.Egg_Location; + try { CAL_EggDate.Value = new DateTime(pk6.Egg_Year + 2000, pk6.Egg_Month, pk6.Egg_Day); } + catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); } + } + else { CAL_EggDate.Value = new DateTime(2000, 01, 01); CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; } + + CB_MetLocation.SelectedValue = pk6.Met_Location; + + // Set CT Gender to None if no CT, else set to gender symbol. + Label_CTGender.Text = pk6.HT_Name == "" ? "" : gendersymbols[pk6.HT_Gender % 2]; + Label_CTGender.ForeColor = pk6.HT_Gender == 1 ? Color.Red : Color.Blue; + + TB_MetLevel.Text = pk6.Met_Level.ToString(); + + // Reset Label and ComboBox visibility, as well as non-data checked status. + Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = pk6.PKRS_Strain != 0; + Label_PKRSdays.Visible = CB_PKRSDays.Visible = pk6.PKRS_Days != 0; + + // Set SelectedIndexes for PKRS + CB_PKRSStrain.SelectedIndex = pk6.PKRS_Strain; + CHK_Cured.Checked = pk6.PKRS_Strain > 0 && pk6.PKRS_Days == 0; + CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, pk6.PKRS_Days); // to strip out bad hacked 'rus + + TB_Cool.Text = pk6.CNT_Cool.ToString(); + TB_Beauty.Text = pk6.CNT_Beauty.ToString(); + TB_Cute.Text = pk6.CNT_Cute.ToString(); + TB_Smart.Text = pk6.CNT_Smart.ToString(); + TB_Tough.Text = pk6.CNT_Tough.ToString(); + TB_Sheen.Text = pk6.CNT_Sheen.ToString(); + + TB_HPIV.Text = pk6.IV_HP.ToString(); + TB_ATKIV.Text = pk6.IV_ATK.ToString(); + TB_DEFIV.Text = pk6.IV_DEF.ToString(); + TB_SPEIV.Text = pk6.IV_SPE.ToString(); + TB_SPAIV.Text = pk6.IV_SPA.ToString(); + TB_SPDIV.Text = pk6.IV_SPD.ToString(); + CB_HPType.SelectedValue = pk6.HPType; + + TB_HPEV.Text = pk6.EV_HP.ToString(); + TB_ATKEV.Text = pk6.EV_ATK.ToString(); + TB_DEFEV.Text = pk6.EV_DEF.ToString(); + TB_SPEEV.Text = pk6.EV_SPE.ToString(); + TB_SPAEV.Text = pk6.EV_SPA.ToString(); + TB_SPDEV.Text = pk6.EV_SPD.ToString(); + + CB_Move1.SelectedValue = pk6.Move1; + CB_Move2.SelectedValue = pk6.Move2; + CB_Move3.SelectedValue = pk6.Move3; + CB_Move4.SelectedValue = pk6.Move4; + CB_RelearnMove1.SelectedValue = pk6.RelearnMove1; + CB_RelearnMove2.SelectedValue = pk6.RelearnMove2; + CB_RelearnMove3.SelectedValue = pk6.RelearnMove3; + CB_RelearnMove4.SelectedValue = pk6.RelearnMove4; + CB_PPu1.SelectedIndex = pk6.Move1_PPUps; + CB_PPu2.SelectedIndex = pk6.Move2_PPUps; + CB_PPu3.SelectedIndex = pk6.Move3_PPUps; + CB_PPu4.SelectedIndex = pk6.Move4_PPUps; + TB_PP1.Text = pk6.Move1_PP.ToString(); + TB_PP2.Text = pk6.Move2_PP.ToString(); + TB_PP3.Text = pk6.Move3_PP.ToString(); + TB_PP4.Text = pk6.Move4_PP.ToString(); + + // Set Form if count is enough, else cap. + CB_Form.SelectedIndex = CB_Form.Items.Count > pk6.AltForm ? pk6.AltForm : CB_Form.Items.Count - 1; + + // Load Extrabyte Value + TB_ExtraByte.Text = pk6.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); + + updateStats(); + setIsShiny(); + + TB_EXP.Text = pk6.EXP.ToString(); + Label_Gender.Text = gendersymbols[pk6.Gender]; + Label_Gender.ForeColor = pk6.Gender == 2 ? Label_Species.ForeColor : (pk6.Gender == 1 ? Color.Red : Color.Blue); + + // Highlight the Current Handler + clickGT(pk6.CurrentHandler == 1 ? GB_nOT : GB_OT, null); + + if (HaX) + DEV_Ability.SelectedValue = pk6.Ability; + } + private PKM preparePK6() + { + PK6 pk6 = pkm as PK6; + if (pk6 == null) + return null; + + // Repopulate PK6 with Edited Stuff + if (Util.getIndex(CB_GameOrigin) < 24) + { + uint EC = Util.getHEXval(TB_EC.Text); + uint PID = Util.getHEXval(TB_PID.Text); + uint SID = Util.ToUInt32(TB_TID.Text); + uint TID = Util.ToUInt32(TB_TID.Text); + uint LID = PID & 0xFFFF; + uint HID = PID >> 16; + uint XOR = TID ^ LID ^ SID ^ HID; + + // Ensure we don't have a shiny. + if (XOR >> 3 == 1) // Illegal, fix. (not 16=8) + { + // Keep as shiny, so we have to mod the PID + PID ^= XOR; + TB_PID.Text = PID.ToString("X8"); + TB_EC.Text = PID.ToString("X8"); + } + else if ((XOR ^ 0x8000) >> 3 == 1 && PID != EC) + TB_EC.Text = (PID ^ 0x80000000).ToString("X8"); + else // Not Illegal, no fix. + TB_EC.Text = PID.ToString("X8"); + } + + pk6.EncryptionConstant = Util.getHEXval(TB_EC.Text); + pk6.Checksum = 0; // 0 CHK for now + + // Block A + pk6.Species = Util.getIndex(CB_Species); + pk6.HeldItem = Util.getIndex(CB_HeldItem); + pk6.TID = Util.ToInt32(TB_TID.Text); + pk6.SID = Util.ToInt32(TB_SID.Text); + pk6.EXP = Util.ToUInt32(TB_EXP.Text); + pk6.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + pk6.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number + // pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag) + pk6.PID = Util.getHEXval(TB_PID.Text); + pk6.Nature = (byte)Util.getIndex(CB_Nature); + pk6.FatefulEncounter = CHK_Fateful.Checked; + pk6.Gender = PKX.getGender(Label_Gender.Text); + pk6.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; + pk6.EV_HP = Util.ToInt32(TB_HPEV.Text); // EVs + pk6.EV_ATK = Util.ToInt32(TB_ATKEV.Text); + pk6.EV_DEF = Util.ToInt32(TB_DEFEV.Text); + pk6.EV_SPE = Util.ToInt32(TB_SPEEV.Text); + pk6.EV_SPA = Util.ToInt32(TB_SPAEV.Text); + pk6.EV_SPD = Util.ToInt32(TB_SPDEV.Text); + + pk6.CNT_Cool = Util.ToInt32(TB_Cool.Text); // CNT + pk6.CNT_Beauty = Util.ToInt32(TB_Beauty.Text); + pk6.CNT_Cute = Util.ToInt32(TB_Cute.Text); + pk6.CNT_Smart = Util.ToInt32(TB_Smart.Text); + pk6.CNT_Tough = Util.ToInt32(TB_Tough.Text); + pk6.CNT_Sheen = Util.ToInt32(TB_Sheen.Text); + + pk6.PKRS_Days = CB_PKRSDays.SelectedIndex; + pk6.PKRS_Strain = CB_PKRSStrain.SelectedIndex; + // Already in buff (then transferred to new pkx) + // 0x2C, 0x2D, 0x2E, 0x2F + // 0x30, 0x31, 0x32, 0x33 + // 0x34, 0x35, 0x36, 0x37 + // 0x38, 0x39 + + // Unused + // 0x3A, 0x3B + // 0x3C, 0x3D, 0x3E, 0x3F + + // Block B + // Convert Nickname field back to bytes + pk6.Nickname = TB_Nickname.Text; + pk6.Move1 = Util.getIndex(CB_Move1); + pk6.Move2 = Util.getIndex(CB_Move2); + pk6.Move3 = Util.getIndex(CB_Move3); + pk6.Move4 = Util.getIndex(CB_Move4); + pk6.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0; + pk6.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0; + pk6.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0; + pk6.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0; + pk6.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0; + pk6.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0; + pk6.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0; + pk6.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0; + pk6.RelearnMove1 = Util.getIndex(CB_RelearnMove1); + pk6.RelearnMove2 = Util.getIndex(CB_RelearnMove2); + pk6.RelearnMove3 = Util.getIndex(CB_RelearnMove3); + pk6.RelearnMove4 = Util.getIndex(CB_RelearnMove4); + // 0x72 - Ribbon editor sets this flag (Secret Super Training) + // 0x73 + pk6.IV_HP = Util.ToInt32(TB_HPIV.Text); + pk6.IV_ATK = Util.ToInt32(TB_ATKIV.Text); + pk6.IV_DEF = Util.ToInt32(TB_DEFIV.Text); + pk6.IV_SPE = Util.ToInt32(TB_SPEIV.Text); + pk6.IV_SPA = Util.ToInt32(TB_SPAIV.Text); + pk6.IV_SPD = Util.ToInt32(TB_SPDIV.Text); + pk6.IsEgg = CHK_IsEgg.Checked; + pk6.IsNicknamed = CHK_Nicknamed.Checked; + + // Block C + pk6.HT_Name = TB_OTt2.Text; + + // 0x90-0xAF + pk6.HT_Gender = PKX.getGender(Label_CTGender.Text); + // Plus more, set by MemoryAmie (already in buff) + + // Block D + pk6.OT_Name = TB_OT.Text; + pk6.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); + + int egg_year = 2000; // Default Dates + int egg_month = 0; + int egg_day = 0; + int egg_location = 0; + if (CHK_AsEgg.Checked) // If encountered as an egg, load the Egg Met data from fields. + { + egg_year = CAL_EggDate.Value.Year; + egg_month = CAL_EggDate.Value.Month; + egg_day = CAL_EggDate.Value.Day; + egg_location = Util.getIndex(CB_EggLocation); + } + // Egg Met Data + pk6.Egg_Year = egg_year - 2000; + pk6.Egg_Month = egg_month; + pk6.Egg_Day = egg_day; + pk6.Egg_Location = egg_location; + // Met Data + pk6.Met_Year = CAL_MetDate.Value.Year - 2000; + pk6.Met_Month = CAL_MetDate.Value.Month; + pk6.Met_Day = CAL_MetDate.Value.Day; + pk6.Met_Location = Util.getIndex(CB_MetLocation); + + if (pk6.IsEgg && pk6.Met_Location == 0) // If still an egg, it has no hatch location/date. Zero it! + pk6.Met_Year = pk6.Met_Month = pk6.Met_Day = 0; + + // 0xD7 Unknown + + pk6.Ball = Util.getIndex(CB_Ball); + pk6.Met_Level = Util.ToInt32(TB_MetLevel.Text); + pk6.OT_Gender = PKX.getGender(Label_OTGender.Text); + pk6.EncounterType = Util.getIndex(CB_EncounterType); + pk6.Version = Util.getIndex(CB_GameOrigin); + pk6.Country = Util.getIndex(CB_Country); + pk6.Region = Util.getIndex(CB_SubRegion); + pk6.ConsoleRegion = Util.getIndex(CB_3DSReg); + pk6.Language = Util.getIndex(CB_Language); + // 0xE4-0xE7 + + // Toss in Party Stats + Array.Resize(ref pk6.Data, pk6.SIZE_PARTY); + pk6.Stat_Level = Util.ToInt32(TB_Level.Text); + pk6.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text); + pk6.Stat_HPMax = Util.ToInt32(Stat_HP.Text); + pk6.Stat_ATK = Util.ToInt32(Stat_ATK.Text); + pk6.Stat_DEF = Util.ToInt32(Stat_DEF.Text); + pk6.Stat_SPE = Util.ToInt32(Stat_SPE.Text); + pk6.Stat_SPA = Util.ToInt32(Stat_SPA.Text); + pk6.Stat_SPD = Util.ToInt32(Stat_SPD.Text); + + // Unneeded Party Stats (Status, Flags, Unused) + pk6.Data[0xE8] = pk6.Data[0xE9] = pk6.Data[0xEA] = pk6.Data[0xEB] = + pk6.Data[0xED] = pk6.Data[0xEE] = pk6.Data[0xEF] = + pk6.Data[0xFE] = pk6.Data[0xFF] = pk6.Data[0x100] = + pk6.Data[0x101] = pk6.Data[0x102] = pk6.Data[0x103] = 0; + + // Hax Illegality + if (HaX) + { + pk6.Ability = (byte)Util.getIndex(DEV_Ability); + pk6.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue); + } + + // Fix Moves if a slot is empty + pk6.FixMoves(); + pk6.FixRelearn(); + + // Fix Handler (Memories & OT) -- no foreign memories for Pokemon without a foreign trainer (none for eggs) + if (Menu_ModifyPK6.Checked) + pk6.FixMemories(); + + // PKX is now filled + pk6.RefreshChecksum(); + return pk6; + } + } +}