○お守り生成アルゴリズム(詳細)
ここでは風化したお守りで鑑定時の乱数が21799だった場合を例に取って説明を行う。
1.スキル1の種類の決定
21799から乱数を1つ進める。
f1(21799) = 45570
風化お守りスキル1の種類(55)で割った余り(判定値)を求める。
45570 % 55 = 30
判定値30を表で参照し、スキル1の種類として「匠」が決定される。
2.スキル1の値の判定
乱数を更に1つ進める。
f2(21799) = 46034
表から「匠」の最大値は5,最小値は1なので、以下の計算を行う。
(最小値〜最大値の間でランダムに選ばれる)
46034 % ([最大値] - [最小値] + 1) + [最小値]
= 46034 % 5 + 1 = 5
スキル1の値として5が決定される。
また、以下の式の値を「充足値A」として計算しておく。
[スキル1値] * 10 / [最大値]
= 5 * 10 / 5 = 10
※充足値Aの範囲は約1〜10
3.スキル2の有無の判定
乱数を更に1つ進める。
f3(21799) = 62335
100で割った余りを判定値として求める。
62335 % 100 = 35
閾値20以上なのでスキル2は「有り」と判定される。
(ここでは20%の確率で無し、80%の確率で有り、と判定される)
「有り」と判定された場合ステップ4へ、「無し」と判定された場合はステップ7へ進む。
※ここで「有り」と判定された場合でも、ステップ4で決定されたスキル2の種類がスキル1と重複した場合や、
ステップ5のスキル値が0だった場合、最終的にスキル2は無しとなる場合がある。
4.スキル2の種類の判定
乱数を更に1つ進める。
f4(21799) = 55339
風化お守りスキル2の種類(83)で割った余り(判定値)を求める。
55339 % 83 = 61
判定値61を表で参照し、スキル2の種類として「属性解放」が決定される。
※スキル1の種類と重複した場合、スキル2は無しとなるが、その場合もステップ5で判定を行う。
5.スキル2の値の正負判定
乱数を更に1つ進める。
f5(21799) = 577
2で割った余りを判定値として求める。
577 % 2 = 1
判定値が1の場合正の値が、0の場合は負の値が次のステップ6で選ばれる。
6.スキル2の値の判定
乱数を更に1つ進める。
f6(21799) = 36189
前のステップで「正」と判定されたので、
表から「属性解放」の最大値7を参照し、以下の計算式で求める。
46034 % [最大値] + 1
= 46034 % 7 + 1 = 7
※この計算式はステップ2の計算式の[最小値]に1を入れたものと同一で、
1〜最大値の間からランダムに選ぶのと同じ意味
また、前のステップで「負」と判定された場合は次の計算式を使う。
46034 % (1 - [最小値]) + [最小値]
※ステップ2の計算式の[最大値]に0を入れたものと同一で、
最小値〜0の間からランダムに選ぶのと同じ意味
仮にこの例で前ステップで「負」と判定された場合は、
表から最小値-5を参照し、次の結果になる。
46034 % (1 - (-5)) + (-5) = 46034 % 6 - 5 = -4
※ここで0が算出された場合はスキル2は無しになる。
ステップ2同様に「充足値B」を算出する。
[スキル2値] * 10 / [最大値]
7 * 10 / 7 = 10
※充足値Bの範囲は0〜10
※ステップ3でスキル2「無し」と判定されていたり、
前ステップで「負」と判定されている場合は計算せずに「充足値B」は0とする。
7.スロット数の判定
更に乱数を進める
f7(21799) = 29053
※ステップ3でスキル2「無し」と判定された場合はf4(21799)を計算することになる。
100で割った余りを判定値とする。
29053 % 100 = 53
また、充足値Aと充足値Bの合計を求める(小数点以下切捨て)
10 + 10 = 20
表から充足値20の行を参照し、判定値53が属するところ(0)をスロット数とする。
8.護石の種類の決定
充足値 + スロット数 * 2
= 20 + 0 * 2 = 20
英雄 1〜9
伝説 10〜15
天 16〜20
天の護石と決定される。