行 |
処理内容 |
7-8 |
可変DB[2:┣ 主人公行動AI]やユーザーDB[10:┣ 敵行動AI]にある
アクションのセット数(12)と1セットの項目数(4)を設定。 |
10-33 |
可変DB[10:×┏ 戦闘一時ステータス[基]]の項目[17:キャラクタ番号[1万以上は敵]]にある
キャラクター番号で今回のAIキャラが「主人公」か「敵キャラ」かで分岐。 |
|
11-22 |
■条件分岐(変数): 【1】 CSelf28[キャラID] が 10000 以上 |
敵キャラの場合は分岐し、セルフ[28]を「余剰10000」で4桁以下の値(敵キャラID)にして、
セルフ[27]に「1(このAIは敵キャラである)」を設定。 |
ユーザーDB[9:敵キャラ個体データ]の項目[20:行動回数]をセルフ[29]に取得。 |
この敵キャラが戦闘不能かどうかを確認し、戦闘不能の場合はここで処理を終了させる。 |
|
24-27 |
◇分岐: 【2】 [ CSelf28[キャラID] が 0 以上 ]の場合↓ |
セルフ[27]に「0(このAIは主人公である)」を設定。 |
主人公には行動回数の設定が無いので、セルフ[29]には「1(1回のみ行動)」を設定。 |
|
29-31 |
◇上記以外 |
何もキャラクター番号が無いので、ここで処理を終了させる。 |
34-43 |
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ 行動不能なら「何もしない」を登録
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ |
今回のAIキャラが行動不能の場合は分岐し、「何もしない」の行動を登録して、処理を終了させる。 |
44-46 |
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ 味方のHP最低・HP最大キャラを計算
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ |
47-56 |
今回のAIキャラの残りHP%と残りSP%をセルフ[79〜80]に設定。 |
59-128 |
パーティ内の主人公の中で、
残りHP%、残りHP、最大HPのそれぞれの最大値と最小値を調べ、
その最大値と最小値だった主人公のスロットと共にセルフ[40〜51]に保存。 |
狙われ度が「-1以下(狙われない)」の場合は、セルフ[40〜51]の設定対象から除外する。
これはセルフ[40〜51]の情報は、敵キャラが主人公に攻撃する時に使用するため、
攻撃対象外となっている主人公の情報をセルフ[40〜51]には設定しないようにします。 |
129-131 |
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ 敵のHP最低・HP最大キャラを計算
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ |
132-207 |
敵グループ内の敵キャラの中で、
残りHP%、残りHP、最大HPのそれぞれの最大値と最小値を調べ、
その最大値と最小値だった敵キャラのスロットと共にセルフ[60〜71]に保存。 |
狙われ度が「-1以下(狙われない)」の場合は、セルフ[60〜71]の設定対象から除外する。
これはセルフ[60〜71]の情報は、主人公が敵キャラに攻撃する時に使用するため、
攻撃対象外となっている敵キャラの情報をセルフ[60〜71]には設定しないようにします。
また戦闘不能になっている敵キャラもセルフ[60〜71]には設定しないようにします。 |
212-569 |
■回数付きループ [ CSelf29[行動回数] ]回
1回ループするごとに可変DB[14:×┣ コマンド処理リスト]に行動内容を登録します。 |
■回数付きループ [ 100 ]回
可変DB[2:┣ 主人公行動AI]やユーザーDB[10:┣ 敵行動AI]にある
「アクション1〜12」の設定を100回まで調べます。
この100回と言うのは、例えばアクション1〜5まで進み、
そしてアクション5からアクション1へ戻る設定がある場合、
アクション1〜5を調べる処理を20回繰り返すと100回になります。
100回のループでも行動が決定しなかった場合は、
可変DB[14:×┣ コマンド処理リスト]には何も行動内容が登録されず、
このAIキャラの順番が来た時には、何も行動を行わず、画面上にも何も表示されません。 |
|
217-230 |
▼ もしアクション数が限界超えてたらエラー |
アクション13以降を呼び出す設定を行った場合は分岐し、エラー表示を行って処理を終了させます。 |
|
231 |
情報を呼び出すアクションの最初の項目IDをセルフ[33]に設定。
例えば「アクション4」の設定は項目[12〜15]にあるので、
最初の項目IDとなる「12」をセルフ[33]に設定。
計算処理では「セルフ[34](3)×セルフ[98](4)」で「12」になります。 |
|
232-253 |
■条件分岐(変数): 【1】 CSelf27[味方(0)or敵(1)] が 0 と同じ
【2】 CSelf27[味方(0)or敵(1)] が 1 と同じ |
このAIキャラが「主人公」か「敵キャラ」かで分岐し、
主人公の場合は可変DB[2:┣ 主人公行動AI]から、
敵キャラの場合はユーザーDB[10:┣ 敵行動AI]からAI設定の情報を取得。 |
|
254 |
▼ [\cself[28]-\cself[34]] \cself[35] \cself[36] \cself[37] \cself[38] |
この設定はデバッグ用の設定であり、
コモンイベントの制作時(改造時)に【デバッグ文】に変えて使用していたものです。 |
|
255-257 |
▼ ――――――――――――――――――――――――――――――
▼ ここから条件判定
▼ ―――――――――――――――――――――――――――――― |
ここからAIの起動条件(「[-50]敵1人HP50%以下」など)を満たしているかどうかを判定します。 |
|
259-267 |
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が 100 以下 |
「常に実行」や「〜%の確率で実行」の条件の場合は分岐し、
確率計算を行い、確率条件を満たして実行する場合はセルフ[39]に「1」を設定。 |
|
268-300 |
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が -1 以下
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が -99 以上 |
「敵1人HP〜%以下」の条件の場合は分岐し、
セルフ[35]をセルフ[10]に複製した上で「乗算-1」でセルフ[10]の値をプラス値に変えて、
最低HP%が条件以下の場合は、条件を満たした(セルフ[39]を「1」)となります。 |
|
301-319 |
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が -101 以下
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が -199 以上 |
「自分HP〜%以下」の条件の場合は分岐し、セルフ[35]を「+100」でセルフ[10]に複製し、
まず「-199 〜 -101」を「-99 〜 -1」にした上で「乗算-1」でセルフ[10]の値をプラス値に変えて、
自分HP%が条件以下の場合は、条件を満たした(セルフ[39]を「1」)となります。 |
|
320-338 |
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が -200 以下
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が -299 以上 |
「自分SP〜%以下」の条件の場合は分岐し、セルフ[35]を「+200」でセルフ[10]に複製し、
まず「-199 〜 -101」を「-99 〜 -1」にした上で「乗算-1」でセルフ[10]の値をプラス値に変えて、
自分SP%が条件以下の場合は、条件を満たした(セルフ[39]を「1」)となります。 |
|
339-358 |
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が 1000 以上
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が 1999 以下 |
「〜ターンに一度実行」の条件の場合は分岐し、セルフ[35]を「余剰1000」でセルフ[10]に複製し、
さらに可変DB[18:基本システム用変数]のデータ[75:[戦闘]現在ターン数]の値をセルフ[11]に取得し、
セルフ[11]の値をセルフ[10]で余剰する事で、指定したターン数になるごとに条件を満たして、
セルフ[39]が「1」になります。 |
例えば「3ターンに一度実行」の場合は、可変DB[18:基本システム用変数]のデータ[75:[戦闘]現在ターン数]
の値を「余剰3」で処理する事になります。
「余剰」は「設定した値になったら「0」に戻る」と言った感じの処理になるので、
ターン数が「0→1→2→3」となった場合は、「3」が「0」になるので、
「0→1→2→0→1→2→0…」と言った形になり、これで3ターンごとに「0」になります。 |
可変DB[18:基本システム用変数]のデータ[75:[戦闘]現在ターン数]の値は、
最初の1ターン目は「0」から始まり、1ターン目が終了すると「加算1」で「1」になります。
つまりに最初の1ターン目は必ず「0」になっているので、
「3ターンに一度実行」でも「5ターンに一度実行」でも、全ての設定で最初の1ターン目は実行されます。
「3ターンに一度実行」の場合は「1ターン目→4ターン目→7ターン目…」と実行されます。 |
|
359-376 |
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が 2000 以上
■条件分岐(変数): 【1】 CSelf35[[AI]条件] が 2999 以下 |
「〜回目行動なら」の条件の場合は分岐し、セルフ[35]を「余剰1000」でセルフ[10]に複製し、
セルフ[10]の値(行動回数)が現在の行動回数と一致する場合は、
条件を満たした(セルフ[39]を「1」)となります。 |
この行動回数は敵キャラ専用の設定なので、主人公側のAI設定では、
「1回目行動なら」以外の設定は全て「条件を満たさない(セルフ[39]は「0」)」となります。 |
|
377-379 |
▼ ――――――――――――――――――――――――――――――
▼ 条件を満たす場合は使用対象・行動内容をセット
▼ ―――――――――――――――――――――――――――――― |
ここから先は条件を満たす場合と満たさない場合で分岐します。 |
|
380-546 |
■条件分岐(変数): 【1】 CSelf39[条件満たすフラグ] が 1 以上 |
アクションの実行条件を満たす場合は分岐。 |
|
|
383-389 |
■条件分岐(変数): 【1】 CSelf37[[AI]行動内容] が -3 と同じ |
行動内容が「[-3]次の条件も判定」の場合は分岐し、
次のアクション番号にして【ループ開始へ戻る】を実行。 |
|
|
390-437 |
■条件分岐(変数): 【1】 CSelf37[[AI]行動内容] が 0 以上 |
ユーザーDB[0:技能]のデータIDが設定されている場合は分岐。 |
|
|
|
393 |
セルフ[27]の値をセルフ[24]に設定。
セルフ[27]には「0=主人公AI」「1=敵キャラAI」が設定されており、
「セルフ[27]=セルフ[24]」を設定する事で、
技能を使用するターゲットを「主人公→主人公」「敵キャラ→敵キャラ」を設定。
ターゲットを「主人公→敵キャラ」「主人公→敵キャラ」にする場合は、
このあとの433行目で設定します。 |
|
|
|
395-401 |
■条件分岐(変数): 【1】 CSelf10[一時変数A] が 1 と同じ |
技能の使用対象が「自分自身」の場合は分岐し、
「セルフ[14](技能使用ターゲット)=セルフ[0](今回のAIキャラ)」にして、
544行目にあるラベル「直接登録」へジャンプ。 |
|
|
|
402-413 |
■条件分岐(変数): 【1】 CSelf10[一時変数A] が 2 と同じ |
技能の使用対象が「味方全体」の場合は分岐し、
セルフ[14]に「-10=主人公全体」「-20=敵キャラ全体」を設定し、
544行目にあるラベル「直接登録」へジャンプ。 |
|
|
|
415-425 |
◇分岐: 【2】 [ CSelf10[一時変数A] が 11 と同じ ]の場合↓ |
技能の使用対象が「敵全体」の場合は分岐し、
セルフ[14]に「-20=主人公全体」「-20=敵キャラ全体」を設定し、
544行目にあるラベル「直接登録」へジャンプ。 |
|
|
|
429-437 |
■条件分岐(変数): 【1】 CSelf10[一時変数A] が 10 以上
■条件分岐(変数): 【1】 CSelf10[一時変数A] が 19 以下 |
技能の使用対象が「敵一体」か「敵一体にランダム」の場合は分岐し、
セルフ[27]の値を「1→0」「0→1」と逆転させてセルフ[24]に設定。
値を逆転させる事で「主人公→主人公」「敵キャラ→敵キャラ」の設定を、
「主人公→敵キャラ」「主人公→敵キャラ」にしています。 |
|
|
439-443 |
◇分岐: 【2】 [ CSelf37[[AI]行動内容] が -1 と同じ ]の場合↓ |
「何もしない」の場合は分岐し、 「セルフ[14](技能使用ターゲット)=セルフ[0](今回のAIキャラ)」にして、
544行目にあるラベル「直接登録」へジャンプ。 |
|
|
445-447 |
◇分岐: 【3】 [ CSelf37[[AI]行動内容] が -2 と同じ ]の場合↓ |
「逃走」の場合は分岐。 |
「セルフ[24]=セルフ[24]」は意味が無い設定であり、設定意図は不明。 |
|
|
450-452 |
▼ ――――――――――――――――――――――――――――――
▼ 使用対象をセット
▼ ―――――――――――――――――――――――――――――― |
|
|
453-495 |
■条件分岐(変数): 【1】 CSelf24[スキル対象 味0敵1] が 0 と同じ |
技能使用が「主人公→主人公」「敵キャラ→敵キャラ」の場合は分岐し、
AI設定の使用対象によってさらに分岐し、どのスロットに技能を使用するのかをセルフ[14]に設定。 |
|
|
497-538 |
◇分岐: 【2】 [ CSelf24[スキル対象 味0敵1] が 1 と同じ ]の場合↓ |
技能使用が「主人公→敵キャラ」「主人公→敵キャラ」の場合は分岐し、
AI設定の使用対象によってさらに分岐し、どのスロットに技能を使用するのかをセルフ[14]に設定。 |
|
|
541-546 |
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ コマンド登録
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ |
コモンイベント[157:X[戦]コマンド登録]を呼び出し、
可変DB[14:×┣ コマンド処理リスト]に行動内容を登録。 |
【ループ中断】を実行し、212行目の【回数付きループ [ CSelf29[行動回数] ]回】のループ回数が
まだ残っている場合は213行目から処理をやり直す。
ループ回数が残っていない場合は、このコモンイベントの処理を終了し、
呼び出し元のコモンイベント[193:X┃┗◆敵・味方AI計算]へ処理を戻す。 |
|
548-563 |
◇分岐: 【2】 [ CSelf39[条件満たすフラグ] が 0 以下 ]の場合↓ |
アクションの実行条件を満たさない場合は分岐。 |
|
|
549-563 |
▼ ――――――――――――――――――――――――――――――
▼ 条件外だった場合の処理
▼ ―――――――――――――――――――――――――――――― |
次のアクション番号の指定が無い場合は、セルフ[34]に「加算1」次のアクション番号を設定。
次のアクション番号の指定がある場合は、セルフ[34]にその指定したアクション番号を設定。 |