2013/02/04
■ [変愚蛮怒/スポイラー]teleport_monster_to関数の処理(変愚蛮怒 Ver2.1.1 rev3259)
teleport_monster_to()関数はモンスターを指定された地点にテレポートさせる関数である。以下の処理中で呼び出されている。
- 魔法の笛の発動(プレイヤーのいる地点へ確率100%のテレポート/PASSIVE)
- ものまねの「引き寄せる」(プレイヤーのいる地点へ確率100%のテレポート/PASSIVE)
- 青魔法の「引き寄せる」(プレイヤーのいる地点へ確率100%のテレポート/PASSIVE)
- 鷲系モンスターが他のモンスターに対して「特別な行動(掴みかかる)」(鷲系モンスターのいる地点へ確率100%のテレポート/PASSIVE/NON_MAGICAL)
- モンスターがモンスターに対して「引き寄せる」(プレイヤーのいる地点へ確率100%のテレポート/PASSIVE)
- プレイヤーがteleport_player関数で能動的にテレポートした場合の追尾(プレイヤーのいる地点へ確率(モンスターレベル)%のテレポート)
- プレイヤーがteleport_away関数でテレポートアウェイされた場合の追尾(プレイヤーのいる地点へ確率(モンスターレベル)%のテレポート)
追尾時に関数が呼び出される前提は双方とも、teleport_player()中で@さんがテレポートした際、その周囲の1マスのモンスターにTELEPORTフラグがあり、かつRES_TELEフラグがない場合である。
各関数にPASSIVEや、NON_MAGICALなどのフラグは指定されているが現在の実装中でこれらが処理の影響を及ぼすことはない。
teleport_monster_to()の処理の流れは以下の通りである。
- 引数で予め定められた成功率での判定が通らなければキャンセルされる。
- テレポート先候補の目標地点間との距離(dis)を1からスタートする。
- (dis)範囲内のマスを500回ランダムに拾い、そこがテレポート可能な地点であった時点でテレポート先確定。
- 500回試行して拾えなかった場合はdisを倍にして再度検索、ここまでの流れをさらに500回試行する。
- 以上を繰り返してもテレポート先が無かった場合はキャンセル。
- テレポート先が確定したならば、実際にモンスターの座標を当該に移し、各種更新を行う。