サンプルゲームの時代からプラグインを作ってきました。
Symbol Encount Lib - SymbolEncountLib.js
▼Symbol Encount Lib(神無月サスケ様作) - SymbolEncountLib.js
https://plugin.fungamemake.com/archives/2653
シンボルエンカウントを実装するためのライブラリ
ふりがな:しんぼるえんかうんとらいぶらり
機能概要: シンボルエンカウントを実装するためのライブラリ
利用規約(ライセンス):準公式プラグイン
作者:神無月サスケ
作者サイト:https://x.com/ktakaki00
ダウンロードページ:http://store.tkool.jp/a/rpgmaker/mv
ファイル名:SymbolEncountLib.js
備考:準公式プラグイン/サンプルゲーム:Emil
プラグインのヘルプ:
/*:ja * @plugindesc シンボルエンカウントを実装するためのライブラリです。 * @author 神無月サスケ * * @help イベントのエンカウントシンボルは、自動索敵、自動追跡、 * 自動逃避のアルゴリズムを実装しています。 * * ◆メモ * <sym:41> シンボル用の変数ID * このタグがメモに書かれている時、そのイベントは * エンカウントシンボルとみなされます。 * そしてこの変数の値が、シンボルのステート(後述)を表します。 * <troop:15> 敵キャラID * 戦闘の際、イベントコマンドの指定にかかわりなく、 * このIDの敵グループとの戦闘になります。 * <limit:12> 探索の深さです。 * この値が大きいほど、遠くから追いかけてきて、遠くまで追いかけていきます。 * 省略可能(デフォルト: 8) * <symFlag:3> 様々なフラグです。以下にビット列を示します。(デフォルト値:3) * 0x01 : 所定位置に戻るか * 0x02 : 自分が弱いと逃げ出すか * 0x04 : 追跡、逃亡を行わない(常に一定ルートを動く敵など) * 0x08 : ページごとに画像(歩行グラフィック)を設定 * デフォルトではページ1で指定した画像を全てのページで使います。 * <cType:2> シンボルの特徴を示すフラグです。(デフォルト値:2) * 0x07 : 視野の広さ(0=目の前だけ, 1=22.5度, 2=45度, 3=67.5度, 4=90度) * 0x08 : 近く(limitの半分)に来たら視界になくても音でプレイヤーに気づくか * * ◆基本原理 * エンカウントシンボルを有限状態機械(FSM)に見立て、 * 一つのイベントページを一つの状態とみなします。 * 指定された変数の値が、現在のステートになります。 * * ◆FSMのステート * 0 : ノーマル:索敵(NORMAL: Search player) * - ★自動で索敵を行います。プレイヤーを発見したら状態1に遷移します。 * - 上記の例外:「追跡、逃亡を行わない」フラグがONの時は、 * 自動では状態1に遷移しません。 * - トリガーは「イベントから接触」、 * 実行内容は「すぐに状態3(戦闘)に遷移」です。 * 1 : 発見 (FIND) * - トリガーは「自動実行」または「並列実行」で、実行内容は、 * 「逃げるか判定し、すぐに状態2(追跡)か7(逃げる)に遷移」です。 * ※吹き出しアイコン「!」の表示を想定しています。 * 2 : 追跡(CHASE) * - ★自動で追跡を行います。プレイヤーに接触したら状態3(戦闘)、 * 見失ったら状態5に遷移します。 * - トリガーは「イベントから接触」、 * 実行内容は「すぐに状態3(戦闘)に遷移」です。 * 3 : 戦闘(BATTLE) * - トリガーは「自動実行」で、バトルの処理を行います。 * - プレイヤーが勝てば状態8に、逃げれば状態4に遷移します。 * - プレイヤーが全滅した場合、特定のコモンイベントに飛ぶか、 * さもなくばゲームオーバーです。 * 4 : 逃げられた(ESCAPED_BY_PLYR) * -トリガーは「並列実行」で、一時的に停止状態:半透明:すり抜け: * 2秒間ほど動かない状態にします。 * -その後「所定位置に戻るか」フラグに応じて状態6(戻る)か状態0(戻らない)に遷移 * 5 : 見失う(MISS) * - トリガーは「自動実行」または「並列実行」で、 * 即座に「所定位置に戻るか」フラグに応じて * 状態6(戻る)か状態0(戻らない)に遷移。 * ※吹き出しアイコン「くしゃくしゃ」の表示を想定しています(お好みで) * 6 : 所定位置に戻る(GO_HOME) * - ★自動的に元の場所に戻り始めます。プレイヤーが近づいたら状態1(発見)に、 * 接触したら状態3(戦闘)に遷移、 * 元の場所にたどり着いたら状態0(戻らない)に遷移。 * - トリガーは「イベントから接触」、 * 実行内容は「すぐに状態3(戦闘)に遷移」です。 * 7 : 逃避(ESCAPE) * - ★自動的にプレイヤーから遠ざかります。プレイヤーの方が接触してきた場合、 * 状態3(戦闘)に遷移します。プレイヤーから十分遠ざかった場合、 * フラグに応じて状態6(戻る)か状態0(ノーマル)に遷移します。 * - トリガーは「プレイヤーから接触」、 * 実行内容は「すぐに状態3(戦闘)に遷移」です。 * 8 : 退治された(DEFEATED) * - トリガーは「並列処理」で、敵が消えるアニメーション * (すり抜けで数秒点滅するなど)を入れます。 * アニメーションが終わったら、状態99(消滅)へ遷移します。 * 99 : 消滅(ERASED) * - トリガーは「並列処理」で、「イベントの一時消去」を行います。 * * ◆状態に関する注意 * - 状態0, 2, 6, 7では、「自律移動」の「タイプ」を「固定(=0)」にした場合に * デフォルトの動作をします。 * これを別の状態に設定すると、その動きに切り替わります。 * 動作を自分でカスタムしたい時は利用してください。 * (例:追跡時を「プレイヤーに近づく」に変更するなど) * - 「追跡、逃亡を行わない」フラグの立ったイベントでは、 * 使用する状態は0, 3, 4, 6, 8, 99だけです。 * このようなイベントでは、これ以外の状態は作る必要はありません。 * * ◆プラグインコマンド * SymbolEncountLib transit arg1 * arg1は数字です。この場合、arg1で指定された状態に遷移します。 * SymbolEncountLib transit chaseOrEscape arg2 * 状態1で呼び出します。「逃げるか判定し、すぐに状態2(追跡)か7(逃げる)に * 遷移する」処理を行います。 * arg2 は敵グループのIDにしてください。省略した場合メモの値が使われます。 * 例:SymbolEncountLib transit chaseOrEscape 10 * 10番の敵グループがプレイヤーと強さを比較して追跡するか逃げるか決める * SymbolEncountLib transit goHomeOrChase * 状態4,5で呼び出します。「『所定位置に戻るか』フラグに応じて * 状態6(戻る)か状態0(戻らない)に遷移する」処理を行います。 */