2013/11/21
■ [変愚蛮怒/スポイラー][別記事追加予定] create_artifact()による☆アーティファクトの生成プロセス(変愚蛮怒 Ver2.1.4 rev3503)
参考
11/28に取り消し線部分修正。
関数によるサブルーチンは後日解説。
- POWERを1+1d5で決める。
- まず生成対象となるベースアイテムの特性を全て引き継ぐ。
- アーティファクト生成の巻物による生成ならば1/4の確率でプレイヤーの職業に応じたバイアスを指定する。
- 戦士、狂戦士、アーチャー、剣術家、騎兵、鍛冶師ならば戦士系バイアス。
- メイジ、ハイメイジ、スペルマスター、魔道具術師、青魔道師ならばメイジ系バイアス。
- プリースト、修行僧、練気術師ならばプリースト系バイアス。
- 盗賊、忍者ならば盗賊系バイアス。
- レンジャー、スナイパーならばレンジャー系バイアス。
- パラディンならば40%の確率で戦士系バイアス、60%の確率でプリースト系バイアス。
- 魔法戦士、赤魔道師ならば40%の確率で戦士系バイアス、60%の確率でメイジ系バイアス。
- 超能力者、吟遊詩人は、60%の確率でプリースト系バイアス、そうでなければ偏りなし。
- 観光客は60%の確率で戦士系バイアス、そうでなければ偏りなし。
- ものまね師は50%の確率でレンジャー系バイアス、そうでなければ偏りはなし。
- 魔獣使いは50%の確率で魅力バイアス、50%の確率で戦士系バイアス。
- 鏡使いは75%の確率でメイジ系バイアス、25%の確率で盗賊系バイアス。
- 巻物生成でない場合1/13の確率で呪いのアーティファクトになる。
- 指輪やアミュレットがデフォルトで呪い持ちの場合必ず呪いのアーティファクトになる。
- 1/POWERか、8/35の確率いずれかを通る毎にPOWERに1を加算し続ける。
- 呪いが確定しておらず、1/12の確率を通れば、POWERを倍にする。
- 呪いが確定しているなら、POWERを半分(少数切捨て)にする。
- 得られたPOWERの数だけ、武器と矢弾なら1d7、それ以外なら1d5を降って以下の処理を行う。
- 1と2ならば、random_plus()関数に移りpvalステータスの追加を行う。
- 3と4ならば、射撃武器を除く武器、矢弾ならば1/2の確率で以下の殺戮修正を行う。さもなくばrandom_resistance()で耐性を与える。
- 呪いのアーティファクトか1/13の確率ならばならば即キャンセル
- 1/13の確率で1/ダイス面+4の確率でダイス面を1増やす処理を繰り返す。
- 残り12/13の確率で1/ダイス数+1の確率でダイス数を1増やす処理を繰り返す。
- 5ならば、random_misc()関数でその他の特性を一つ与える。
- 6と7ならば、random_slay()関数でスレイ特性を一つ与える。
- 以上を行った結果、pvalつきの特性を持っている場合、以下の処理を行う。
- 追加攻撃が備わっている場合、pvalは1d2、隼の剣のみさらに+1される。
- そうでなければpvalは最低1保証された上で、1/pvalの確率を満たすかpval<1d5を満たす毎に+1加算される。
- 1/12の確率を満たさないと4以上のpvalは4まで規制される。
- ベースアイテムが防具の場合、既に20以上のAC修正を持つなら+1、そうでなければ1d(20-現AC修正)のACが追加される。
- 武器や矢弾の場合、命中とダメージに20以上の修正を持つなら+1、そうでないなら1d(20-現修正)の値を追加する。また賢さのプラス修正を持つなら、祝福させる。
- 火炎、冷気、電撃、酸で傷つかない特性を必ず与える。
- 呪いのアーティファクトならば、curse_artifact()関数に処理を行わせる。
- 呪いのアーティファクトでないならば、防具なら1/6の確率、そうでなかれば1/3の確率でランダムに発動をgive_activation_power()関数で与える。
- アーティファクトが防具ならば以下の処理を行う。
- ダメージ、命中修正の合計が+20を超えるならば、1d(ダメージ修正)と1d(命中修正)を同時に満たさない限り、ダメージと命中をそれぞれ1d3-1ずつ減らし続ける。
- ダメージ、命中修正の合計が
+20+10を超えるならば、1d(ダメージ修正)と1d(命中修正)を同時に満たさない限り、ダメージと命中をそれぞれ1d3-1ずつ減らし続ける。
- メイジ系バイアスか知力バイアスでベースアイテムが篭手ならば、麻痺知らずを与える。
- 毒針はここまでに与えた、全殺戮修正、全スレイ、追加攻撃を無効にする。
- これまでに与えた特性の強さを総計することによりアーティファクトの名前を決める。
- 防具の場合呪われていれば呪い名、15000未満で下位名、35000未満で中位名、それ以上で高位名を与える。
- 武器の場合呪われていれば呪い名、20000未満で下位名、45000未満で中位名、それ以上で高位名を与える。
- 巻物生成ならばここでアーティファクト名の入力を求められ、キャンセルした場合、get_table_sindarin_aux()かget_table_name_aux()による自動命名が行われる。また個の徳に+2、運の徳に+5が与えられる。
- 巻物生成でない場合、get_random_name()関数から命名が行われる。
- ウィザードモードでチートを行っている場合、ここでバイアスがかかっていればIDが開示される。数値表示なので基本分かりづらい。