From 7a1c438b74446407b74a3e45fec61135bb041992 Mon Sep 17 00:00:00 2001 From: Kurt Date: Thu, 17 Sep 2020 18:13:08 -0700 Subject: [PATCH] Minor tweaks add method to randomize AVs from interface extension method revise stat presence check to check ATK since HP is stored in gen1 format --- PKHeX.Core/PKM/Shared/IAwakened.cs | 20 ++++++++++++++++--- .../Controls/PKM Editor/StatEditor.cs | 20 ++++++++++--------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/PKHeX.Core/PKM/Shared/IAwakened.cs b/PKHeX.Core/PKM/Shared/IAwakened.cs index 4aeb6d939..4dd48878c 100644 --- a/PKHeX.Core/PKM/Shared/IAwakened.cs +++ b/PKHeX.Core/PKM/Shared/IAwakened.cs @@ -24,21 +24,35 @@ public static partial class Extensions /// Clears all values. /// /// Data to clear from - public static void AwakeningClear(this IAwakened pk) => pk.AV_HP = pk.AV_ATK = pk.AV_DEF = pk.AV_SPE = pk.AV_SPA = pk.AV_SPD = 0; + public static void AwakeningClear(this IAwakened pk) => pk.AwakeningSetAllTo(0); /// /// Sets all values to the maximum value. /// - /// Data to clear from + /// Data to set values for public static void AwakeningMax(this IAwakened pk) => pk.AwakeningSetAllTo(Legal.AwakeningMax); /// /// Sets all values to the specified value. /// - /// Data to clear from + /// Data to set values for /// Value to set all to public static void AwakeningSetAllTo(this IAwakened pk, int value) => pk.AV_HP = pk.AV_ATK = pk.AV_DEF = pk.AV_SPE = pk.AV_SPA = pk.AV_SPD = value; + /// + /// Sets all values to the specified value. + /// + /// Data to set values for + /// Minimum value to set + /// Maximum value to set + public static void AwakeningSetRandom(this IAwakened pk, int min = 0, int max = Legal.AwakeningMax) + { + var rnd = Util.Rand; + int randClamp = max + 1; + for (int index = 0; index < 6; index++) + pk.SetAV(index, rnd.Next(min, randClamp)); + } + /// /// Gets if all values are within legal limits. /// diff --git a/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs index 6034477a0..86cbeb484 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs @@ -239,12 +239,13 @@ private void UpdateHackedStatText(object sender, EventArgs e) tb.Text = "65535"; } - private void UpdateHyperTrainingFlag(int i, bool value) + private void UpdateHyperTrainingFlag(int index, bool value) { + var tb = MT_IVs[index]; if (value) - MT_IVs[i].BackColor = StatHyperTrained; + tb.BackColor = StatHyperTrained; else - MT_IVs[i].ResetBackColor(); + tb.ResetBackColor(); } private void UpdateHPType(object sender, EventArgs e) @@ -267,7 +268,7 @@ private void ClickStatLabel(object sender, MouseEventArgs e) if ((ModifierKeys & Keys.Alt) != 0) // EV { bool min = e.Button != MouseButtons.Left; - if (Entity is PB7) + if (Entity is IAwakened) { var value = min ? 0 : 200; MT_AVs[index].Text = value.ToString(); @@ -328,7 +329,10 @@ private Color GetEVTotalColor(int evtotal, Color defaultColor) public void UpdateStats() { // Generate the stats. - if (!CHK_HackedStats.Checked || Entity.Stat_HPCurrent == 0) // no stats when initially loaded from non-partyformat slot + // Some entity formats don't store stat values regardless of Box/Party/Etc format. + // If its attack stat is zero, we need to generate party stats. + // PK1 format stores Current HP in the compact format, so we have to use attack stat! + if (!CHK_HackedStats.Checked || Entity.Stat_ATK == 0) { var pt = MainEditor.RequestSaveFile.Personal; var pi = pt.GetFormeEntry(Entity.Species, Entity.AltForm); @@ -369,12 +373,10 @@ private void UpdateRandomAVs(object sender, EventArgs e) a.SetSuggestedAwakenedValues(Entity); break; case Keys.Alt: - a.AwakeningSetAllTo(0); + a.AwakeningClear(); break; default: - var rnd = Util.Rand; - foreach (var index in Enumerable.Range(0, 6)) - a.SetAV(index, rnd.Next(Legal.AwakeningMax + 1)); + a.AwakeningSetRandom(); break; } LoadAVs(a);