2013/01/17
■ [変愚蛮怒/スポイラー]build_type7()/build_type8()の部屋生成プロセス(変愚蛮怒 Ver2.1.1)
この両関数は、双方ともvaultの生成を行うものだが、内容としてはv_info.txt上で生成条件を7の時にするか、8の時にするかの違いがあるのみで、生成処理そのものは全く同一であった。なのでまとめて説明してしまう。
build_type7()/build_type8()内の処理
- v_info.txtから一様ランダムに一つvaultのデータを取得し、それがbuild_type7あるいはbuild_type8用のものであるまで試行をSAFE_MAX_ATTEMPTS(5000回)繰り返す。
- 繰り返しても得られなければ生成キャンセル。
- 回転や反転を行うフラグのために0~7の乱数を振る。
- 横が広すぎて、90/270度回転すると、ダンジョンの縦に入りきらないのなら、90/270度回転のフラグはキャンセルする。
- coord_trans()関数による処理。
- フラグ値を4で割った余り値分だけ、90度ずつ回転する。
- 4で割って1ならy軸対称に反転する。
- こうして確定したサイズに、当てはまる余地がフロアに残っていない場合は生成キャンセル。
- 以上で問題が無ければbuild_vault()関数で生成。
build_vault()関数による実際の生成処理
v_info.txt上で定められた以下の地形定義に従って生成する。
'%' | 花崗岩の壁(外壁) |
'#' | 花崗岩の壁(内壁) |
'$' | ガラスの壁(内壁) |
'X' | 永久壁(内壁) |
'Y' | ガラスの永久壁(内壁) |
'*' | 75%でアイテム、25%でトラップ |
'+' | 隠しドア |
'\' | カーテン |
'^' | トラップ |
'p' | パターンのスタート地点 |
'a' | パターンの道中1 |
'b' | パターンの道中2 |
'c' | パターンの道中3 |
'd' | パターンの道中4 |
'P' | パターンの終点 |
'B' | パターンの脱出点 |
'A' | パターンの報酬アイテム(階+12レベルのGOOD/GREATアイテム) |
'&' | 階+5レベルのモンスター |
'@' | 階+11レベルのモンスター |
'9' | 階+9レベルのモンスター&階+7レベルのGOODアイテム |
'8' | 階+40レベルのモンスター&階+20レベルのGOOD/GREATアイテム |
',' | 50%の確率で階+3レベルのモンスター、さもなくば50%の確率で階+7のレベルのアイデム、さもなくば何もなし |