public static ShieldBase GetItem(long objNo, bool isRandomValue)
    {
        TableShieldData data = Array.Find(Table, i => i.ObjNo == objNo);
        ShieldBase      item = new ShieldBase();

        item.Initialize();
        if (GameStateInformation.IsEnglish == false)
        {
            item.DisplayName = data.DisplayName;
            item.Description = data.Description;
        }
        else
        {
            item.DisplayName = data.DisplayNameEn;
            item.Description = data.DescriptionEn;
        }
        item.ApType            = data.ApType;
        item.ObjNo             = data.ObjNo;
        item.ShieldBaseDefense = data.Defense;
        item.ThrowDexterity    = data.ThrowDexterity;

        if (isRandomValue == false)
        {
            return(item);
        }
        QualifyInformation q = TableQualify.GetRandomName(data.Level);

        item.DisplayNameBefore      = q.Name;
        item.DisplayNameBeforeObjNo = q.ObjNo;
        item.StrengthValue          = CommonFunction.ConvergenceRandom(data.StrengthAddStart, data.StrengthAddContinue, data.StrengthnAddReduce);
        int optioncount = CommonFunction.ConvergenceRandom(data.OptionAddStart, data.OptionAddContinue, data.OptionAddReduce);
        int index       = 0;

        for (int i = 0; i < optioncount; i++)
        {
            //30回回して終わらなかったら強制終了
            if (index > 30)
            {
                break;
            }
            index++;
            uint       rnd    = CommonFunction.GetRandomUInt32();
            BaseOption newOpt = TableOptionCommon.GetValue(OptionBaseType.Shield, rnd, data.OptionPowStart, data.OptionPowContinue, data.OptionPowReduce);

            //同じオプションがすでに含まれていたらもう一度算出
            if (CommonFunction.IsNull(newOpt) == true)
            {
                i--;
                continue;
            }
            BaseOption containOpt = item.Options.Find(o => o.ObjNo == newOpt.ObjNo);
            if (CommonFunction.IsNull(containOpt) == false)
            {
                i--;
                continue;
            }
            item.Options.Add(newOpt);
        }
        return(item);
    }