2013/02/07
■ [変愚蛮怒/スポイラー]process_monster()内のモンスター移動処理(変愚蛮怒 Ver2.1.1 rev3265)
- ランダムに歩く確率を決める。具体的には後述している、移動方向の候補が第4候補まで全てランダムになる。
- モンスターが混乱しているか、@さんが超隠密状態だと100%
- RAND_25フラグ持ちなら+25%
- RAND_50フラグ持ちなら+50%
- NEVER_MOVEフラグ持ちの移動不可で、@さんと隣接していない場合100%(元より動かないので意味がないのだが、実装されている処理上の都合)
- ペットが特に視界内に敵を捉えておらず、命令に従った通りの距離関係を@さんとの間に確保している場合100%
- 友好的なモンスターが敵を捉えていない場合100%
- get_move()関数により移動を試みるべき方向を、基本、第4候補まで確定する。(詳細は別記事予定)
- 移動方向を、第1候補から順に以下の流れで解決する。
- 候補の移動先がフロア領域外なら次の候補を選ぶ。
- 移動先に@さんか、他のモンスターがいた場合、移動先確定。
- KILL_WALL及びPASS_WALL持ちで移動先が突破あるいはすり抜けられる壁なら移動先確定。
- 移動先がくさびのない閉じたドアならでOPEN_DOOR持ちのモンスターの場合、1d(モンスターHP / 10) - 1 > ドア地形のPOWERならば、開けることが可能で行動終了。
- 移動先がドアで、BUSH_DOOR持ちなら、ガラスのドアでないか、ガラスのドアでもSTUPIDなモンスターでHPが200以上か、HP1/3以上のどちらか大きい方以上残っていたなら、ドアへの体当たりを試みる。1d(モンスターHP / 10) - 1 > ドア地形のPOWERならばドアは破壊され、そのマスにモンスターは移動する。
- 移動先が守りのルーンで突破できたら、移動先確定。
- 移動先が爆発のルーンなら、爆発の処理を後で行うフラグを立てる。
- 壁を壊して進んだなら、ここで壁の種類に応じて、「ギシギシ」音がなるか、ガラスの砕けた音がする。
- 移動先にアイテムがあって、TAKE_ITEM持ちで拾うことが可能なら拾う。
- 移動先にアイテムがあって、KILL_ITEM持ちで破壊することが可能なら破壊する。