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); }