Exemple #1
0
        void InitializeComboBox()
        {
            // モード
            f_ComboBoxModeSelector_35.Items.Clear();
            f_ComboBoxModeSelector_35.Items.Add(Messages.Instance.SystemLabel["Pokemon35_1_2V"]);
            f_ComboBoxModeSelector_35.Items.Add(Messages.Instance.SystemLabel["Pokemon35_1_3V"]);

            // ★3~5パネル
            PokemonFormUtility.SetNatureComboBox(f_ComboBoxNature_351);
            PokemonFormUtility.SetNatureComboBox(f_ComboBoxNature_352);
            PokemonFormUtility.SetNatureComboBox(f_ComboBoxNature_353);
            PokemonFormUtility.SetCharacteristicComboBox(f_ComboBoxCharacteristic_351);
            PokemonFormUtility.SetCharacteristicComboBox(f_ComboBoxCharacteristic_352);
            PokemonFormUtility.SetCharacteristicComboBox(f_ComboBoxCharacteristic_353);
            PokemonFormUtility.SetAbilityComboBox(f_ComboBoxAbility_351, 4);
            PokemonFormUtility.SetAbilityComboBox(f_ComboBoxAbility_352, 4);
            PokemonFormUtility.SetAbilityComboBox(f_ComboBoxAbility_353, 4);

            // ★1~2パネル
            PokemonFormUtility.SetNatureComboBox(f_ComboBoxNature_1);
            PokemonFormUtility.SetNatureComboBox(f_ComboBoxNature_2);
            PokemonFormUtility.SetAbilityComboBox(f_ComboBoxAbility_1, 4);
            PokemonFormUtility.SetAbilityComboBox(f_ComboBoxAbility_2, 4);
        }
Exemple #2
0
        public void Generate()
        {
            UInt64 seed = m_DenSeed;             // 消費数0のDen Seed

            UInt32 ec, otid, pid;

            int[]  ivs = new int[6];
            UInt32 fixedIndex;
            UInt32 ability;
            UInt32 gender;
            UInt32 nature;

            using (StreamWriter sw = new StreamWriter("list.txt"))
            {
                sw.Write($"{Messages.Instance.ListLabel["Frame"]},");
                if (m_isShowSeed)
                {
                    sw.Write("Seed,");
                }
                if (m_isShowEc)
                {
                    sw.Write("EC,");
                }
                for (int i = 0; i < 6; ++i)
                {
                    sw.Write($"{Messages.Instance.Status[i]},");
                }
                sw.Write($"{Messages.Instance.ListLabel["Ability"]},");
                sw.Write($"{Messages.Instance.ListLabel["Nature"]},");
                sw.WriteLine($"{Messages.Instance.ListLabel["Shiny"]}");

                for (int frame = 0; frame <= m_MaxCount; ++frame)
                {
                    Xoroshiro xoroshiro = new Xoroshiro(seed);

                    // seedを進める
                    ec   = xoroshiro.Next(0xFFFFFFFFu);
                    otid = xoroshiro.Next(0xFFFFFFFFu);
                    pid  = xoroshiro.Next(0xFFFFFFFFu);

                    bool isShiny  = ((((otid ^ (otid >> 16)) >> 4) & 0xFFF) == (((pid ^ (pid >> 16)) >> 4) & 0xFFF));
                    bool isSquare = (((otid ^ (otid >> 16)) & 0xFFFF) == ((pid ^ (pid >> 16)) & 0xFFFF));

                    if (m_isShinyCheck && !isShiny)
                    {
                        seed = seed + 0x82a2b175229d6a5bul;
                        continue;
                    }

                    // V箇所決定
                    for (int i = 0; i < 6; ++i)
                    {
                        ivs[i] = -1;
                    }

                    int fixedCount = 0;
                    do
                    {
                        fixedIndex = 0;
                        do
                        {
                            fixedIndex = xoroshiro.Next(7);                             // V箇所
                        } while (fixedIndex >= 6);

                        if (ivs[fixedIndex] == -1)
                        {
                            ivs[fixedIndex] = 31;
                            ++fixedCount;
                        }
                    } while (fixedCount < m_VCount);

                    // 個体値を埋める
                    for (int i = 0; i < 6; ++i)
                    {
                        if (ivs[i] == -1)
                        {
                            ivs[i] = (int)xoroshiro.Next(0x1F);
                        }
                    }

                    // 特性
                    if (m_AbilityFlag == 2)
                    {
                        ability = 2;
                    }
                    else if (m_AbilityFlag == 4)
                    {
                        do
                        {
                            ability = xoroshiro.Next(3);
                        } while (ability >= 3);
                    }
                    else
                    {
                        ability = xoroshiro.Next(1);
                    }

                    // 性別値
                    if (!m_isNoGender)
                    {
                        do
                        {
                            gender = xoroshiro.Next(0xFF);
                        } while (gender >= 253);
                    }

                    // 性格
                    do
                    {
                        nature = xoroshiro.Next(0x1F);
                    } while (nature >= 25);

                    // 出力
                    sw.Write($"{frame},");
                    if (m_isShowSeed)
                    {
                        sw.Write($"{seed:X16},");
                    }
                    if (m_isShowEc)
                    {
                        sw.Write($"{ec:X8},");
                    }
                    sw.Write($"{ivs[0]},{ivs[1]},{ivs[2]},{ivs[3]},{ivs[4]},{ivs[5]},");
                    sw.Write(ability == 2 ? $"{Messages.Instance.ListLabel["HiddenAbility"]}," : $"{ability + 1},");
                    sw.Write($"{PokemonFormUtility.GetNatureString((int)nature)},");
                    if (isShiny)
                    {
                        sw.WriteLine(isSquare ? Messages.Instance.ListLabel["SquareShiny"] : Messages.Instance.ListLabel["StarShiny"]);
                    }
                    else if (!m_isShinyCheck)
                    {
                        sw.WriteLine("");
                    }

                    seed = seed + 0x82a2b175229d6a5bul;
                }
            }

            Process ps = new Process();

            ps.StartInfo.FileName = "list.txt";
            ps.Start();
        }
