能力値の強化・弱体の状態に応じて自動的に特定のステートを付与してくれるプラグインを作成しました。
例えば魔法も物理攻撃もしてくる敵キャラで、攻撃力が強化されている時は物理攻撃ばかりするようになったり、自分の能力値が下げられている時はそれを解除するような行動をしたり、ということをさせたい場合、RPGツクールVXの時は能力値の強化・弱体もステートの一種だったため、普通に行動条件に強化や弱体のステートを指定すれば実現できました。
しかしVX Ace以降、MV、MZは、強化・弱体が2段階かけられるようになった代わりにステートとは別枠の扱いとなったため、行動パターンの条件に使うことができなくなったばかりか、強化・弱体の状態を直接取得する手段もスクリプト以外には存在しないため、変数に現在の能力値を取得して、それがいくつかを敵キャラ個別に判定するという、気の遠くなるような実装が必要となってしまいます。
そこで、能力値の強化(バフ)・弱体(デバフ)の状態に応じて、自動的にステートを付与してくれるプラグインを作成しました。
また強化と弱体だけでなく、どちらもかかっていない、すなわち元の能力値の場合である時にステートを付与することもできます。これによって、攻撃力が強化されていない時に限って攻撃力上昇の魔法を使ったり、といった行動パターンの制御が可能になります。
RPGツクールMV/MZの両対応です。
事前準備が少々複雑なので、説明をよく読んでお使いください。
※ 2022-03-12追記:
デバフステートの処理にバグがあったので修正しました。お手数ですが、Version.1.0.1にアップデートをお願いします。
ステートの作成
まずは強化・弱体・通常の各状態を表すステートを作成します。
デフォルトのシステムでは、最大HP・最大MP・攻撃力・防御力・魔法力・魔法防御・敏捷性・運の8つの能力値に、強化と弱体がそれぞれ2段階ずつ、それに加えて能力値が通常(強化も弱体もかかっていない状態)のステートが必要なので、全部で40個のステートを作成する必要があります。
弱体のステートは必要ないとか、通常のステートは必要ない、といった場合は省略することができますが、特定の能力値だけ省略するといったことはできません。必ず全能力値分のステートを作成する必要があります。(厳密に言うと、不要な能力値であればステート名を付ける必要はありませんが、ステートの枠としては確保しておく必要があります。)
プラグイン等で能力値の数や強化の段階を変更している場合は、その分だけステートを作成する必要があります。
ステートの順序は、強化・弱体状態を表すアイコンの順序と同じです。
すなわちデフォルトでは、強化であれば最大HPの強化1段階、最大MPの強化1段階……の順で、最後は敏捷性の強化2段階、運の強化2段階、の順で終わります。弱体も同様です。
通常状態には段階がありませんが、能力値の順序は同様で、最大HPの通常時、最大MPの通常時……運の通常時の順にステートを作成します。
プラグイン等で強化・弱体の仕組みを変更している場合は、アイコンの順序を参考にステートを作成してください。
ダミーステートなので、ステートの設定は特に不要です。
ステート名を設定するのと、あとは「戦闘終了時に解除」にチェックしておけば、戦闘でない時に余計なステートが付かなくて済みます。
ステートアイコンはテスト時以外は設定しない方がよいでしょう。メッセージ等も不要です。
プラグインパラメータの設定
ステートの作成が終わったら、次はプラグインパラメータの設定です。
「強化開始ステート」「弱体開始ステート」「通常開始ステート」で、それぞれ強化、弱体、通常状態の先頭(最大HP)のステートを指定します。
弱体のステートは必要ないとか、通常のステートは必要ない、といった場合は指定を「なし」にすればOKです。
「強化最大段階」「弱体最大段階」で、それぞれ強化・弱体が最大で何段階まであるかを指定します。デフォルトは2で、プラグイン等で変更している場合はその段階数を指定します。本プラグインに段階数を変更する機能はありません。
「低段階ステート付与」をON(true)にすると、例えば攻撃力強化2段階が付いた場合に、攻撃力強化1段階のステートも同時に付与されます。OFF(false)にすると、攻撃力強化2段階の場合は2段階のステートのみが付与され、1段階のステートは付与されません。
強化・弱体がかかっていれば、何段階かにかかわらず特定の行動をとらせたい、といった場合にはONにすると便利です。
敵キャラの行動パターンの設定
以上で事前準備が完了したら、本題の敵キャラの行動パターン設定に移ります。
行動パターンの条件のステートで、強化・弱体・通常が使えるようになるので、それらを駆使して効果的な行動パターンを作成してください。
想定している使い方としては、例えば以下のようなものがあります。
- 「攻撃力通常」の場合にのみ攻撃力強化のスキルを使用する
- 「攻撃力強化」の場合は通常攻撃のみしてくる
- 「攻撃力弱体」の場合は魔法攻撃のみしてくる
- 「攻撃力弱体」の場合は弱体解除のスキルを使用する
敵のバフ・デバフ行動は、深く考えずに作ると無駄撃ちが多くなりがちなので、このバフ・デバフ連動ステートを使って、賢い(いやらしい)敵キャラを作ってみてください。
プラグインの実装と注意点
今回のプラグインは、事前準備が少々面倒で分かりにくい部分があるので、不明点等あればお気軽にお問い合わせください。
特に、他のプラグインで能力値の数や強化の段階を変更している場合は、どのようにステートを準備すればいいかが分かりにくいかもしれません。
プラグインの実装としては、Game_BattlerBase の buffIconIndex を利用して、基準値(最大HPの強化・弱体1段階)からのインデックスを取得し、何番目のステートかを計算させています。
能力値や強化の段階を変更している場合は、当該プラグインが強化・弱体状態を表すアイコンのインデックスを、どのように取得しているかに準拠しますので、これを参考にステートを作成してください。
また機能として、強化も弱体もかかっていない状態を表すステートと、高段階の強化・弱体がされている時に低段階のステートも付与するオプションは、想定する用途があったので追加しましたが、他にも付随する機能で欲しい機能があれば、ご相談ください。ただし、あまりに個別の用途だったり、仕様が複雑になりすぎる機能だったりする場合は、ご希望に添えない場合もありますので、ご了承ください。
その他、質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。