シミュレーションRPG

現在公開しているものはアルファ版です。
アルファ版の機能は今後のアップデートで大きく変更する可能性があります。


いわゆるシミュレーションRPGぽい機能を追加します。


動作サンプル (RPGアツマール)

サンプルプロジェクト (ダウンロード版)
簡単なシミュレーションRPGのサンプルです、RPGツクールMVをお持ちの方は
こちらをダウンロードしてください。
別途必要になる SAN_TileToner.js (作者: サンシロ様) も導入済みとなっています。
利用の際にはプラグインヘルプ内の利用規約を一読してください。
また、TMSrpg.jsに関する質問、不具合報告等は必ず tomoaky へお願いします。


プラグイン( TMSrpg.js )のダウンロード

追加予定の機能

・背後ボーナス(相手の背後から攻撃することでダメージアップ)
・反撃
・魔法反射
・身代わり
・ノックバック効果
・連続攻撃スキルに対応
・二刀流アニメーションに対応

使い方

必要な準備は以下のとおりです。

プロジェクトの準備
 ・プラグイン TMSrpg.js の導入
 ・プラグイン SAN_TileToner.js (作者: サンシロ様) の導入
 ・画像ファイルの準備
    サンプルプロジェクトから以下の画像を同じ位置へコピー&ペーストしてください。
    ・img/characters/!$SrpgCursor.png
    ・img/system/SrpgStatusArrow.png

シミュレーションRPGマップの準備
 ・SRPG管理イベントの設定
 ・アクターユニットイベントの設定
 ・エネミーユニットイベントの設定
 ・マップ情報の設定

シミュレーションRPGシーンの起動方法
 ・プラグインコマンド reserveSrpg を実行した後にイベントコマンド『場所移動』で
  シミュレーションRPGマップとして設定したマップへプレイヤーを移動させてください。

SRPG管理イベント

SRPG管理イベントとは、ターン切り替え時や敵ユニットの行動前、行動後などに
自動的に起動するイベントのことです。
イベントのメモ欄に <srpgManager> というタグがついていると、そのイベントは
SRPG管理イベントとして扱われるようになります。

スクリプトコマンド『this.isSrpgTurnStart()』や『this.srpgNextEnemy()』を
使い、状況に応じたイベント内容を設定してください。
ターン切り替え時の演出や、特定イベントが行動する際の演出などなど。

また、味方あるいは敵ユニットがすべて戦闘不能になった場合、
SRPG管理イベントのセルフスイッチA(味方ならB)がオンになり、
自動的にイベントが起動します。
必ずセルフスイッチA、Bを出現条件とするイベントページを作成し、
そのページでSRPGを終了させるためにイベントコマンド『場所移動』を実行してください。


ちなみにサンプルプロジェクトのSRPG管理イベントはマップの左上にあります。

ユニットイベント

イベントのメモ欄に <srpgActor:0> というタグがあれば味方ユニット、
<srpgEnemy:1> というタグがあれば敵ユニットとして扱われます。

ユニットが戦闘不能になると、ユニットイベントのセルフスイッチAがオンになり、
自動的にイベントが起動します。
必ずセルフスイッチAを出現条件とするイベントページを作成し、
そのページの最後にイベントコマンド『イベントの一時消去』を実行してください。


マップ情報

マップのメモ欄に <srpgInfo> と </srpgInfo> というタグにはさまれた内容が
マップ情報として扱われ、メニューコマンド『マップ情報』に表示されます。

イベントコマンド『文章の表示』と同じように \V[1] などの制御文字が使えます、
これにより、現在のターン数や残りの敵ユニット数などを表示することができます。

操作方法

マウスでの操作を想定して制作しています。

・ユニットコマンドを開く
   ユニットイベントを左クリック

・メニューコマンドを開く
   右クリック

・コマンドの決定
   左クリック

・コマンドのキャンセル
   右クリック

メモ欄タグ (イベント)

<srpgManager>
 このタグのついたイベントをSRPG管理イベントとして利用します。

<srpgActor:0>
 このタグのついたイベントを味方ユニットとして利用します。
 数値はパーティ内の並び順( 0 が先頭)です。

<srpgEnemy:3>
 このタグのついたイベントを敵ユニットとして利用します。
 数値は敵キャラのデータベース上の番号です。

<neutral>
 このタグのついたイベントは残りユニット数のカウントから除外します。

<traitor>
 このタグのついたイベントに行動制約『味方を攻撃』が常時付加されます。

<autoState:5 9>
 SRPG開始時、またはsrpgAddUnitコマンド実行時に 5 番と 9 番のステートを
 自動的に付加します。

メモ欄タグ (アクター、職業、武器、防具、敵キャラ、ステート)

<mov:4>
 移動力を設定します。アクターの場合は現在の職業、装備品、ステートの値も
 含めた合計値が採用されます。

<shipMove>
 通常は進入不可能な水の上も移動することができるようになります。

<floatMove>
 地形を無視して移動することができるようになります。