Exemple #3
0
        void ChangeLanguage(bool isFirst, Language language)
        {
            int[]     nature         = new int[5];
            int[]     characteristic = new int[3];
            decimal[] pokemon        = new decimal[3];

            if (!isFirst)
            {
                nature = new int[] {
                    Messages.Instance.Nature[f_ComboBoxNature_1.Text],
                    Messages.Instance.Nature[f_ComboBoxNature_2.Text],
                    Messages.Instance.Nature[f_ComboBoxNature_351.Text],
                    Messages.Instance.Nature[f_ComboBoxNature_352.Text],
                    Messages.Instance.Nature[f_ComboBoxNature_353.Text],
                };

                characteristic = new int[] {
                    Messages.Instance.Characteristic[f_ComboBoxCharacteristic_351.Text],
                    Messages.Instance.Characteristic[f_ComboBoxCharacteristic_352.Text],
                    Messages.Instance.Characteristic[f_ComboBoxCharacteristic_353.Text],
                };

                pokemon = new decimal[]
                {
                    Messages.Instance.Pokemon.ContainsKey(f_ComboBoxPokemon351.Text) ? Messages.Instance.Pokemon[f_ComboBoxPokemon351.Text] : -1,
                    Messages.Instance.Pokemon.ContainsKey(f_ComboBoxPokemon352.Text) ? Messages.Instance.Pokemon[f_ComboBoxPokemon352.Text] : -1,
                    Messages.Instance.Pokemon.ContainsKey(f_ComboBoxPokemon353.Text) ? Messages.Instance.Pokemon[f_ComboBoxPokemon353.Text] : -1
                };
            }

            // 言語のロード
            if (!Messages.Initialize(language))
            {
                MessageBox.Show("言語ファイルの読み込みに失敗しました。\n----------\n" + Messages.ErrorText, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // コンボボックスは一旦値を退避してセット
            int modeIndex = 0;

            int[] abilityIndex = new int[5];

            if (!isFirst)
            {
                modeIndex = f_ComboBoxModeSelector_35.SelectedIndex;
                f_ComboBoxModeSelector_35.Items.Clear();

                f_ComboBoxNature_1.Items.Clear();
                f_ComboBoxNature_2.Items.Clear();
                f_ComboBoxNature_351.Items.Clear();
                f_ComboBoxNature_352.Items.Clear();
                f_ComboBoxNature_353.Items.Clear();

                f_ComboBoxCharacteristic_351.Items.Clear();
                f_ComboBoxCharacteristic_352.Items.Clear();
                f_ComboBoxCharacteristic_353.Items.Clear();

                f_ComboBoxPokemon351.Items.Clear();
                f_ComboBoxPokemon352.Items.Clear();
                f_ComboBoxPokemon353.Items.Clear();

                abilityIndex = new int[] {
                    f_ComboBoxAbility_1.SelectedIndex,
                    f_ComboBoxAbility_2.SelectedIndex,
                    f_ComboBoxAbility_351.SelectedIndex,
                    f_ComboBoxAbility_352.SelectedIndex,
                    f_ComboBoxAbility_353.SelectedIndex,
                };
                f_ComboBoxAbility_1.Items.Clear();
                f_ComboBoxAbility_2.Items.Clear();
                f_ComboBoxAbility_351.Items.Clear();
                f_ComboBoxAbility_352.Items.Clear();
                f_ComboBoxAbility_353.Items.Clear();
            }

            // 設定変更
            m_Preferences.Language = language;

            // メニューアイテムのチェック
            switch (language)
            {
            case Language.Japanese:
                f_MenuItemLanguageJp.Checked    = true;
                f_MenuItemLanguageEn.Checked    = false;
                f_MenuItemLanguageZh.Checked    = false;
                f_MenuItemLanguageZh_TW.Checked = false;
                break;

            case Language.English:
                f_MenuItemLanguageJp.Checked    = false;
                f_MenuItemLanguageEn.Checked    = true;
                f_MenuItemLanguageZh.Checked    = false;
                f_MenuItemLanguageZh_TW.Checked = false;
                break;

            case Language.ChineseZh:
                f_MenuItemLanguageJp.Checked    = false;
                f_MenuItemLanguageEn.Checked    = false;
                f_MenuItemLanguageZh.Checked    = true;
                f_MenuItemLanguageZh_TW.Checked = false;
                break;

            case Language.ChineseZh_TW:
                f_MenuItemLanguageJp.Checked    = false;
                f_MenuItemLanguageEn.Checked    = false;
                f_MenuItemLanguageZh.Checked    = false;
                f_MenuItemLanguageZh_TW.Checked = true;
                break;
            }

            // コントロールにメッセージを適用
            foreach (var pair in m_MultiLanguageControls)
            {
                string str = Messages.Instance.SystemLabel[pair.Key];
                foreach (var control in pair.Value)
                {
                    control.Text = str;
                }
            }

            // パラメータラベル
            f_LabelStatus0_1.Text       = Messages.Instance.Status[0];
            f_LabelStatus1_1.Text       = Messages.Instance.Status[1];
            f_LabelStatus2_1.Text       = Messages.Instance.Status[2];
            f_LabelStatus3_1.Text       = Messages.Instance.Status[3];
            f_LabelStatus4_1.Text       = Messages.Instance.Status[4];
            f_LabelStatus5_1.Text       = Messages.Instance.Status[5];
            f_LabelStatus0_2.Text       = Messages.Instance.Status[0];
            f_LabelStatus1_2.Text       = Messages.Instance.Status[1];
            f_LabelStatus2_2.Text       = Messages.Instance.Status[2];
            f_LabelStatus3_2.Text       = Messages.Instance.Status[3];
            f_LabelStatus4_2.Text       = Messages.Instance.Status[4];
            f_LabelStatus5_2.Text       = Messages.Instance.Status[5];
            f_LabelStatus0_351.Text     = Messages.Instance.Status[0];
            f_LabelStatus1_351.Text     = Messages.Instance.Status[1];
            f_LabelStatus2_351.Text     = Messages.Instance.Status[2];
            f_LabelStatus3_351.Text     = Messages.Instance.Status[3];
            f_LabelStatus4_351.Text     = Messages.Instance.Status[4];
            f_LabelStatus5_351.Text     = Messages.Instance.Status[5];
            f_LabelStatus0_352.Text     = Messages.Instance.Status[0];
            f_LabelStatus1_352.Text     = Messages.Instance.Status[1];
            f_LabelStatus2_352.Text     = Messages.Instance.Status[2];
            f_LabelStatus3_352.Text     = Messages.Instance.Status[3];
            f_LabelStatus4_352.Text     = Messages.Instance.Status[4];
            f_LabelStatus5_352.Text     = Messages.Instance.Status[5];
            f_LabelStatus0_353.Text     = Messages.Instance.Status[0];
            f_LabelStatus1_353.Text     = Messages.Instance.Status[1];
            f_LabelStatus2_353.Text     = Messages.Instance.Status[2];
            f_LabelStatus3_353.Text     = Messages.Instance.Status[3];
            f_LabelStatus4_353.Text     = Messages.Instance.Status[4];
            f_LabelStatus5_353.Text     = Messages.Instance.Status[5];
            f_LabelLevel351.Text        = Messages.Instance.Status[6];
            f_LabelLevel352.Text        = Messages.Instance.Status[6];
            f_LabelLevel353.Text        = Messages.Instance.Status[6];
            f_LabelPokemon351.Text      = Messages.Instance.SystemLabel["Pokemon"];
            f_LabelPokemon352.Text      = Messages.Instance.SystemLabel["Pokemon"];
            f_LabelPokemon353.Text      = Messages.Instance.SystemLabel["Pokemon"];
            f_ButtonIVCalculate351.Text = Messages.Instance.SystemLabel["CalculateIVs"];
            f_ButtonIVCalculate352.Text = Messages.Instance.SystemLabel["CalculateIVs"];
            f_ButtonIVCalculate353.Text = Messages.Instance.SystemLabel["CalculateIVs"];

            // コンボボックス再初期化
            InitializeComboBox();

            // 退避していた選択をセット
            f_ComboBoxModeSelector_35.SelectedIndex = modeIndex;
            if (!isFirst)
            {
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_1, nature[0]);
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_2, nature[1]);
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_351, nature[2]);
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_352, nature[3]);
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_353, nature[4]);
                PokemonFormUtility.SelectCharacteristicComboBox(f_ComboBoxCharacteristic_351, characteristic[0]);
                PokemonFormUtility.SelectCharacteristicComboBox(f_ComboBoxCharacteristic_352, characteristic[1]);
                PokemonFormUtility.SelectCharacteristicComboBox(f_ComboBoxCharacteristic_353, characteristic[2]);
                f_ComboBoxAbility_1.SelectedIndex   = abilityIndex[0];
                f_ComboBoxAbility_2.SelectedIndex   = abilityIndex[1];
                f_ComboBoxAbility_351.SelectedIndex = abilityIndex[2];
                f_ComboBoxAbility_352.SelectedIndex = abilityIndex[3];
                f_ComboBoxAbility_353.SelectedIndex = abilityIndex[4];

                populateComboBoxes();
                if (pokemon[0] != -1)
                {
                    var idxa = (from i in Messages.Instance.Pokemon.Keys
                                where Messages.Instance.Pokemon[i] == pokemon[0]
                                select i).First();
                    f_ComboBoxPokemon351.SelectedIndex = f_ComboBoxPokemon351.Items.IndexOf(idxa);
                }

                if (pokemon[1] != -1)
                {
                    var idxb = (from i in Messages.Instance.Pokemon.Keys
                                where Messages.Instance.Pokemon[i] == pokemon[1]
                                select i).First();
                    f_ComboBoxPokemon352.SelectedIndex = f_ComboBoxPokemon351.Items.IndexOf(idxb);
                }

                if (pokemon[2] != -1)
                {
                    var idxc = (from i in Messages.Instance.Pokemon.Keys
                                where Messages.Instance.Pokemon[i] == pokemon[2]
                                select i).First();
                    f_ComboBoxPokemon353.SelectedIndex = f_ComboBoxPokemon351.Items.IndexOf(idxc);
                }
            }
        }
