2013/02/03
■ [変愚蛮怒/スポイラー]プレイヤーのテレポート処理(変愚蛮怒 Ver2.1.1 rev3259)
プレイヤーのテレポート処理はteleport_player()関数を根幹とし、テレポート距離と各種フラグを指定して実行する。
- テレポートの実際処理をteleport_player_aux()関数で行う。
- 荒野の広域マップ中ではキャンセル
- 反テレポを装備で備えていればキャンセル。
- テレポート距離に200以上が指定されていれば200に留める。
- @さんを中心としたテレポート距離*2の正方形内を全て走査し、テレポート先候補内に入れるかを決定する。
- distance()関数で測った絶対距離がテレポート距離以上ならその地点は候補から外す
- cave_player_teleportable_bold()で定められたテレポート先地形でないなら候補から外す
- 候補が一つもなければテレポートキャンセル。
- テレポート距離をテレポート可能先の比に基づいた確率で決定する。ただし、テレポート先になる候補は絶対距離の長い順から並べていき、候補全体が50%を超えた時点で候補を打ち切る。例えば範囲5内で20件候補がああった場合先頭の10件だけが候補となり、距離3の確率1/10、距離4の確率6/10、距離5の確率3/10となる。
5554444443 3333322211 |--候補--|
- 実際のテレポート先を確定して飛ぶ。万一フロアの外に飛んでしまう場合はキャンセルされ、move_player_effect()が実行される。
- 以上の処理を行なった後、周囲1マスのモンスターを走査し、いた場合にテレポート追尾の判定を行う。
- テレポート追尾を行う前提は、モンスターが眠っておらず、長距離テレポートを持ち、なおかつ、テレポ耐性を持っていない時。
- teleport_monster_to()関数により、(敵レベル)%の確率で追尾が試みられる。