2016/03/01
■ [ヴィーヤウトゥムノ] 水のエレメンタル/Water elemental (Blue 'E') 修正&着色
=== Num:512 Lev:33 Rar:2 Spd:+0 Hp:25d8 Ac:40 Exp:325 それは高くそびえ立つ水の竜巻だ。 それは通常地下 33 階で出現し、少々不規則に普通の速さで動いている。この邪 悪なるモンスターを倒すことは 50 レベルのキャラクタにとって 約206.25 ポイ ントの経験となる。それは魔法を使うことができ、アイス・ボルトの呪文を唱え ることがある(確率:1/6)。それは AC40 の防御力と 25d8 の体力がある。それは ドアを打ち破り、弱いモンスターを倒し、アイテムを壊すことができる。それは 冷血動物である。それはテレパシーでは感知できない。それは毒と水の耐性を持 っている。それは進化しない。それは恐怖を感じないし、混乱しないし、眠らさ れない。それは侵入者を見過ごしがちであるが、 120 フィート先から侵入者に気 付くことがある。それは 1d10 のダメージで殴って攻撃し、 1d10 のダメージで 殴って攻撃し、 1d10 のダメージで殴って攻撃する。
http://sikabane-works.net/monzetsu_diary/?date=20130819#p03を修正&着色。
鬼畜大佐『ロムンクァリィ』
「高くそびえ立つ水の竜巻」(人型)
アッキ=ニンジャ『ウルウェン』
エレメンタルはこういう形にリテイクしたいんだとよ。
■ [変愚蛮怒/スポイラー] build_tunnel()関数及びbuild_tunnel2()関数による通路生成(基本前提)(変愚蛮怒 Ver2.1.5)
通路生成処理のアルゴリズム頼むよ~と言われたので今更ながらスポイラー続けます。
cave_gen()関数によるフロアの内容生成の流れ(変愚蛮怒 Ver2.1.1)の処理の流れの途中から派生。まず前提として大まかな流れのみ記述。
- cave_gen()関数で確定し、生成された部屋の中心座標を保存した配列が、(部屋数)回分の配列要素のランダムなスワップを通じて、シャッフルされる。
- 通路の結果作成されたドアのカウントを0から開始。
- 部屋中心座標配列の最後の要素をx, yに代入し、最初の配列要素から順に接続処理を行っていく。
- つまり、n-1番目の部屋~0番目の部屋の接続処理→0番目の部屋~1番目の部屋の接続処理→………n-2番目の部屋~n-1番目の部屋の接続処理という形で1ループを作ることになる。
- 高確率で部屋間の通路生成の際に通路が他の部屋や通路を貫く。その場合、必然的にダンジョン全体は単純円環状にはならず、各部屋が多数かつ複雑な通路を持つようになる。
- 1回の接続処理の流れは以下の通り。
- 通路の生成はn回の各接続処理毎にd_info.txtの各ダンジョン毎に固定されたtunnel_percent値を基準として、1d(生成階) > tunnel_percentならばbuild_tunnel2()、そうでなければbuild_tunnel()に処理が移る。
- 英文コメントによればbuild_tunnel()は通常の(曲がりくねりの少ない)通路であり、build_tunnel2()が洞窟らしい(強く曲がりくねった)通路である。
- 双方の関数とも、自身を呼び出す再帰処理で構成されているが、アルゴリズムそのものはかなりの違いがある。
- build_tunnel()は先の接続元から接続先までのx, y座標2つを引数に持ち、接続が失敗した場合はその旨を返す。失敗数はカウントされ、失敗数が2以上(=孤立した部屋の生まれる可能性が0でなくなった場合)ダンジョン生成そのものを失敗としてやり直す。
- build_tunnel2()は接続元と接続先の座標に加えtype値とcutoff値を引数に持ち、初期はどちらとも2から開始する。
- 通路の生成はn回の各接続処理毎にd_info.txtの各ダンジョン毎に固定されたtunnel_percent値を基準として、1d(生成階) > tunnel_percentならばbuild_tunnel2()、そうでなければbuild_tunnel()に処理が移る。
tunnel_percent値は低い程、天然性の高い洞窟であることを示すようである。また、tunnel_percentを超えた階層かつ、深層である程通路はbuild_tunnel2()を採用し、より複雑に曲がりくねるようになる。
ダンジョン毎のtunnel_percent値はd_info.txtにより、以下のように設定されている。
ID | ダンジョン名 | tunnel_percent値 |
0 | 荒野(不使用) | 50 |
1 | 鉄獄 | 50 |
2 | イークの洞窟 | 8 |
3 | オークの洞窟 | 14 |
4 | 迷宮 | 100 |
5 | 竜の住みか | 0 |
6 | 墓地 | 30 |
7 | 森 | 15 |
8 | 火山 | 0 |
9 | 地獄 | 0 |
10 | 天界 | 1000 |
11 | 水没した遺跡 | 100 |
12 | 城 | 100 |
13 | ルルイエ | 100 |
14 | 山 | 0 |
15 | 金鉱 | 0 |
16 | 反魔法の洞窟 | 50 |
17 | 反攻撃の洞窟 | 50 |
18 | カメレオン洞 | 50 |
19 | 暗闇の洞窟 | 50 |
20 | ガラスの城 | 100 |
以上の前提を踏まえて、次回以降にbuild_tunnel()とbuild_tunnel2()の処理の流れを追う。