Exemple #4
0
        void ChangeLanguage(bool isFirst, Language language)
        {
            int[] nature         = new int[5];
            int[] characteristic = new int[5];

            if (!isFirst)
            {
                nature = new int[] {
                    Messages.Instance.Nature[f_ComboBoxNature_1.Text],
                    Messages.Instance.Nature[f_ComboBoxNature_2.Text],
                    Messages.Instance.Nature[f_ComboBoxNature_351.Text],
                    Messages.Instance.Nature[f_ComboBoxNature_352.Text],
                    Messages.Instance.Nature[f_ComboBoxNature_353.Text],
                };

                characteristic = new int[] {
                    Messages.Instance.Characteristic[f_ComboBoxCharacteristic_351.Text],
                    Messages.Instance.Characteristic[f_ComboBoxCharacteristic_352.Text],
                    Messages.Instance.Characteristic[f_ComboBoxCharacteristic_353.Text],
                };
            }

            // 言語のロード
            if (!Messages.Initialize(language))
            {
                MessageBox.Show("言語ファイルの読み込みに失敗しました。\n----------\n" + Messages.ErrorText, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // コンボボックスは一旦値を退避してセット
            int modeIndex = 0;

            int[] abilityIndex = new int[5];

            if (!isFirst)
            {
                modeIndex = f_ComboBoxModeSelector_35.SelectedIndex;
                f_ComboBoxModeSelector_35.Items.Clear();

                f_ComboBoxNature_1.Items.Clear();
                f_ComboBoxNature_2.Items.Clear();
                f_ComboBoxNature_351.Items.Clear();
                f_ComboBoxNature_352.Items.Clear();
                f_ComboBoxNature_353.Items.Clear();

                f_ComboBoxCharacteristic_351.Items.Clear();
                f_ComboBoxCharacteristic_352.Items.Clear();
                f_ComboBoxCharacteristic_353.Items.Clear();

                abilityIndex = new int[] {
                    f_ComboBoxAbility_1.SelectedIndex,
                    f_ComboBoxAbility_2.SelectedIndex,
                    f_ComboBoxAbility_351.SelectedIndex,
                    f_ComboBoxAbility_352.SelectedIndex,
                    f_ComboBoxAbility_353.SelectedIndex,
                };
                f_ComboBoxAbility_1.Items.Clear();
                f_ComboBoxAbility_2.Items.Clear();
                f_ComboBoxAbility_351.Items.Clear();
                f_ComboBoxAbility_352.Items.Clear();
                f_ComboBoxAbility_353.Items.Clear();
            }

            // 設定変更
            m_Preferences.Language = language;

            // メニューアイテムのチェック
            switch (language)
            {
            case Language.Japanese:
                f_MenuItemLanguageJp.Checked = true;
                f_MenuItemLanguageEn.Checked = false;
                break;

            case Language.English:
                f_MenuItemLanguageJp.Checked = false;
                f_MenuItemLanguageEn.Checked = true;
                break;
            }

            // コントロールにメッセージを適用
            foreach (var pair in m_MultiLanguageControls)
            {
                string str = Messages.Instance.SystemLabel[pair.Key];
                foreach (var control in pair.Value)
                {
                    control.Text = str;
                }
            }

            // パラメータラベル
            f_LabelStatus0_1.Text   = Messages.Instance.Status[0];
            f_LabelStatus1_1.Text   = Messages.Instance.Status[1];
            f_LabelStatus2_1.Text   = Messages.Instance.Status[2];
            f_LabelStatus3_1.Text   = Messages.Instance.Status[3];
            f_LabelStatus4_1.Text   = Messages.Instance.Status[4];
            f_LabelStatus5_1.Text   = Messages.Instance.Status[5];
            f_LabelStatus0_2.Text   = Messages.Instance.Status[0];
            f_LabelStatus1_2.Text   = Messages.Instance.Status[1];
            f_LabelStatus2_2.Text   = Messages.Instance.Status[2];
            f_LabelStatus3_2.Text   = Messages.Instance.Status[3];
            f_LabelStatus4_2.Text   = Messages.Instance.Status[4];
            f_LabelStatus5_2.Text   = Messages.Instance.Status[5];
            f_LabelStatus0_351.Text = Messages.Instance.Status[0];
            f_LabelStatus1_351.Text = Messages.Instance.Status[1];
            f_LabelStatus2_351.Text = Messages.Instance.Status[2];
            f_LabelStatus3_351.Text = Messages.Instance.Status[3];
            f_LabelStatus4_351.Text = Messages.Instance.Status[4];
            f_LabelStatus5_351.Text = Messages.Instance.Status[5];
            f_LabelStatus0_352.Text = Messages.Instance.Status[0];
            f_LabelStatus1_352.Text = Messages.Instance.Status[1];
            f_LabelStatus2_352.Text = Messages.Instance.Status[2];
            f_LabelStatus3_352.Text = Messages.Instance.Status[3];
            f_LabelStatus4_352.Text = Messages.Instance.Status[4];
            f_LabelStatus5_352.Text = Messages.Instance.Status[5];
            f_LabelStatus0_353.Text = Messages.Instance.Status[0];
            f_LabelStatus1_353.Text = Messages.Instance.Status[1];
            f_LabelStatus2_353.Text = Messages.Instance.Status[2];
            f_LabelStatus3_353.Text = Messages.Instance.Status[3];
            f_LabelStatus4_353.Text = Messages.Instance.Status[4];
            f_LabelStatus5_353.Text = Messages.Instance.Status[5];

            // コンボボックス再初期化
            InitializeComboBox();

            // 退避していた選択をセット
            f_ComboBoxModeSelector_35.SelectedIndex = modeIndex;
            if (!isFirst)
            {
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_1, nature[0]);
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_2, nature[1]);
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_351, nature[2]);
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_352, nature[3]);
                PokemonFormUtility.SelectNatureComboBox(f_ComboBoxNature_353, nature[4]);
                PokemonFormUtility.SelectCharacteristicComboBox(f_ComboBoxCharacteristic_351, characteristic[0]);
                PokemonFormUtility.SelectCharacteristicComboBox(f_ComboBoxCharacteristic_352, characteristic[1]);
                PokemonFormUtility.SelectCharacteristicComboBox(f_ComboBoxCharacteristic_353, characteristic[2]);
                f_ComboBoxAbility_1.SelectedIndex   = abilityIndex[0];
                f_ComboBoxAbility_2.SelectedIndex   = abilityIndex[1];
                f_ComboBoxAbility_351.SelectedIndex = abilityIndex[2];
                f_ComboBoxAbility_352.SelectedIndex = abilityIndex[3];
                f_ComboBoxAbility_353.SelectedIndex = abilityIndex[4];
            }
        }
