2013/02/16
■ [変愚蛮怒/スポイラー]*破壊*の発動ケースとその処理の流れ(変愚蛮怒 Ver2.1.2 rev3303)
*破壊*の処理はdestroy_area()関数で行われる。
bool destroy_area(int y1, int x1, int r, bool in_generate)
この関数は以下のケースの時にそれぞれの引数を伴って呼び出される。
- *破壊*の巻物を読んだ時、プレイヤー中心に半径12+d5, ingenerate=FALSE
- *破壊*の杖を使った時、プレイヤー中心に半径12+d5(強力発動時17+d5), ingenerate=FALSE
- カオス魔法の「ワンダー」の魔法のランダム発動で*破壊*が選ばれた時、プレイヤー中心に半径12+d5, ingenerate=FALSE
- 暗黒魔法の「悪霊召喚」の魔法のランダム発動で*破壊*が選ばれた時、プレイヤー中心に半径12+d5, ingenerate=FALSE
- カオス魔法の「破壊の言葉」が発動した時、半径12+d4, ingenerate=FALSE
- 破邪魔法の「ハルマゲドン」が発動した時、半径12+d4, ingenerate=FALSE
- カオス魔法の「虚無招来」を壁に接触した状態で発動した時、665/666の確立で半径14+@レベル+d11,ingenerate=FALSE
- フロア生成処理中に、*破壊*の痕跡を作成するフラグが立った時、半径15, ingenerate=TRUE
- カオスパトロンの報酬で*破壊*が発動した場合、半径25, ingenerate=FALSE
bool destroy_area(int y1, int x1, int r, bool in_generate)
- 固定クエストか地上の場合はFALSEを返して終了。
- in_generate=TRUEなら、モンスターの光源一旦全て消す。
- 射程内かつ、フロア内の各マスについて以下の処理を施す。
- 該当のマスはCAVE_ROOM/CAVE_ICKY/CAVE_MARK/CAVE_GLOW/CAVE_KNOWNのフラグを失う。
- in_generate=FALSEならば該当のマスもCAVE_UNSAFEフラグを除く、@さんのある地点上では*破壊処理*をスキップする代わりに、プレイヤーが盲目になるフラグを立てる。
- 該当のマスに敵がいた場合、
- in_generate=TRUEなら無条件にその敵をdelete_monster()関数で消す。
- そうでなく、そのモンスターがクエストモンスターなら、HPを最大まで回復させた上で、*破壊*半径*2+1だけ、テレポートアウェイさせる。
- そうでない場合、delete_monster()関数で消す。ペットは消滅した旨を日記に記録される。
- ゲームオプションでアーティファクトの保存モードがオンになっているか、in_generate=TRUEの場合、フロア生成時の自然ドロップで配置されていた固定アーティファクトを救済し、また再生成されるチャンスを残す。
- 該当のマスのオブジェクトを全て消滅させる。
- 該当のマスが永久地形出ない場合、地形が変化する。
- in_generate=FALSEの場合、20/200で花崗岩の壁、50/200で石英の壁、30/200で溶岩の壁、100/200でダンジョン標準の床に変化する。
- in_generate=TRUEの場合、20/200で花崗岩の壁、30/200で石英の壁、50/200で溶岩の壁、100/200でダンジョン標準の床に変化する。
- in_generate=FALSEの場合、ダンジョンの明暗関係を更新する。
- @さんに盲目耐性か閃光耐性が内場合、10+d10ターンの盲目状態が追加される。