シンボルエンカウントを実装するためのライブラリです – SymbolEncountLib.js

タイトル
シンボルエンカウントを実装するためのライブラリです
作者名
ヘルプ
イベントのエンカウントシンボルは、自動索敵、自動追跡、
自動逃避のアルゴリズムを実装しています。

◆メモ
<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(戻らない)に遷移する」処理を行います。
パラメータ
( なし )
ライセンス表記
<limit:12> 探索の深さです。
0x08 : 近く(limitの半分)に来たら視界になくても音でプレイヤーに気づくか

紹介ページ http://tkool.jp/mv/special/tkool-mv-update-1.html