#============================================================================== # # ■ エネミー行動パターン改良・マニュアル □Ver8.02 □製作者:月紳士 # # ・RPGツクールVX用 RGSS2スクリプト(マニュアル) # # ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。 #------------------------------------------------------------------------------ # 更新履歴 # Ver8.02 ○行動条件追加ダミースキルの設定に関する不具合を修正。 # Ver8.01 ○アクターの「行動パターン参照」ステート不具合修正。 # Ver8.00 ○「機能追加:二重行動」スクリプトの為の変更と仕様の見直し。 # Ver7.00 ○仕様の見直し。エネミーにも行動パターン変化ステート適用可能に。 # Ver6.00 ○機能追加:アクター行動パターン化 公開の為の更新。 # Ver5.53 ○行動条件9が機能しなかった不具合修正。 # Ver5.52 ○記述の見直し(仕様変更無し) # Ver5.51 ○戦闘行動の強制時にも狙う攻撃をしてしまう不具合を修正。 #      詳しくはマニュアルのオプションBをご覧ください。 # Ver5.50 ○スクリプトの簡略化。 # Ver5.00 ○Game_Unit::random_targetを書き換えている他スクリプトに対応。 # Ver4.00 ○拡張スクリプトに対応。 # Ver3.00 ○ターゲットを拡張するスクリプトとの競合を極力避ける様、 #      内部仕様を変更しました。基本的な動作は変わりません。 # Ver2.02 ○ルーレット方式にて満たす行動条件がひとつもない場合に #      強制終了する不具合の修正。 # Ver2.01 ○微調整、除外→極稀に。 # Ver2.00 ○ステートによる索敵確率操作の機能を追加。 # Ver1.04 ○使用者対象スキルを使用した際の不具合の原因と思われる部分を修正。 # Ver1.03 ○条件7「自分以外の対象」の動作時バグ修正。 # Ver1.02 ○仕様詳細の変更。 # 機能Bを「行動パターンの決定方法をルーレット方式」という仕様に変更。 # Ver1.01 ○仕様の変更 #      ・条件8を「味方に戦闘不能が出た時」→「味方に戦闘不能無し」に変更。 #      ・行動パターンの昇順登録機能を「完全な昇順登録」から #       「リスト登録済みの優先度と同じ優先度でもリスト登録していく」 #       ように変更。 #     ○ターゲット消失時動作のバグ修正。 #------------------------------------------------------------------------------ =begin  ※このマニュアルは素材としてプロジェクト内に貼り付ける事も可能です。 スクリプトの機能は大きくわけて4つあります。 @ 新たな行動条件の追加機能。   エネミーの行動パターンに、新たな行動条件を追加します。  A 行動条件を複数設定可能にする機能。   ターン指定+HP指定... というように   ひとつの行動に対して複数の条件を設定できるようになります。   それら複数の条件すべてを満たす時のみ、その行動をとります。  B 行動パターンの決定方法をルーレット方式へ変更。   独自の方式で行動パターンを組むことができるようになります。  C 行動パターンを変化させるステートを作成。   エネミーの行動パターンを、設定したステートを付加することで   一時的に別のエネミーの行動パターンに変化させることができます。 #------------------------------------------------------------------------------    @ 新たな行動条件の追加機能・設定の仕方   1:確保するスイッチ番号を決める  この機能はエネミーのデータベースにて、  行動条件のスイッチを利用して設定をおこないます。  追加機能用に確保されたスイッチを、条件「スイッチがONの時」に選ぶことで  「その項目が満たされた場合を条件とする」という意味になります。    スクリプト内で、確保するスイッチの最初の番号を、  「カスタマイズ項目」の TOP_SWITCH = にて設定してください。  そのスイッチより数えて9つのスイッチが、このスクリプト用に使われます。  (この9つのスイッチは通常のスイッチとしての機能はなくなります)     追加される行動条件と、対応するスイッチの番号は下記の通りです。 index (Switche No.) : 条件(推奨するスイッチにつける名前) 0 (= TOP_SWITCH) : 付加・解除が有効の対象 1 (= TOP_SWITCH + 1) : HPが全快でない対象 2 (= TOP_SWITCH + 2) : HPが1/2以下の対象 3 (= TOP_SWITCH + 3) : HPが1/5以下の対象 4 (= TOP_SWITCH + 4) : MPが残っている対象 5 (= TOP_SWITCH + 5) : 動くことが出来る対象 6 (= TOP_SWITCH + 6) : 指定indexの対象 7 (= TOP_SWITCH + 7) : 自分以外の対象 8 (= TOP_SWITCH + 8) : 味方に戦闘不能無し 9 (= TOP_SWITCH + 9) : 自分ひとりの時 2:スイッチに名前をつけておく  (これは任意ですが)確保したスイッチにわかりやすく名前をつけてください。  実際に行動パターンを設定する際に便利です。 3:データベース・エネミーにて、スイッチを行動条件に設定する  ここまでの準備が出来たら、あとの設定はすべてデータベース内で行えます。  確保したスイッチを行動条件に選ぶことで、項目名どおりの条件で、  その行動がパターンとして登録されるようになります。 #------------------------------------------------------------------------------ @ 新たな行動条件の追加機能・追加行動条件の説明 対象の状態を条件とする項目(0 〜 7)は、 行動が通常攻撃や単体を対象とするスキル(連続を含む)の場合、 条件を満たす対象の中から、狙うべき対象を選びます。 対象がランダムのスキルの場合や、 グループを対象とするスキルの場合は、 条件を満たす対象がひとりでも含まれていれば、 条件を満たしていると判断します。 (スキルの性質上、個人を狙うような動作はしません。 よって実際の対象には条件を満たさない者も含まれる場合があります) 条件を満たす対象が一人も存在しない場合、  その行動自体が行動パターンにはあがりません。 ・付加・解除が有効の対象   スキルに付加・解除するステートが設定されている場合専用です。   ステート付加・解除が対象にとって有効な場合、条件を満たします。   もし、そのステートがすでに付加されていたり、すでに解除されていたりすると   この条件は満たしません。    効果がないスキルの無駄撃ちをさせずに別の行動を行わせたり、    まだそのスキルによるバッドステートに掛かっていない敵を狙わせたり、    バッドステートに犯された仲間がいる場合のみ回復呪文を使わせたり出来ます。  ・HPが全快でない、HPが○○以下、MPが残っている対象    条件名の通り、対象のHP・MPを行動条件に出来ます。        敵ならば瀕死の敵を狙う、味方なら瀕死の仲間を救うスキルを作れます。    マナドレインを、MPの回収が見込める対象のみに使わせることができます。  ・動くことが出来る対象    麻痺や混乱などで行動出来ない対象を除き、行動できる対象のみ狙います。    不意打ちによって、対象パーティー全体が動けない場合も条件に含みます。    「逃げる」「防御」など、消極的な行動の条件に使用すると良いでしょう。    相手が行動出来ない無防備な状況では、この行動条件は満たされないからです。  ・指定indexの対象    グループ内のindexで対象を指定することができます。    指定は、データベース・敵グループ、バトルイベントのスクリプトで    $game_troop.appoint_target = [1]    と記述することで設定します。( 1 は任意のindexに変更してください)    ※indexは 0 から数えます。一人目は 0 、二人目は 1 です。注意してください。    通常は0ターン目(戦闘開始前)のイベントとして組み込んで置くと良いですが、    バトルイベントとの組み合わせで、戦況により指定を変更することも出来ます。    $game_troop.appoint_target = [1, 2, 3] 等と連記することも可能です。    その際は連記したindexの中からランダムに対象が選ばれます。 $game_troop.appoint_target が未設定(= [])の場合、 この条件は満たさない、という扱いになります。    ボスを援助する子分エネミー等が作れます。  ・自分以外の対象    常に自分以外を対象としてスキルを使います。    味方グループを対象とするスキル用の条件です。    回復魔法等を自分以外の仲間の為だけに使わせることが出来ます。  ・味方に戦闘不能無し    敵グループにまだ戦闘不能のエネミーがいない場合を条件とします。    味方に死者が出たことをきっかけに戦術を変えるエネミーを作れます。  ・自分ひとりの時    自分が最後のひとりの場合、行動します。    ひとり取り残された場合に逃げ出す臆病なエネミー等を作ることが出来ます。 #------------------------------------------------------------------------------  A 行動条件を複数設定可能にする機能・設定の仕方   まずはダミースキルを作ります。   スクリプト内のカスタマイズ項目 ADDITION_CONDITION_SKILL = で、   ダミースキルとするスキルのidを指定します。   ゲーム内では使用しないスキルの番号にしてください。   ダミースキルは名前を "+追加条件" 等としておくと   データベースで編集する際、わかりやすいです。   次に、データベース・敵キャラにて、行動パターンの編集時に   条件を追加したい行動のすぐ次の行に、上記で設定したスキルを選び、   そのスキルの行動条件として、追加したい行動条件を選びます。   そうすることで、先に設定した行動に、後に選んだ行動条件が追加されます。   追加条件はダミースキルを連ねていくことでいくつでも追加可能です。   ※追加条件の組み合わせによっては、    行動パターンにまったく反映されない場合もあります。    #------------------------------------------------------------------------------  B 行動パターンの決定方法をルーレット方式へ変更・説明   行動パターンの決定の仕方を変えて、優先度による純粋なルーレット方式にします。   独自の行動パターンを組むことができるようになります。   条件を満たす行動を、優先度の数だけルーレットに加え、抽選をします。   (つまり、優先度=オッズとなります)   これはこのスクリプトによる独自の行動パターン作成です。   その真の独自性は、ルーレットの「昇順登録」にあります。     ルーレットの昇順登録とは…   「行動パターンのルーレット」には、条件を満たすことを前提に、   優先度が昇順になるようにのみ、リスト上から順に登録されていきます。   1→2→3→4→5…というように、です。   高い優先度で、かつ条件を満たす行動がリスト上部にすでにある場合、   その行動はルーレットに登録されず、行動する可能性もなくなります。   例えば、リスト上から順に 1、2、5、3、6というように   優先度が並んでいて、すべてが条件を満たす場合、   実際にルーレットに登録されるのは1、2、5、6 の昇順です。   優先度3はそのまえに既に優先度5が登録されており、   昇順登録にならない為、除外されます。   この例で優先度3がルーレットに登録されるのは、   優先度5がその条件を満たさない場合のみです。   (その場合は1、2、3、6というようにルーレットが準備されます)   この法則を利用することで、戦況により   準備されるルーレットを変える=行動パターンを変える ことが出来るわけです。   例えば、リスト上部に 行動条件を「自分ひとりの時」にした   優先度10の「逃げる」を準備しておき、   その後にそれより低い優先度の行動を登録しておくと…   自分ひとりになるまでは逃げる以外の行動をとり、   ひとりになったとたん必ず逃げ出すエネミーにすることができます。   工夫次第でまるで何かを考えているような   擬似AIエネミーを作ることができる、かもしれません。   少し複雑な機能なので、機能をオフにも出来るようにしてあります。   わかりにくいと感じたら、オフにしてください。従来の判定になります。   カスタマイズ項目にて、オン/オフの設定が可能です。    #------------------------------------------------------------------------------  C 行動パターンを変化させるステートを作成・説明   エネミーの行動パターンを、設定したステートを付加することで   一時的に別のエネミーの行動パターンに変化させることができます。   <エネミー行動変化:1>   とメモ欄に書いたステートをエネミーに付加してください。   1 の部分は任意のエネミーのIDを入れます。(半角数字)   これらステートにかかったエネミーは、ステートにかかっている間   ID指定したエネミーの行動パターンで行動します。   ※ このタイプのステートが付加した時点、もしくは解除された時点で     未行動だった場合は、そのターンの行動はキャンセルされる仕様です。    #------------------------------------------------------------------------------  オプション@:条件に合うターゲットがいない場合の動作設定   行動パターンはターン開始前に決定される為、 そのエネミーの行動順番が回って来た時点で、行動条件を満たすターゲットが 存在しない場合があります。 通常攻撃の場合は、ターゲットの条件に合う敵を再検索し、 条件に合うターゲットへ通常攻撃をしかけます。 (条件に合うターゲットがいない場合は行動をしません) スキルの場合は、ただターゲットを変更することが最善とは言えない場合も、 そのスキルの性質によってありえることです。 また、どんな行動を再選択するのか、ということは エネミーの性格付けに関わるポイントとなるでしょう。 この、スキルによる「ターゲット消失」の際の、 エネミーの動作を以下の3種類から選べます。 無鉄砲タイプ … スキルはそのまま実行し、         スキルのターゲットが単独の場合はランダムに対象を選びます。 好戦的タイプ … スキルを中止し、ランダム通常攻撃に切り替えます。 慎重派タイプ … スキルを中止し、そのターンは様子を見ます。   設定の仕方は、デフォルトの動作設定と、エネミー個別設定の二種類あり、   個別設定がされていないエネミーの動作は、自動的にデフォルトの動作になります。   デフォルトの動作設定は、スクリプト内のカスタマイズ項目にて設定してください。   エネミー個別に設定する場合は、データベース・エネミーのメモ欄に、    <無鉄砲> <好戦的> <慎重派>   のいずれかのワードを記入してください。< > ←の囲みは必ず付けてください。  オプションA:ステートによる索敵確率操作   ステートのメモ欄に    <索敵:頻回> <索敵:極稀>   のいずれかのワードを書き入れることで、ターゲット索敵率を   操作することができる特別なアクター専用ステートを作成することが出来ます。   < > ←の囲みは必ず付けてください。   <索敵:頻回>    …エネミーが条件を満たすターゲットグループからターゲットを選ぶ際、     このステートになっている者は選ばれやすくなります。     ※つまり敵に狙われる可能性が高くなります!   <索敵:極稀>    …エネミーが条件を満たすターゲットグループからターゲットを選ぶ際、     このステートになっている者は選ばれにくくなります。     ※つまり敵に狙われる可能性が低くなります!   どちらもターゲットを任意に選ぶ攻撃(スキル)の場合のみに有効です。   全体攻撃や、ランダム攻撃の場合にはこのオプションは機能しません。 オプションB:カスタマイズ項目、USE_RANDOM_TARGET の説明 カスタマイズ項目、USE_RANDOM_TARGET の設定にて、 条件にあった対象をランダムに選出する処理に、 Game_Unitクラスのrandom_targetメソッドを流用するか、否かを選べます。 流用すると、random_targetメソッドが他のスクリプトで書き換えられている際、 その書き換えが、当スクリプトの「条件にあった対象をランダムに選出」する 処理にも反映されることになります。   書き換えしているスクリプトの内容にもよりますが、機能拡張となります。 流用すれば、他スクリプトの機能を取り入れられるメリットがありますが、 他スクリプトの書き換え内容によっては、競合してしまい 満足な結果が得られない(場合によっては不具合の原因となる)ことになります。 この為、流用機能の導入は任意設定できるようにしてあります。 流用しない場合は、当スクリプトで別に準備した独自の選出処理を使用します。   他スクリプトの処理が反映されませんが、競合の可能性も低くなります。 random_targetメソッドを書き換えるスクリプトを他に導入していなければ、 このカスタマイズは特に意味を持ちません。オン/オフ同じ処理をします。 =end