「ステートを予防するステート」の実装方法

2018/12/2 salaspitg

この記事はツクール公式フォーラムで開催されたツクールMVアドベントカレンダー2018に寄稿したものです。

自分用の備忘録を兼ねた、ツクールMVデフォルト戦闘の小ネタ紹介になります。

もっと効率のいい実装方法はあると思いますので、ご自身の方法で最適化してみてください。

次にステートをかけられたときに、それを1度だけ自動的に解除してくれる、予防効果を持ったステートを作成します。

1.ステートの設定

このプラグインを使用すると、ステートのメモ欄に以下の記述を行うことで、ステート〇が付与されたときにコモンイベント□番を実行するようになります。

<ステート○付与時コモン:□> または <AddState○Common:□>

今回はステート[0005]~[0009]を予防できるようにしてみます。

ここでは仮にステート[0004]に「予防」という名称のステートを作成、メモ欄に次のように記述し、[0005]~[0009]のステートがかかった時にコモンイベント[0001]を実行するように設定します。

メモ欄(Note)

<AddState5Common:1>

<AddState6Common:1>

<AddState7Common:1>

<AddState8Common:1>

<AddState9Common:1>

2.コモンイベントの作成

実際にステート解除処理を行うコモンイベント[0001]を、次のように作成します。



コモンイベント 実行内容

◆条件分岐:アクター[0001]がステート[0004]になっている …【1】

◆SEの演奏:Recovery, 90, 100, 0…【2】

◆ステートの変更:主人公[0001], - 状態[0004] …【3】

◆条件分岐:アクター[0001]がステート[0005]になっている …【4】

◆ステートの変更:主人公[0001], - 状態[0005] …【5】

:分岐終了(条件分岐)

◆条件分岐:アクター[0001]がステート[0006]になっている …【6】

◆ステートの変更:主人公[0001], - 状態[0006]

:分岐終了(条件分岐)

◆条件分岐:アクター[0001]がステート[0007]になっている

◆ステートの変更:主人公[0001], - 状態[0007]

:分岐終了(条件分岐)

◆条件分岐:アクター[0001]がステート[0008]になっている

◆ステートの変更:主人公[0001], - 状態[0008]

:分岐終了(条件分岐)

◆条件分岐:アクター[0001]がステート[0009]になっている

◆ステートの変更:主人公[0001], - 状態[0009]

:分岐終了(条件分岐)

:分岐終了(条件分岐)


【1】アクター[0001]が予防ステート[0004]にかかっているかどうかのチェック

【2】演出(任意)

【3】アクター[0001]にかかっている予防ステート[0004]を解除

【4】アクター[0001]が予防したいステート[0005]にかかっているかどうかのチェック

【5】アクター[0001]にかかっているステート[0005]を解除

【6】以下ステート[0009]まで繰り返し

これでアクター[0001]が予防ステート[0004]になっているときに、ステート[0005]~[0009]が付与された場合、予防ステート[0004]と共にステート[0005]~[0009]も一緒に自動的に解除されます。

なお、これだけではアクター[0001]にしか効果がないので、必要なアクターの人数分だけ処理を用意してください。敵キャラ側にも実装したい場合も同様です。

力技で実装しているので、アクターの人数やステートの数が膨大になってくると入力に要する労力も爆発的に増え、手動で実装するのはいささか非効率です。ここはBTLを活用すれば効率よく入力できると思います。これはツクール2000時代に存在したツクールブリッジのツクールVXA・MV版とも言えるツールです。

3.応用

コモンイベントの内容を工夫すれば、以下のようなステートも工夫すれば作成可能になるでしょう。

  • 毒系のステートだけ予防できる毒予防ステート
  • 補助系のステートを消してしまう妨害ステート
  • 指定回数実行されるまで消えない予防ステート
  • 一定確率で再度付与される予防ステート

Happy RPG Making!