2013/02/19
■ [変愚蛮怒/スポイラー]place_trap()/choose_random_trap()関数によるトラップ選択処理(変愚蛮怒 Ver2.1.2 rev3303)
void place_trap(int y, int x) int choose_random_trap(void)
place_trap()関数は指定のマスにランダムなトラップを配置する関数であり、cave_gen()系列の処理で頻繁に呼ばれる。座標のフロア範囲外を抑制し、指定のマスの罠IDをchoose_random_trap()が返した値で埋めた上で、地形を標準の床に偽装する。
choose_random_trap()関数は標準的に選択可能なトラップを一様乱数で1種類返すのみで、これもそんなに複雑な処理ではない。トラップの種類は以下の通りである。
"TRAP_TRAPDOOR" | トラップ・ドア |
"TRAP_PIT" | 落とし穴 |
"TRAP_SPIKED_PIT" | 落とし穴 |
"TRAP_POISON_PIT" | 落とし穴 |
"TRAP_TY_CURSE" | 邪悪なルーン |
"TRAP_TELEPORT" | 奇妙なルーン |
"TRAP_FIRE" | 焦げた場所 |
"TRAP_ACID" | 焦げた場所 |
"TRAP_SLOW" | ダーツ・トラップ |
"TRAP_LOSE_STR" | ダーツ・トラップ |
"TRAP_LOSE_DEX" | ダーツ・トラップ |
"TRAP_LOSE_CON" | ダーツ・トラップ |
"TRAP_BLIND" | ガス・トラップ |
"TRAP_CONFUSE" | ガス・トラップ |
"TRAP_POISON" | ガス・トラップ |
"TRAP_SLEEP" | ガス・トラップ |
"TRAP_TRAPS" | コンパクトルーン |
"TRAP_ALARM" | 警報装置 |
ただしトラップ・ドアのみは、
- 既にダンジョンの最深層にいる
- クエスト中のフロアである
- 闘技場内である
場合のみ振りなおして別のトラップが選択される。