Exemple #5
0
        public void Generate()
        {
            PersonalInfo personalInfo = PersonalTable.SWSH[m_Pokemon.DataSpecies];
            var          abilityList  = PKHeX.Core.Util.GetAbilitiesList(Messages.Instance.LangCode);

            UInt64 seed = m_DenSeed;             // 消費数0のDen Seed

            UInt32 ec, otid, pid;

            int[]  ivs = new int[6];
            UInt32 fixedIndex;
            UInt32 ability;
            UInt32 gender = 0;
            UInt32 nature;

            using (StreamWriter sw = new StreamWriter("list.txt"))
            {
                sw.Write($"{Messages.Instance.ListLabel["Frame"]},");
                if (m_isShowSeed)
                {
                    sw.Write("Seed,");
                }
                if (m_isShowEc)
                {
                    sw.Write("EC,");
                }
                for (int i = 0; i < 6; ++i)
                {
                    sw.Write($"{Messages.Instance.Status[i]},");
                }
                if (!m_Pokemon.IsFixedGender)
                {
                    sw.Write($"{Messages.Instance.SystemLabel["Gender"]},");
                }
                sw.Write($"{Messages.Instance.ListLabel["Ability"]},");
                sw.Write($"{Messages.Instance.ListLabel["Nature"]},");
                sw.WriteLine($"{Messages.Instance.ListLabel["Shiny"]}");

                for (int frame = 0; frame <= m_MaxCount; ++frame)
                {
                    Xoroshiro xoroshiro = new Xoroshiro(seed);

                    // seedを進める
                    ec   = xoroshiro.Next(0xFFFFFFFFu);
                    otid = xoroshiro.Next(0xFFFFFFFFu);
                    pid  = xoroshiro.Next(0xFFFFFFFFu);

                    bool isShiny  = ((((otid ^ (otid >> 16)) >> 4) & 0xFFF) == (((pid ^ (pid >> 16)) >> 4) & 0xFFF));
                    bool isSquare = (((otid ^ (otid >> 16)) & 0xFFFF) == ((pid ^ (pid >> 16)) & 0xFFFF));

                    if (m_isShinyCheck && !isShiny)
                    {
                        seed = seed + 0x82a2b175229d6a5bul;
                        continue;
                    }

                    // V箇所決定
                    for (int i = 0; i < 6; ++i)
                    {
                        ivs[i] = -1;
                    }

                    int fixedCount = 0;
                    do
                    {
                        fixedIndex = 0;
                        do
                        {
                            fixedIndex = xoroshiro.Next(7);                             // V箇所
                        } while (fixedIndex >= 6);

                        if (ivs[fixedIndex] == -1)
                        {
                            ivs[fixedIndex] = 31;
                            ++fixedCount;
                        }
                    } while (fixedCount < m_Pokemon.FlawlessIvs);

                    // 個体値を埋める
                    for (int i = 0; i < 6; ++i)
                    {
                        if (ivs[i] == -1)
                        {
                            ivs[i] = (int)xoroshiro.Next(0x1F);
                        }
                    }

                    // 特性
                    if (m_Pokemon.Ability == 2)
                    {
                        ability = 2;
                    }
                    else if (m_Pokemon.Ability == 4)
                    {
                        do
                        {
                            ability = xoroshiro.Next(3);
                        } while (ability >= 3);
                    }
                    else
                    {
                        ability = xoroshiro.Next(1);
                    }

                    // 性別値
                    if (!m_Pokemon.IsFixedGender)
                    {
                        do
                        {
                            gender = xoroshiro.Next(0xFF);
                        } while (gender >= 253);
                    }

                    // 性格
                    do
                    {
                        nature = xoroshiro.Next(PokemonFormUtility.NatureTableList[m_Pokemon.NatureTableId].Max);
                    } while (nature >= PokemonFormUtility.NatureTableList[m_Pokemon.NatureTableId].Pattern);

                    // 出力
                    sw.Write($"{frame},");
                    if (m_isShowSeed)
                    {
                        sw.Write($"{seed:X16},");
                    }
                    if (m_isShowEc)
                    {
                        sw.Write($"{ec:X8},");
                    }
                    sw.Write($"{ivs[0]},{ivs[1]},{ivs[2]},{ivs[3]},{ivs[4]},{ivs[5]},");
                    if (!m_Pokemon.IsFixedGender)
                    {
                        if (gender + 1 < personalInfo.Gender)
                        {
                            sw.Write($"{Messages.Instance.Gender[1]},");
                        }
                        else
                        {
                            sw.Write($"{Messages.Instance.Gender[0]},");
                        }
                    }
                    if (m_isShowAbilityName)
                    {
                        sw.Write($"{abilityList[personalInfo.Abilities[ability]]},");
                    }
                    else
                    {
                        sw.Write(ability == 2 ? $"{Messages.Instance.ListLabel["HiddenAbility"]}," : $"{ability + 1},");
                    }
                    sw.Write($"{PokemonFormUtility.GetNatureString(PokemonFormUtility.NatureTableList[m_Pokemon.NatureTableId].List[nature])},");
                    if (isShiny)
                    {
                        sw.WriteLine(isSquare ? Messages.Instance.ListLabel["SquareShiny"] : Messages.Instance.ListLabel["StarShiny"]);
                    }
                    else if (!m_isShinyCheck)
                    {
                        sw.WriteLine("");
                    }

                    seed = seed + 0x82a2b175229d6a5bul;
                }
            }

            Process ps = new Process();

            ps.StartInfo.FileName = "list.txt";
            ps.Start();
        }