2013/01/15
■ [変愚蛮怒/スポイラー]build_type5()の部屋生成プロセス(変愚蛮怒 Ver2.1.1)
- 最初にどのような部屋にするかを確定する。巣(nest)には予め以下のテーブルが定義されている。
名称 | モンスター選別関数1 | モンスター選別関数2 | 生成階 | chance |
"クローン" | vault_aux_clone | vault_prep_clone | 5 | 3 |
"ゼリー" | vault_aux_jelly | NULL | 5 | 6 |
"シンボル(善)" | vault_aux_symbol_g | vault_prep_symbol | 25 | 2 |
"シンボル(悪)" | vault_aux_symbol_e | vault_prep_symbol | 25 | 2 |
"ミミック" | vault_aux_mimic | NULL | 30 | 4 |
"狂気" | vault_aux_cthulhu | NULL | 70 | 2 |
"犬小屋" | vault_aux_kennel | NULL | 45 | 4 |
"動物園" | vault_aux_animal | NULL | 35 | 5 |
"教会" | vault_aux_chapel_g | NULL | 75 | 4 |
"アンデッド" | vault_aux_undead | NULL | 75 | 5 |
- pick_vault_type()で現在の階>生成階で、かつd_info.txtのnestビットで許可されているパターンのみを生成の対象にする。各巣が選ばれる確率は その巣のchance値/生成チャンスのある全ての巣のchance 総計である。
- 該当の巣がない場合生成をキャンセルする。
- モンスター選別関数1と2を元に現在の階+11のモンスターを一体選ぶ。100回試行して選べなければ部屋の生成キャンセル。
- そのモンスターの属性がEVILなら、生成条件にEVILフラグ持ち、GOODフラグなら生成条件にGOODフラグを持たせる。
- 予め横25マス、縦11マスの余裕があるフロアを探し、見つからなければ生成をキャンセルする。
- 確保した領域全体を一旦部屋の床にする。
- 外側1マスを外壁で埋める。
- そこから2マス内側を内壁で埋める。
- 内壁の上下左右いずれかにドアを作成する。
- 中の19x5マスを全てモンスター選別関数1と2の条件を満たしたモンスターで埋め尽くす。
モンスター選別関数の実質基準
巣内の生成対象になるモンスターは前提としてUNIQUE(ユニーク)、UNIQUE2(準ユニーク)、RES_ALL(はぐれメタル耐性)、AQUATIC(水棲)のいずれでもない。
その上で、各モンスター選別関数は以下のような条件を提示する。
- vault_prep_clone()
- 現在の階+10までのモンスター1体を標準生成対象にする。
- vault_prep_symbol()
- シンボルを一種類に固定する。
- vault_aux_clone()
- 常にvault_prep_clone()で定められた1種のモンスターだけを生成する。
- vault_aux_jelly()
- KILL_BODY(周辺のモンスターを殺す)かつNEVER_BLOW(打撃を行わない)フラグを持つモンスターは除外。
- EVIL(邪悪)なモンスターは除外。
- シンボルが'ijm'のモンスターのみを生成対象にする。
- vault_aux_symbol_g()
- KILL_BODY(周辺のモンスターを殺す)かつNEVER_BLOW(打撃を行わない)フラグを持つモンスターは除外。
- EVIL(邪悪)なモンスターは除外。
- vault_prep_symbol()で指定した一種類のシンボルだけを限定して生成する。
- vault_aux_symbol_e()
- KILL_BODY(周辺のモンスターを殺す)かつNEVER_BLOW(打撃を行わない)フラグを持つモンスターは除外。
- GOOD(善良)なモンスターは除外。
- vault_prep_symbol()で指定した一種類のシンボルだけを限定して生成する。
- vault_aux_mimic()
- シンボル"!$&(/=?[\|"のモンスターのみを生成対象にする。
- vault_aux_cthulhu()
- KILL_BODY(周辺のモンスターを殺す)かつNEVER_BLOW(打撃を行わない)フラグを持つモンスターは除外。
- ELDRITCH_HORROR(狂気を引き起こす)モンスターのみを生成対象にする。
- vault_aux_kennel()
- シンボル"CZ"のモンスターのみを生成対象にする。
- vault_aux_animal()
- ANIMAL(自然界の動物)フラグ持ちのモンスターのみを生成対象にする。
- vault_aux_chapel_g()
- EVIL(邪悪)なモンスターは除外。
- 銀のエンゼル、金のエンゼルは除外。
- シンボル"A"のモンスターか、以下のモンスターのみを生成対象にする。「見習プリースト」「見習いパラディン」「見習いプリースト(集団生成型)」「見習いパラディン(集団生成型)」「プリースト」「緑衣の修行僧」「白衣の修行僧」「黒衣の修行僧」「黄衣の修行僧」「超エリート・パラディン」「白騎士」「聖堂騎士」
- vault_aux_undead()
- UNDEAD(アンデッド)フラグ持ちのモンスターのみを生成対象にする。