<search:5>
 索敵距離を設定します。一番近くにいる敵対ユニットとの距離が
 この値よりも大きい場合、移動も行動もしなくなります。
 タグを省略、または 0 を指定するとこの機能はオフになります。

メモ欄タグ (スキル、アイテム)

<range:diamond 2>
 スキルの射程距離を設定します。射程タイプと射程距離を半角スペースで区切って
 指定してください。射程タイプは下記の中から選んでください。
  diamond = ひし形
  rect = 四角形
  line = 直線(上下左右)
 また、<range:diamond 2 rect 0> のように続けてもうひとつタイプと距離を
 指定すると、範囲の中心に穴をあけることができます。

<effect:rect 3>
 スキルの効果範囲を設定します。範囲タイプと大きさを半角スペースで区切って
 指定してください。指定する値は射程距離と同じです。

メモ欄タグ (敵キャラ)

<face:Monster 2>
 敵キャラの顔グラフィックを設定します。ファイル名とインデックスを
 半角スペースで区切って指定してください。
 インデックスは画像のどの部分を使用するかを決める番号です。
 0 1 2 3
 4 5 6 7

<level:10>
 敵キャラのレベルを設定します、この値はステータス表示のためのダミーです、
 数値によって能力値が変化するようなことはありません。

<class:3>
 敵キャラの職業を設定します、この値はステータス表示のためのダミーです、
 数値によって能力値が変化するようなことはありません。

<nickname:乱暴者>
 敵キャラの二つ名を設定します。

<profile:人間が大嫌いなオーク族の戦士>
 敵キャラのプロフィールを設定します。

<equips:2 0 0 3 0>
 敵キャラの装備品を設定します、この値はステータス表示のためのダミーです、
 数値によって能力値が変化するようなことはありません。
 装備スロットの上から順に装備品の番号を半角スペースで区切って
 指定してください。

<attackAnimation:6>
 敵キャラの通常攻撃のアニメーション番号を設定します。

プラグインコマンド

値は \V[10] のように制御文字を使ってゲーム変数で指定することもできます。

reserveSrpg
 SRPG機能を有効化する予約をします、このコマンドを実行したあとに
 イベントコマンド『場所移動』でマップが切り替わるとSRPG機能が有効になります。

srpgCursorMove 10 5
 SRPGカーソルを座標 (10, 5) へ移動させます。

srpgCursorMoveToEvent 2
 SRPGカーソルをイベント 2 番へ移動させます。

setSrpgDestination 4 10 15
 4 番のイベントの目的地を座標 (10, 15) に設定します。

clearSrpgDestination 4
 4 番のイベントの目的地設定を解除します。

スクリプトコマンド

this.isSrpgTurnStart()
 ターン開始フラグが立っているかどうかを返します。

this.isSrpgActorTurn()
 味方ターンかどうかを返します。

this.srpgNextUnit()
 次に行動するイベント番号を返します。

this.srpgLastUnit()
 直前に行動したイベント番号を返します。

this.srpgBattler(0)
 ユニットイベントのバトラーオブジェクトを返します。
 括弧内に取得したいユニットイベントのイベント番号を指定してください。
 0 を指定した場合はこのコマンドを実行しているイベントが対象となります。
 何も指定しなかった場合は次に行動するイベント、または直前に行動した
 イベントが対象となります。
 このコマンドを使ってユニット情報の取得ユニット情報の操作ができます。

this.srpgRemoveUnit(0)
 ユニットイベントを強制的に排除します。
 戦闘不能になった場合と同じ扱いとなり、セルフスイッチAが自動的に
 オンになり、イベント内容も実行されます。
 対象の指定方法は this.srpgBattler と同じです。
 正しく実行された場合は 1、失敗した場合は 0 を返します。

this.srpgAddUnit(10, 1)
 イベント番号 10 番を敵キャラ 1 番のエネミーユニットとして設定します。
 敵の増援を演出する場合は、別途イベントコマンドで画像の変更等を
 実行してください。
 正しく実行された場合は 1、失敗した場合は 0 を返します。
 このコマンドを使用するイベントには <srpgEnemy:0> タグを付けてください、
 これによりSRPG開始時にセルフスイッチAをオフにする機能の対象となります。


this.srpgActorEventId(1)
 1 番のアクターがアクターユニットとして生存していればイベント番号を返し、
 そうでなければ 0 を返します。

ユニット情報の取得

スクリプトコマンド this.srpgBattler() を使って取得できる主なパラメータです。

 hp, mp, tp, mhp, mmp, atk, def, mat, mdf, agi, luk
 (HP, MP, TP, 最大HP, 最大MP, 攻撃力, 防御力, 魔法力, 魔法防御, 敏捷性, 運)

 hit, eva, cri, cev, mev, mrf, cnt, hrg, mrg, trg
 (命中率, 回避率, 会心率, 会心回避率, 魔法回避率, 魔法反射率, 反撃率, HP再生率, MP再生率, TP再生率)

 tgr, grd, rec, pha, mcr, tcr
 (狙われ率, 防御効果率, 回復効果率, 薬の知識, MP消費率, TPチャージ率)

 pdr, mdr, fdr, exr
 (物理ダメージ率, 魔法ダメージ率, 床ダメージ率, 経験獲得率)

 name()
 (名前)

 isActor()
 (ユニットがアクターなら真、エネミーなら偽)

