2013/01/21
■ [変愚蛮怒/スポイラー]build_type13()の部屋生成プロセス(変愚蛮怒 Ver2.1.1)
基本的な形状は以下の通り。0~7で配置されるモンスターの種類と選別法はbuild_type6()(pit生成)と同じものが使われている。
######################### # # ####################### # #####001123454321100### # ###0012234567654322100# # ####################### # # ^ # # ####################### # #0012234567654322100### # ###001123454321100##### # ####################### # # #########################
- pit生成時と同じテーブルで、pitの種別を決める。http://sikabane-works.net/monzetsu_diary/?date=20130116#p01より再掲して以下の通り。
名称 | モンスター選別関数1 | モンスター選別関数2 | level | chance |
"オーク" | vault_aux_orc | NULL | 5 | 6 |
"トロル" | vault_aux_troll | NULL | 20 | 6 |
"ジャイアント" | vault_aux_giant | NULL | 50 | 6 |
"狂気" | vault_aux_cthulhu | NULL | 80 | 2 |
"シンボル(善)" | vault_aux_symbol_g | vault_prep_symbol | 70 | 1 |
"シンボル(悪)" | vault_aux_symbol_e | vault_prep_symbol | 70 | 1 |
"教会" | vault_aux_chapel_g | NULL | 65 | 2 |
"ドラゴン" | vault_aux_dragon | vault_prep_dragon | 70 | 6 |
"デーモン" | vault_aux_demon | NULL | 80 | 6 |
"ダークエルフ" | vault_aux_dark_elf | NULL | 45 | 4 |
- ダンジョンが鉄獄以外では生成キャンセルされる。(build_type13()の関数内でハードコーディングされたもので、一昨日の記事の処理とは別に判別している)
- pick_vault_type()で現在の階>生成階で、かつd_info.txtのpitビットで許可されているパターンのみを生成の対象にする。各pitが選ばれる確率は そのpitのchance値/生成チャンスのある全てのpitのchance 総計である。
- 該当のpitがない場合生成をキャンセルする。
- モンスター選別関数1と2を元に現在の階+11のモンスターを16種類選ぶ。(重複あり)各自100回試行して選べなければ部屋の生成キャンセル。
- そのモンスターの属性がEVILなら、生成条件にEVILフラグ持ち、GOODフラグなら生成条件にGOODフラグを持たせる。
- 予め横25マス、縦13マスの余裕があるフロアを探し、見つからなければ生成をキャンセルする。
- 上図のようなS型クランクとその内部にpitを充填した地形を作成する。1/2の確率で左右反転した形状となる。
- 中央に開門トラップを配置する。
- 中の19x5マスを上記ピット模様の0~7の形で埋め尽くす。順番は16種類のレベルの低い方からソートした奇数順。
開門トラップの具体的な作用
(void)project(0, 3, y, x, 0, GF_DISINTEGRATE, PROJECT_GRID | PROJECT_HIDE, -1); (void)project(0, 3, y, x - 4, 0, GF_DISINTEGRATE, PROJECT_GRID | PROJECT_HIDE, -1); (void)project(0, 3, y, x + 4, 0, GF_DISINTEGRATE, PROJECT_GRID | PROJECT_HIDE, -1); aggravate_monsters(0);
ダメージ0の分解属性の球を半径3でトラップの地点、トラップの右に4マス、左に4マスそれぞれに発生させることで壁が開く。ついでにモンスターの絶叫の同じ効果でモンスターは加速されることになる。