2013/01/22
■ [変愚蛮怒/スポイラー]build_type14()の部屋生成プロセス(変愚蛮怒 Ver2.1.1)
基本はbuild_type1()の柱やカーテンを全く持たない部屋を生成するのと同じである。
- 横サイズ:xsize = 1d11 + 1d11 + 1 を設定
- 縦サイズ:ysize = 1d4 + 1d3 + 1 を設定
- xsize, ysizeに合うスペースを探す(find_space()関数)。スペースがなければ、xsize = 3, ysize = 3でもう一度find_space()で探るが、それでも見つからなかったら生成をキャンセルする。
- 生成階 <= randint1(25)かつダンジョンにDARKNESSフラグがないなら、部屋全体を最初から明るくする。
- これまでに固まった部屋を一旦床地形で埋め、その後外壁1マスを外壁地形で埋める。
- トラップを、部屋中央を起点に、-ysize/4~ysize/4, -xsize/4~xsize/4の位置一箇所に配置する。
- トラップの種類は、現在階 < 30 + 1d30ならばピラニアトラップ、そうでなければハルマゲドントラップになる。
以上の生成から結論を言うと、「柱やカーテンの全くない長方形の部屋ではなるべく隅を歩く」そうすれば、未感知のピラニア/ハルマゲドントラップにかかる可能性は微粒子レベルに存在する程度になる。狂戦士兄貴は参考にして、どうぞ。
ピラニアトラップの作用
- 威力1/半径10の水地形生成ボール。
- 1+現階層/20回のピラニア生成。ピラニア自体に集団生成の性質があるので実数はさらに数倍になる。
ハルマゲドントラップの作用
levs[10] = {0, 0, 20, 10, 5, 3, 2, 1, 1, 1};
10F毎の生成回数を上記の用に定義する。
- 生成階をpowerとして、powerが20未満になるまで以下の処理を繰り返す。
- 生成数をnum = levs[MIN(lev/10, 9)]で取得。numの回数だけ以下の処理を繰り返す。
- トラップの位置から横左右7マス、縦上下5マス内のどこか1箇所を定める。そこが射線が通らない場所である場合キャンセル。
- そのマスを中心にpower階相当の善良な天使(シンボル'A'かつGOOD)と、悪魔か邪悪な天使(DEMONフラグ持ちかシンボル'A'かつEVIL)を1対ずつ生成する。
- その天使と悪魔は初期状態でお互いを標的にしている。
- num回生成を終えたらpowerを1 + power/16減らして最初から繰り返す。
- 生成数をnum = levs[MIN(lev/10, 9)]で取得。numの回数だけ以下の処理を繰り返す。