예제 #1
0
        private string ParseLineMove(string line)
        {
            string moveString = line.Substring(line[1] == ' ' ? 2 : 1);

            if (!moveString.Contains("Hidden Power"))
            {
                return(moveString);
            }

            // Defined Hidden Power
            if (moveString.Length > 13)
            {
                string type = moveString.Remove(0, 13);
                ReplaceAll(ref type, "", "[", "]", "(", ")"); // Trim out excess data
                int hpVal = Array.IndexOf(hptypes, type);     // Get HP Type
                if (hpVal >= 0)
                {
                    IVs = PKX.SetHPIVs(hpVal, IVs); // Get IVs
                }
                else
                {
                    InvalidLines.Add($"Invalid Hidden Power Type: {type}");
                }
            }
            moveString = "Hidden Power";
            return(moveString);
        }
예제 #2
0
        private string ParseLineMove(string line)
        {
            string moveString = line.Substring(line[1] == ' ' ? 2 : 1);

            if (!moveString.Contains(moves[237])) // Hidden Power
            {
                return(moveString);
            }

            // Defined Hidden Power
            if (moveString.Length > 13)
            {
                string type = moveString.Remove(0, 13);
                type = ReplaceAll(type, string.Empty, "[", "]", "(", ")"); // Trim out excess data
                int hpVal = Array.IndexOf(hptypes, type);                  // Get HP Type

                if (IVs.Any(z => z != 31))
                {
                    if (!HiddenPower.SetIVsForType(hpVal, IVs))
                    {
                        InvalidLines.Add($"Invalid IVs for Hidden Power Type: {type}");
                    }
                }
                else if (hpVal >= 0)
                {
                    IVs = PKX.SetHPIVs(hpVal, IVs); // Get IVs
                }
                else
                {
                    InvalidLines.Add($"Invalid Hidden Power Type: {type}");
                }
            }
            return(moves[237]);
        }
예제 #3
0
        public static bool SetIVsForType(int hpVal, int[] IVs)
        {
            if (IVs.All(z => z == 31))
            {
                PKX.SetHPIVs(hpVal, IVs); // Get IVs
                return(true);
            }

            int current = GetType(IVs);

            if (current == hpVal)
            {
                return(true); // no mods necessary
            }
            // Required HP type doesn't match IVs. Make currently-flawless IVs flawed.
            int[] best = GetSuggestedHiddenPowerIVs(hpVal, IVs);
            if (best == null)
            {
                return(false); // can't force hidden power?
            }
            // set IVs back to array
            for (int i = 0; i < IVs.Length; i++)
            {
                IVs[i] = best[i];
            }
            return(true);
        }
예제 #4
0
        private string ParseLineMove(string line)
        {
            const int hiddenPower = 237;
            string    moveString  = line.Substring(line[1] == ' ' ? 2 : 1).Trim();

            if (!moveString.StartsWith(Strings.Move[hiddenPower])) // Hidden Power
            {
                return(moveString);                                // regular move
            }
            if (moveString.Length <= 13)
            {
                return(Strings.Move[hiddenPower]);
            }

            // Defined Hidden Power
            string type = moveString.Substring(13);

            type = RemoveAll(type, ParenJunk);                  // Trim out excess data
            int hpVal = Array.IndexOf(Strings.types, type) - 1; // Get HP Type

            HiddenPowerType = hpVal;
            if (IVs.Any(z => z != 31))
            {
                if (!HiddenPower.SetIVsForType(hpVal, IVs, Format))
                {
                    InvalidLines.Add($"Invalid IVs for Hidden Power Type: {type}");
                }
            }
            else if (hpVal >= 0)
            {
                IVs = PKX.SetHPIVs(hpVal, IVs, Format); // Get IVs
            }
            else
            {
                InvalidLines.Add($"Invalid Hidden Power Type: {type}");
            }
            return(Strings.Move[hiddenPower]);
        }