- バックアップ一覧
- ソース を表示
- ダンジョン は削除されています。
- 1 (2009-09-16 (水) 14:44:41)
- 追加された行はこの色です。
- 削除された行はこの色です。
*ダンジョン [#ddd28348]
**型 [#if14c64f]
:tmpdungeon, tmplevel, tmpbranch|dungeon.def で指定した情報が入る構造体
:d_level|ダンジョン番号と階番号が組になった構造体
:s_level|特殊レベルの情報を保持する
:branch|分岐情報を保持する~
分岐は1つのレベルに1つしか置けない
**構造体 [#pcddd2c5]
:sp_levchn|s_level のリンクリスト
:dungeon|tmpdungeon の情報+αが収められる構造体。実際のゲーム中に使われるのはこちら~
実体は dungeons[]
:branches|branch のリンクリスト
--end1 がメインダンジョン
--end2 がサブダンジョン
:dungeon_topology|特殊レベルの d_level または dnum を保持している~
sp_levchn を頭から探さずに必要な s_level を得るためのキャッシュのようなもの
**関数 [#h54ba99c]
:init_dungeons()|~
+sp_levchn を初期化する
+dungeons[] を初期化する
+init_level() で特殊レベルの情報を読み込む
+place_level() で特殊レベルを配置する
+add_level() で sp_levchn に登録する
+dungeon_topology を登録する
:assign_level()|d_level の中身をコピーするだけ
:find_level()|sp_levchn のリストの中から名前の一致するレベルを返す
:Is_special()|指定のレベルが sp_levchn にあるレベルなら、その s_level を返す
:Is_branchlev()|指定のレベルが brances に登録されている分岐の始点・終点どちらかに該当すれば、その branch を返す
:dungeon_branch()|指定の名前のサブダンジョンを end2 に持つ branch を返す
**特殊な処理 [#ifd95c38]
***Fort Ludios の分岐 [#m1774523]
ダンジョンの構造は init_dungeons() の時点で全て決定されており、プレイ中に動的に変わることはない。例外は Fort Ludios への分岐で、この入口だけは init_dungeons() の時点では決定できない。このため、Fort Ludios への branch の始点(end1)のダンジョン番号は Dungeons of Doom のものではなく n_dgns(ダンジョン総数) が設定されている。ダンジョン番号は後で実際に portal を置くときに修正している。
***城→死の谷 [#zd35d46b]
-fall_through(), level_tele() から find_hell() を呼んで処理している
-dodown() は goto_hell() を呼んで処理