クエストネメシス・大悪魔・魔法使いの挙動メモ

STRAT_WAITMASKフラグ

M3_WAITFORUフラグまたはM3_CLOSEフラグを持っている怪物は、monst構造体のmstrategyメンバにそれぞれSTRAT_WAITFORU, STRAT_CLOSEフラグを立てて生成される。
STRAT_WAITFORUとSTRAT_CLOSEをまとめてSTRAT_WAITMASKとして扱われる。

STRAT_WAITMASKが立っていると、怪物は動かない。
攻撃を受ける、または #chat コマンドで会話をすると、STRAT_WAITMASKはクリアされる。

 

STRAT_CLOSE

エストリーダーと囚人はM3_CLOSEフラグを持っている。
囚人との会話(「自由だ!」)が発生すると、STRAT_CLOSEフラグはクリアされる。
エストの話を受動的に聞く分にはSTRAT_CLOSEフラグはクリアされない。このためクエストリーダーは通常は動くことがないが、#chatすると動き出す。

 

STRAT_WAITFORU

エストネメシス、メデューサ、専用階を持つ大悪魔、ヴラド、魔法使いがM3_WAITFORUフラグを持っている。
攻撃を受ける、またはプレイヤーを視認すると、STRAT_WAITFORUフラグはクリアされる。

 

M3_WANTSxxxx

M3_WANTSAMUL, M3_WANTSBELL, M3_WANTSBOOK, M3_WANTSCAND, M3_WANTSATRIフラグはまとめてM3_COVETOUSとして扱われる。これらのフラグを持っている怪物は is_covetous() にTRUEを返す。
大悪魔(AMUL)、クエストネメシス(ARTI)、ヴラド(CAND)、マスターリッチ(BOOK)、アーチリッチ(BOOK)、魔法使い(ALL)がM3_WANTSxxxxフラグを持っている。
is_covetous()がTRUEな怪物は、行動前に tactics() を呼ぶ。

 

tactics()の挙動

M3_WANTSxxxxに対応したアイテムを探す。アイテムが見つかった場合、

  • プレイヤーが対象アイテムを所持していたら、プレイヤーの直近にテレポートする
  • アイテムが床に落ちていたら、その位置へテレポートする。ただしその位置に別の怪物がいるなら、1/5の確率でプレイヤーの直近にテレポートし、4/5の確率で何もしない
  • アイテムを別の怪物が所持していたら、その怪物の直近にテレポートする

対象のアイテムが見つからない、またはすでに所持している場合は、

  • HPが最大値の2/3未満の場合、上り階段にテレポートする。さらに、プレイヤーが近く(距離8以内)に存在しない場合、HPを1d8回復する。
    プレイヤーが近くに存在する場合、下記の処理へ

以上に当てはまらない場合、1/5の確率(逃げているときは1/33の確率)でプレイヤーの直近にテレポートする。

※実際にテレポート能力(M1_TPORT)のフラグを持っているのはイェンダーの魔法使いのみ