以下はアクターユニットにのみ有効なパラメータです。

 actorId()
 (アクター番号)

以下はエネミーユニットにのみ有効なパラメータです。

 enemyId(), exp(), gold()
 (敵キャラ番号, 経験値, お金)

使用例:


ユニット情報の操作

スクリプトコマンド this.srpgBattler() を使い、対象ユニットにダメージを与える、
ステートを付加する、などの操作ができます。

 srpgGainHp(100)
 対象ユニットのHPを 100 回復します、負の値ならダメージになります。

 gainMp(50)
 対象ユニットのMPを 50 回復します、負の値ならダメージになります。

 gainTp(2)
 対象ユニットのTPを 2 回復します、負の値ならダメージになります。

 addState(4)
 ステート番号 4 番を対象ユニットに付加します。

 removeState(4)
 対象ユニットのステート番号 4 番を解除します。

使用例:


話す/調べる

プラグインパラメータ checkSkillId に 1 以上の値を設定することで、
その番号のスキルが『話す/調べる』として機能するようになります。

このスキルはアクターユニットの行動コマンドに自動的に追加され、
対象のイベント内容を実行するという効果があります。

これにより、通常のスキル効果では表現できない特殊な演出を
生み出すことができます。

地形効果

プラグインパラメータ regionEffect でリージョンごとの地形効果を設定します。
初期値『1,11 2,12』の場合、リージョン 1 番が設定された座標に移動すると
ステート 11 番を付加、別の座標へ移動すれば解除されます。
リージョン 2 番ならステート 12 番が対象になります。

リージョン番号とステート番号をカンマで区切ったものが 1 セット、これを
スペースで区切って必要なだけ設定してください。

仕様メモ

・スクリプトコマンド this.srpgAddUnit で指定したイベントの現在位置に
 他のユニットイベントが存在している場合、地形タグ 1 番が設定されていて、
 なおかつ、元の出現位置に一番近い位置に出現します。
 上記の条件を満たす場所が見つからない場合、コマンドは無効となります。

・ユニットが戦闘不能になると、自動的にセルフスイッチAをオンにして
 イベントが起動しますが、アクターとエネミーで歩行グラフィックの扱いに違いがあります。
 アクターユニットの場合、セルフスイッチAを条件にしたページの設定は無視され、
 アクターの歩行グラフィックが適用されます。

・混乱状態(敵を攻撃、誰かを攻撃、味方を攻撃)のユニット、または
 目的地が設定されているユニットは強制的に索敵距離が 0 になります。

・プライオリティが『通常キャラと同じ』に設定されているイベントがある座標は
 移動先として選択できません。
 ただし、通過することはできます。

・エネミーユニットは下記のように移動と行動を実行します。
 1: 索敵範囲内に敵対ユニットがいなければ 8 へ進む
 2: データベースで設定されたとおりに行動内容を決定
 3: 行動内容がなければ 8 へ進む
 4: 行動が有効な相手が射程範囲内にいれば行動
 5: 行動が有効な一番近くの対象に近づくように移動
 6: 4 で行動済みなら 8 へ進む
 7: 行動が有効な相手が射程範囲内にいれば行動
 8: 次のユニットへ

更新履歴

2017/03/24 ver0.1.2a
・地形効果の機能を追加
・特殊効果『逃げる』に対応
・エネミーユニットの行動後の移動処理を変更(敵対勢力と距離をとるようになります)
・ステートをユニットに自動付加する機能を追加
・エネミーユニットに目的地を設定する機能を追加
・ユニットの足元にHPゲージを表示する機能を追加
・ユニットの頭上にステートアイコンを表示する機能を追加

2017/03/17 ver0.1.1a
・ユニットコマンド表示中に移動可能範囲をクリックするだけで
 移動コマンドを実行できる機能を追加(要:プラグインパラメータ設定)
・ユニット行動後にイベントを実行する機能を追加
・移動と行動を済ませた後、自動的に待機コマンドを実行する機能を追加
・すべてのアクターユニットが移動と行動を済ませた後、自動的にターン終了確認へ
 移行する機能を追加
・話す/調べるスキルを追加
・ユニットに索敵距離を設定するタグを追加
・残りユニット数にカウントしないようにするタグ <neutral> を追加
・行動制約『味方を攻撃』を常時付加するタグ <traitor> を追加
・カーソルを指定座標(指定イベント)へ移動させる機能を追加
・アクターユニット戦闘不能時に歩行グラフィックが正しく適用されない不具合の修正

2017/03/10 ver0.1.0a
・アルファ版公開