この記事ではFEHの敵AIの行動ロジックの全容をテキスト形式でまとめています。
この記事の内容は以下の「Mia's AI Manipulation Instructional Academy」の Plain Text AI Guideを日本語に翻訳したものです。翻訳ミスなどがある可能性があるので、正確な情報は元のサイトを参照してください。
https://vervefeh.github.io/FEH-AI/textguide.html
- I. ターンワイド状態を評価して保存する
- II. 脅威を評価する
- III. 戦闘結果を計算する
- IV. 戦闘前補助を評価する
- V. 攻撃を評価する
- VI. 戦闘後補助を評価する
- VII. 移動を評価する
- VIII. ターンを終了する
I. ターンワイド状態を評価して保存する
A. 障害物関連の処理を評価して保存します
- 各ユニットについて、敵を通過可能なスキル(「すり抜け」等)を持っていて、そのスキルの条件を満たしている場合、「すり抜け」状態を付与します
- 味方が占領しているすべてのマスの位置を格納した味方障害物リスト(敵が使用)を作成します
- 敵障害物リスト(味方が使用)を作成し、敵に占領されているすべてのマスの位置を保存します
- ブロックがあるすべてのマスの場所を格納するブロック障害物リスト(敵、味方両方で使用)を作成します
B. 以下のタイブレークを使用して、移動順序リストを作成します
- 補助スキルを持っている:いいえ > はい
- 攻撃タイプ:近接 > 間接 > 武器なし
- 最も近い敵までの距離:最下位
- スロット番号:最低
C. 各ユニットの移動範囲を格納します
II. 脅威を評価する
A. ユニットがアクションを持っていない場合、ステップVIII [ターンを終了する]にスキップします
B. 武器を装備している各ユニットについて、そのユニットの攻撃範囲内に敵が1体以上いる場合、「敵を脅かす」 ステータスを付与します(ステップI.C.から保存されたユニットの移動量に基づいて)
C. 各ユニットについて、そのユニットが 1 人以上の敵の攻撃範囲内にいる場合、「敵に脅かされている」状態を付与。敵軍の移動範囲(ステップI.B)とブロック障害物リスト(ステップI.A.4)に基づきブロックを考慮して各敵の攻撃範囲を計算します。敵が「すり抜け」状態を持っている場合には、それぞれの敵障害物リストとブロック障害物リスト(ステップI.A.2-4)の障害物を考慮して計算し、敵軍の攻撃範囲を計算します
III. 補助評価のための戦闘結果を計算する
A. アクションを持ち、「敵を脅かす」状態が付与されたユニットからアタッカーリストを作成。リストが空の場合、ステップ VI[戦闘後補助を評価する]に進みます
B. リスト内の各アタッカーについて、攻撃可能な敵を含むターゲットリストを作成。攻撃可能なターゲットを持たない各アタッカーをリストから削除し、リストが空の場合はステップIV [戦闘前補助を評価する]にスキップします
C. 各リストの各ターゲットについて、以下のタイブレークを使用して攻撃する最適なマスを決定します
- 防御地形:はい > いいえ
- 敵の脅威:最低
- テレポートを必要とする:はい > いいえ
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- 必要な移動マス数:最低
- マスの優先度:最高
D. 前のステップで選択されたマスに基づいて、各アタッカーの各ターゲットの戦闘結果を計算します
IV. 戦闘前補助を評価する
A. アクションを持つ補助スキルを装備した各ユニットについて、補助発動条件 を使って戦闘前補助の実行資格をチェックし、補助タイプを評価します
B. 前のステップの戦闘前補助資格を満たしている各ユニットで補助リストを作成し、リストが空の場合はステップV[攻撃を評価する]にスキップします
C. リスト上の各補助者に対して、その補助が使用できる各味方をターゲットリストに入力します
D. 補助発動条件 を使用して、各ターゲットの戦闘前の資格を確認します
E. 補助リストにターゲットがない場合、ステップV [攻撃を評価する]にスキップします
F. 移動補助以外の補助を持つ各補助者の各ターゲットについて、以下のタイブレークを使用して、ターゲットを補助する最適なマスを決定します
- 防御地形:はい > いいえ
- 敵の脅威:最低
- テレポートを必要とする:はい > いいえ
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- 必要な移動マス数:最低
- マスの優先度:最高
G. 移動補助の各補助者の各ターゲットについて、以下のタイブレークを使用してターゲットを補助するための最適なマスを決定します
- 敵の脅威:最低(「引き寄せ」の特記事項:この補助の場合のみ、使用者の敵の脅威が補助実行後に最低になるマスを調べる)
- テレポートを必要とする:はい > いいえ
- 必要な移動マス数:最低
- マスの優先度:最高
H. 「癒しの手」、「相互援助」、または「献身」を持つ各補助者の各ターゲットに対して、最適な補助マスにある補助者の敵の脅威の数がターゲットの敵の脅威の数より多い場合、その補助を行うことはできません
I. レスト以外の補助や移動以外の補助を持つ各補助者について、以下のタイブレークを使用して補助する最適なターゲットを決定します
- 「敵を脅かしている」状態である:はい > いいえ(再行動者のみ比較)
- 弱化と弱化以外の状態異常の両方が付与されている(「一喝+」のみ比較)
- 実際に強化されたステータス量:最高(応援、一喝のみ比較、大応援を使用している場合は無視)
- 回復量:最高(ヒーラーのみ比較)
- 最も近い敵からの距離:最小(応援、一喝のみ比較)
- HPを除くステータス合計値(強化を含む):最高
- スロット番号:最高
J. 「大応援」を使用する場合、ステップE後に残っているターゲットを「適格なターゲット」、ステップIで選んだターゲットを「意図したターゲット」、ステップEで選ばれなかったターゲットを「不適格なターゲット」とし、すべてのターゲットを3つに分けます。「意図したターゲット」の2マス以内のターゲットから以下のタイブレークを使用して補助する最適なターゲットを決定します
- 結果的に強化される「適格なターゲット」の数: 最高.
- 「意図したターゲット」であり、他の全ての「適格なターゲット」の中で最下位のスロットではない:はい > いいえ
- 「意図したターゲット」または「不適格なターゲット」である:はい > いいえ
- スロット番号:最高
K. 「レスト」を持つ各補助者について、以下のタイブレークを使用して補助する最適なターゲットを決定します
- 状態異常が付与されていない:はい > いいえ
- 状態異常が付与されていない場合、回復量:最高
- 状態異常が付与されていない場合、HPを除くステータス合計値(強化を含む):最高
- スロット番号:最高
L. 移動補助を持つ各補助者について、以下のタイブレークを使用して補助する最適なターゲットを決定します
- テレポート系のスキルを使って補助を実行する:はい > いいえ
- 対象からの補助者の距離:最小
- 隣接するブロックされた敵のスロット順:最高
- スロット番号:最高
M. 以下のタイブレークを使用して、リストの中から最適な補助者を決定します
- 移動補助以外の補助である:はい > いいえ
- 武器を持っていない:はい > いいえ
- 最も近い敵からの距離:最大
- スロット番号:最低
N. 最適な補助者は最適なマスから自分の最適なターゲットに補助を使用します
O. 補助者が再移動状態であれば、再移動するのに最適なマスを以下のタイブレークで決定します。
- 敵の脅威数: 最低
- 現在のマスからの距離: 最大
- 防御地形:はい > いいえ
- 自身の対角線上に近いマスほど優先(対角線は移動タイプや障害物を無視)
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- テレポートを必要とする:はい > いいえ
- 必要な移動マス数:最低
- マスの優先度:最高
P. ステップIからのものを除く全ての状態をクリアしてステップII【脅威を評価する】に戻ります
V. 攻撃評価のための戦闘結果を計算する
A. 「敵を脅かす」 ステータスを持つ行動可能なユニットからアタッカーリストを作成します。
B. リストの各アタッカーに対して、攻撃可能な各敵を含むターゲットリストを作成し、攻撃可能なターゲットを持たないアタッカーを削除します。
C. 各リストの各ターゲットについて、以下のタイブレークを使用して攻撃するための最適なマスを決定します。
- 最高の戦闘結果:勝ち > 引き分け > 負け
- ダメージ率:最高
- 防御地形:はい > いいえ
- 敵の脅威数:最低
- テレポートを必要とする:はい > いいえ
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- 必要な移動マス数:最低
- マスの優先度:最低
D. 前のステップで選択されたマスに基づいて、各攻撃者の各ターゲットの戦闘結果を計算します。
VI. 攻撃を評価する
A. ステップ「V. 攻撃評価のための戦闘結果を計算する」で作成したアタッカーリストの各アタッカーについて、 Chart G のスキルを装備している場合、「デバッファー」状態を付与します
C. リストの各アタッカーにつき、Chart H のスキルを装備している場合、「アフリクター」状態を付与します
D. リスト内の各アタッカーについて、以下のタイブレークを使用して攻撃するための最良のターゲットを決定します
- 最高の戦闘結果:勝ち > 引き分け > 負け
- 守備または魔防のいずれかを2以上弱化できる:はい > いいえ (「デバッファー」状態のみを持つアタッカーを比較)
- ダメージ率:最高
- 奥義カウントを増加させることができる:はい > いいえ
- スロット番号:最高
E. 以下のタイブレークを使ってリストの中から最良のアタッカーを決定します
- 最高の戦闘結果:勝ち > 引き分け > 負け
- 「デバッファー」状態を持ち、対象を守備または魔防のいずれかを2以上デバフすることができる:はい > いいえ
- 最良のターゲットに対して「アフリクター」状態を持っている:はい > いいえ
- ダメージ率:最高
- アタッカーの移動範囲: 最高(基本は 騎馬>歩行=飛行>重装 だが移動制限や移動力アップを加味する)
- ターゲットの奥義カウントを増加させることができる:はい > いいえ
- スロット番号:最高
F. 最良のアタッカーは、最適なマスから最適なターゲットを攻撃します。
G. もしアタッカーが生存しており、再移動状態であれば、再移動するのに最適なマスを以下のタイブレークで決定します。
- 敵の脅威数: 最低
- 現在のマスからの距離: 最大
- 防御地形:はい > いいえ
- 自身の対角線上に近いマスほど優先(対角線は移動タイプや障害物を無視)
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- テレポートを必要とする:はい > いいえ
- 必要な移動マス数:最低
- マスの優先度:最高
H. 敵が敗北した場合、または敵の位置が移動した場合(「引き込み」、「切り込み」など)、「すり抜け」状態を持つ各ユニットについて、「パス」を付与するスキルがまだ有効かどうかをチェックし、有効でない場合、そのユニットから「すり抜け」状態を削除します。さらに、各障害物リスト(ステップI.A.2-4)の各マスについて、そのマスを占領している味方、敵、ブロックがいなくなった場合、そのマスをそれぞれの障害物リストから削除します。ステップIからのものを除く全ての状態をクリアして、ステップII [脅威を評価する]に戻ります
VII. 戦闘後補助を評価する
A. 補助を装備したアクションを持つ各ユニットを補助リストに追加します
B. リスト上の各補助者に対して、その補助が使用できる各味方をターゲットリストに入力します
C. 各ターゲットの戦闘後の補助資格を補助発動条件 を用いて確認します
D. 補助リストにターゲットがない場合、ステップVII[移動を評価する]に進みます
E. 各補助者について、補助発動条件 を用いて補助タイプを評価します
F. 移動しない補助を持つ各補助者の各ターゲットについて、以下のタイブレークを使用して、ターゲットを補助する最適なマスを決定します。
- 防御地形:はい > いいえ
- 敵の脅威:最低
- テレポートを必要とする:はい > いいえ
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- 必要な移動マス数:最低
- マスの優先度:最高
G. 移動補助を持つ各補助者の各ターゲットについて、以下のタイブレークを使用してターゲットを補助するための最適なマスを決定します
- ボディーブロックができ、近接攻撃の敵が味方を攻撃するのを防ぐことができる(「ブロッカー」状態を持つ場合のみ、ターゲットは補助を受ける資格がなければならない)
- 敵の脅威:最低(「引き寄せ」の特記事項:この補助の場合のみ、使用者の敵の脅威が補助実行後に最低になるマスを調べる)
- テレポートを必要とする:はい > いいえ
- 必要な移動マス数:最低
- マスの優先度:最高
H. 「癒しの手」、「相互援助」、または「献身」を持つ各補助者の各ターゲットに対して、最適な補助マスにある補助者の敵の脅威の数がターゲットの敵の脅威の数より多い場合、その補助を行うことはできません
I. レスト、移動補助以外の補助を持つ各補助者について、以下のタイブレークを使用して補助する最適なターゲットを決定します
- 「敵を脅かす」状態が付与されている:はい > いいえ(再行動のみを比較)
- 回復量:最高(ヒーラーのみ比較)
- 弱化と弱化以外の状態異常の両方が付与されている(「一喝+」のみ比較)
- 実際に強化されたステータス量:最高(応援、一喝のみ比較)
- 最も近い敵からの距離:最小(応援、一喝のみ比較)
- HPを除くステータス合計値(強化弱化含む):最高
- スロット番号:最高
J. 「大応援」を使用する場合、ステップD後に残っているターゲットを「適格なターゲット」、ステップIで選んだターゲットを「意図したターゲット」、ステップIで選ばれなかったターゲットを「不適格なターゲット」とし、すべてのターゲットを3つに分けます。「意図したターゲット」の2マス以内のターゲットから以下のタイブレークを使用して補助する最適なターゲットを決定します
- 結果的に強化される対象の数: 最高.
- 「意図したターゲット」であり、他の全ての「適格なターゲット」の中で最下位のスロットではない:はい > いいえ
- 「意図したターゲット」または「不適格なターゲット」である:はい > いいえ
- スロット番号:最高
K. 「レスト」を持つ各補助者について、以下のタイブレークを使用して補助する最適なターゲットを決定します
- 状態異常が付与されておらず、Chart Fの戦闘前のHPのしきい値を満たしている:はい > いいえ
- 状態異常が付与されていない:はい > いいえ
- 状態異常が付与されていない場合、回復量:最高
- 状態異常が付与されていない場合、HPを除くステータス合計値(強化を含む):最高
- スロット番号:最高
L. 移動補助を持つ各補助者について、以下のタイブレークを使用して補助する最適なターゲットを決定します
- テレポートスキルで補助した場合:はい > いいえ
- HPを除くステータス合計値(強化弱化含む):最高
- ターゲットからの距離:最小
- スロット番号:最高
M. 以下のタイブレークを使用して、リストの中から最適な補助者を決定します
- 補助タイプ(!W=武器なし): !W 再行動= !W 回復= !W レスト= !W 自己犠牲系回復補助>再行動= 回復=レスト> !W 応援>自己犠牲系回復補助=応援> !W 移動補助>移動補助
- 杖武器持ち、もしくは「癒しの手」持ち:はい > いいえ(ヒーラーのみ比較)
- 最も近い敵からの距離:最大
- スロット番号:最低
N. 最適な補助者は最適なマスから自分の最適なターゲットに補助を使用します
O. 補助者が再移動状態であれば、再移動するのに最適なマスを以下のタイブレークで決定します。
- 敵の脅威数: 最低
- 現在のマスからの距離: 最大
- 防御地形:はい > いいえ
- 自身の対角線上に近いマスほど優先(対角線は移動タイプや障害物を無視)
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- テレポートを必要とする:はい > いいえ
- 必要な移動マス数:最低
- マスの優先度:最高
P. ステップIからのものを除く全ての状態をクリアしてステップII【脅威を評価する】に戻ります
VIII. 移動を評価する
A. すべてのアクションを持つユニットが「移動を譲る」状態になっている場合、ステップVIII [ターンを終了する]にスキップしますB. 移動順リストの最初のユニットがアクションを持ち、「移動を譲る」状態を持たない場合、そのユニットが Glossary Section 2d の「シャッフル」状態の条件を満たしているかどうかを確認します
C. 行動可能で、「移動を譲る」状態を持たない移動順リストの最初のユニットについて、武器を装備していれば、以下のタイブレークを使用して敵軍の追跡対象を決定します
- 追跡優先度:最高 (移動マス優先順位の追跡対象の計算を参照)
- スロット番号:最高
D. 前のステップでターゲットが決定できなかった場合(武器がないかターゲットがないかに関わらず)、味方全員の距離が決まっている場合、以下のタイブレークを使用して、追跡対象となる味方を決定します
- 距離: 最小
- スロット番号:最高
E. ステップCまたはステップDのいずれにおいてもターゲットを決定することができなかった場合、ユニットに「移動を譲る」状態を付与します
F. ユニットが「シャッフル」状態を持っている場合は、次のタイブレークを使用して、移動に最適なマスを決定します
- 移動しない:いいえ > はい
- 追跡対象までの距離:最小
- 防御地形:はい > いいえ
- 敵の脅威:最低
- テレポートを必要とする:はい > いいえ
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- マスの優先度:最高
G. 次のタイブレークを使用して最良の移動マスを決定します:(特記事項:敵が直接そのマスに辿り着くことができない場合、攻撃することができる最も近いマスに向かいます。複数のマスで優劣が付かない場合は、マスの優先度の高いマスを選択します。これは敵を追跡する場合にのみ適用されます)
- 追跡対象からの距離:最小
- 防御地形:はい > いいえ
- 敵の脅威:最低
- テレポートを必要とする:はい > いいえ
- 追跡対象の対角線上のマスへの距離:最下位
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- 必要な移動マス数:最低
- マスの優先度:最高
H. 以下の条件のうち少なくとも1つを満たす破壊対象のブロックリストを作成します
- ブロックから追跡対象への距離(ユニットが移動できる) < ステップGで選択したタイルから追跡対象への距離
- ブロックから追跡対象への距離(ユニットが移動できる)が定義されていない
I. ユニットがすでにステップGの最適な移動マス上にいて、ステップHに少なくとも1つの適格なブロックが存在する場合、ステップGに戻って最適な移動マスを再評価し、ユニットの現在のマスを不適格とします
J. ステップHからの各適格ブロックについて、次のタイブレークを使用して各ブロックを攻撃するために、そこから最適なマスを選択します
- 防御地形:はい > いいえ
- 敵の脅威:最低
- テレポートを必要とする:はい > いいえ
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- 必要な移動マス数:最低
- マスの優先度:最高
K. 対象となるブロックが1つ以上ある場合、以下のタイブレークを用いて最適なブロックを選択し、壊します
- ステップGからの最適なマスからの距離:最小
- 最適な攻撃マスが防御地形:はい > いいえ
- 最適な攻撃マスの敵の脅威:最下位
- マスの優先度:最高
L. ユニットがステップJで決めたマスでステップKのブロックを壊します
M. ユニットが再移動状態であれば、再移動するのに最適なマスを以下のタイブレークで決定します。
- 敵の脅威数: 最低
- 現在のマスからの距離: 最大
- 防御地形:はい > いいえ
- 自身の対角線上に近いマスほど優先(対角線は移動タイプや障害物を無視)
- 特殊な地形:飛行地形>森>溝≧通常(騎馬の場合のみ、溝>通常)
- テレポートを必要とする:はい > いいえ
- 必要な移動マス数:最低
- マスの優先度:最高
N. ステップLでブロックが壊れた場合は、ステップIからのブロックを除く全ての状態をクリアして、ステップII[脅威を評価する]に戻ります
O. 「回り込み」を持っている場合、以下のタイブレークを使って最適な「回り込み」をするマスを決定します
- 追跡対象からの距離:最小
- 防御地形:はい > いいえ
- 敵の脅威:最低
- マスの優先度(「回り込み」後のマス): 最高
P. ユニットが「回り込み」を持っている場合、ステップGからの最適マスとステップLからの最適な「回り込み」後のマスのうち、次のタイブレークを使用して最適なマスを決定します
- 追跡対象からの距離:最小
- 防御地形:はい > いいえ
- 敵の脅威:最低
- テレポートを必要とする:はい > いいえ (「回り込み」は「いいえ」扱い)
- 「回り込み」の使用が必要なマス:いいえ > はい
Q. ユニットが応援の補助を持っている場合、補助発動条件の移動後応援の表に従って最適なマスに隣接する補助対象のリストを作成し、以下のタイブレークを使用して補助する最適なターゲットを選択します
- 実際に強化されたステータス量:最高
- 最も近い敵からの距離:最小
- HPを除くステータス合計値(強化弱化含む):最高
- スロット番号:最高
R. 補助者が「大応援」を使用している場合、ステップOで選択したターゲットの2マス以内にいるターゲットを選択し、以下のタイブレークを使用して補助します
- ステップOで補助対象候補となったが、補助対象として選択されなかった:いいえ > はい
- スロット番号:最高
S. 現在のマスが最適なマスである場合、ユニットは「移動を譲る」状態を獲得し、ステップⅦ[移動を評価する]を繰り返します
T. ユニットを最適なマス/「回り込み」マスに移動します。ステップIからのものを除くすべての状態をクリアして、ステップII [脅威を評価する]に戻ります
IX. ターンを終了する
ターンを終了します