バトラーのグラフィックを拡張【RPGツクールMZ&MVプラグイン】

2025年01月28日

 バトラーのグラフィックを拡張します。


 当プラグインはトリアコンタン様のBattlerGraphicExtend.jsを元にDynamicMotion用に調整したものです。
 競合を最小限に抑えるため、オリジナルのプラグインよりも機能は縮小されています。
 

目次


導入方法(Install)

更新履歴(History)

使用方法(Usage)

フラッシュの仕様(Flash Specifications)

スクリプト(Script)

プラグインパラメータ(Plugin Parameters)

フラッシュ方式(FlashType)

フラッシュ間隔(FlashInterval)

間隔による優先設定(PriorityByInterval)

ステートアイコンを光らせない(NoFlashStateIcon)

ステートアイコンZ座標(StateIconZ)

ステートアイコンX座標調整(StateIconAdjustX)

ステートアイコンY座標調整(StateIconAdjustY)


導入方法(install)


 以下のリンクを右クリックで保存し 、[プロジェクト]\js\plugins に放り込みます。ツクールのプラグイン管理から機能をONにしてください。
 ※このプラグインはMV、MZの両方で有効です。

 NRP_BattlerGraphicExtend.js ver1.05(2025/01/28)

更新履歴(History)


2025/01/28(ver1.05)

  • ステートアイコンを光らせない設定の場合、ステートアイコンの位置がズレる不具合を修正。
  • それに伴い、ステートアイコンの座標を調整できるようにした。

2024/08/11(ver1.04)

  • ステートアイコンを光らせない設定の場合、MPP_StatePopup.jsとの併用時にポップアップが標準のアイコンより下に表示されてしまう問題に対応した。
  • ステートアイコンのZ座標を指定できるようにした。

2024/06/19 -> 2024/06/20(ver1.03 -> 1.031)


2024/06/10(ver1.02)

  • 複数のフラッシュが設定されている場合、交互にフラッシュを表示するように修正。
  • それに伴い、フラッシュの優先度をつける機能を実装。
  • 『バトラーのフラッシュ間隔』の単位を変更し、そのまま一度のフラッシュの長さに対応するようにした。
    フラッシュの長さがver1.01よりおおよそ1/6の長さ(正確には1/6.28)になりますので、修正しないとフラッシュが異様に速くなります! 前回から更新した場合は<BattlerFlashInterval>の値を6倍に変更してください。
  • フラッシュ間隔の初期値を設定可能に。(初期値:90)
  • スクリプトによるフラッシュ機能を実装。
  • また、NRP_DynamicAnimationMV2MZ.jsと併用している場合はあちらも最新化するとフラッシュのチラつきが安定します。

2023/09/06(ver1.01)

  • 公開!

使用方法(Usage)


 特徴を保有するオブジェクト(アクター、エネミー、職業、装備、ステート)のメモ欄に以下を記載してください。

バトラーの色調変更

<BattlerTone:r,g,b,g>

 r:赤 g:緑 b:青(-255..255) g:グレー(0..255)

 ・例(真っ赤):<BattlerTone:255,-255,-255,0>
 ・例(灰色):<BattlerTone:0,0,0,255>

バトラーのフラッシュ

<BattlerFlash:r,g,b,a>

 r:赤 g:緑 b:青 a:強さ(0..255)

バトラーのフラッシュ間隔

<BattlerFlashInterval:f>

 f:フレーム数(標準は15)

バトラーのフラッシュ優先度

<BattlerFlashPriority:p>

 p:優先度(初期値は0)

バトラーのモーション速度

<BattlerMotionRate:n>

 n:倍率(100%)

 ・例:<BattlerMotionRate:150>
 ※この設定はアクターのみ有効です。

フラッシュの仕様(Flash Specifications)


 バトラーに複数のフラッシュの設定がされている場合、赤→青→緑→赤……というように交互にフラッシュが表示されます。


 ただし、フラッシュに優先度()が設定されている場合は、最も高い優先度のフラッシュだけが(交互に)表示されます。

 また、プラグインパラメータの『間隔による優先設定』をオンにすると、間隔が最も短いフラッシュだけが優先して表示されるようになります。

スクリプト(Script)


 以下でバトラーをフラッシュさせられます。
battler.startFlash([r,g,b,a], f);

 r:赤 g:緑 b:青 a:強さ(0..255) f:フレーム数
 ※battlerはGame_Battler型のオブジェクトです。

 例えば、DynamicAnimationで、対象を赤くフラッシュ(30フレーム)させたい場合は以下のようになります。
<D-Animation>
script = b.startFlash([255,0,0,255], 30);
</D-Animation>

プラグインパラメータ(Plugin Parameters)


フラッシュ方式(FlashType)

 フラッシュの表示方式です。
 半分ならば、最低でも色を半分残します。

 0:半分はBattlerGraphicExtend.jsのオリジナルの機能、1:全部は当プラグイン独自の機能になります。

フラッシュ間隔(FlashInterval)

 フラッシュの間隔の初期値です。
 1/60秒単位で設定してください。

間隔による優先設定(PriorityByInterval)

 複数のフラッシュ設定が存在する場合、間隔が短いものだけを表示します。

ステートアイコンを光らせない(NoFlashStateIcon)

 敵キャラのステートアイコンを本体と分離することでフラッシュの対象から外します。
 ※上の動画を見てもらうと分かりやすいですが、通常は敵キャラをフラッシュさせると、ステートアイコンまでフラッシュしてしまう仕様です。

ステートアイコンZ座標(StateIconZ)

 ステートアイコンを光らせない場合にアイコンのZ座標を指定します。

ステートアイコンX座標調整(StateIconAdjustX)

 ステートアイコンを光らせない場合にアイコンのX座標を調整します。

ステートアイコンY座標調整(StateIconAdjustY)

 ステートアイコンを光らせない場合にアイコンのY座標を調整します。

 >RPGツクールMZ&MV目次に戻る
posted by 砂川赳 at 19:37 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする

敵行動ルーチンの改善【RPGツクールMZ&MVプラグイン】

2025年01月22日

 敵の行動ルーチン(AI)を改善するプラグインです。

初めに(introduction)


 ツクールMZ&MVの初期状態では、敵キャラはあまり賢く行動してくれません。

 例えば、回復魔法を使わせても対象は完全ランダムです。
 高確率で無駄撃ちするので、怖さや鬱陶しさがありません。ドラクエがファミコン時代から実現していたホイミスライムのようなモンスターすら作成が困難です。

 また、蘇生魔法を使わせれば、戦闘不能者がいようがいまいが無駄撃ちする始末。ドラクエ4のブラックマージ(マイナーかも……)のような蘇生を使ってくる敵もまともに作れません。

 一応、HPを行動の条件に使えますが、参照できるのは自分のHPのみ。
 そもそも、ツクールMZ&MVの仕様では行動を決定するタイミングがターンの最初だけです。ターンの途中で自分が瀕死になっても、次のターンまで回復行動は取りません。その隙に、プレイヤーは容赦なく敵を葬ってしまうでしょう。
 
 そんなこんなを改善するのが、このプラグインです。

  • HP&MP回復時に最も減っている対象を選択する。
  • 有効な対象が存在しない場合、回復や治療、蘇生を行わない。
  • ターン開始時だけでなく行動直前にも行動再選択を行う。
  • 既にかかっているステートを重ねがけしない。
  • 既に限界となっている能力変化を重ねがけしない。
  • MPが0の相手にMP吸収スキルを使わない。
  • 一人しかいない場合、身代わりスキルを使用しない。

 以上のような修正によって、賢く個性的な敵を実現します。

 この動画はその例です。敵は意味のない行動を取らず、的確に回復やステートを使ってきます。
※画面が小さい場合は右下の全画面表示をクリックしてください。

  • 導入方法(install)
  • 更新履歴(history)
  • パラメータ(parameter)

    導入方法(install)


     以下のファイルをダウンロードし 、[プロジェクト]\js\plugins に放り込みます。ツクールのプラグイン管理から機能をONにしてください。
     ※このプラグインはMV、MZの両方で有効です。

     NRP_EnemyRoutineKai.js ver1.11(2025/01/22)

    更新履歴(history)


    2025/01/22(ver1.11)


    2024/09/13 -> 2024/10/12(ver1.10 -> 1.101)

    • NRP_SkillEX.jsとの併用に対応。ステート付加率がNRP_SkillEX.js側で変更されている場合も制御できるようにした。
    • 回復スキルを無効な相手には使わないように修正。(2024/10/12 ver1.101)
      ※特にNRP_TraitsPlus.jsでアンデッドが回復でダメージを受ける設定にした場合など。

    2024/08/05(ver1.09)

    • TPBで『行動直前の再設定』をオンにした場合、行動が不発になってしまう不具合を修正。

    2022/08/19 -> 2024/07/21(ver1.08 -> 1.083)

    • 敵が自分しかいない場合、身代わりステートつきのスキルを使用しないように改善。
    • 『行動直前の再設定』がオンかつ複数回行動かつ速度補正技の後に非速度補正技を使用した際、行動回数が増えてしまう不具合修正。
      (2023/06/06 ver1.081)
    • 敵に範囲が味方かつ『ステート付加 通常攻撃』のスキルを使わせるとエラーになる不具合修正。(2023/11/11 ver1.082)
    • 不要な競合を引き起こす不具合修正。(2024/07/21 ver1.083)

    2021/07/18(ver1.07)

    • MPが0の相手にMP吸収/ダメージスキルを使わない機能を追加。
    • 『戦闘行動の強制』などで有効な対象が存在しないスキルを実行した場合、対象なしのまま実行する仕様を修正。普通に無効な対象に対して実行します。
      ※DynamicAnimationと組み合わせた場合、自分にアニメーションを表示してしまう問題への対処です。

    2020/10/04(ver1.06)

    • MVでエラーになる不具合修正。

    2020/09/13(ver1.05 -> 1.051)

    • MZのタイムプログレスで行動が不発する不具合修正。
    • タイムプログレスで速度補正技が選択されない不具合修正。(ver1.051)

    2020/09/06(ver1.04 -> 1.042)

    • 『行動直前の再設定』が有効なら、複数回行動時も毎回考慮するように修正。
    • 1.04で行動が不発する不具合修正。(ver1.042)

    2020/08/22(ver1.03 -> 1.031)

    • ツクールMZ向けにヘルプを修正。
    • 『行動直前の再設定』が有効だと、複数回行動の敵が無限に行動してしまう不具合修正。(09/03 ver1.031)

    2020/06/14(ver1.02)

    • 英語対応。

    2020/01/27(ver1.01)

    • ツクールMVの本体verが古い場合でも動作するよう修正。

    2020/01/24(ver1.00)

    • 公開開始!

    パラメータ(parameter)


     以下のプラグインパラメータで、敵全体の初期値を設定します。
     基本的にはほとんどONでいいと思います。
     ただし『対アクターの使用効果制御』をONにすると、わりと嫌らしくなるので取り扱い注意です。

     個別の敵キャラごとに設定したい場合は、メモ欄に記述することで切替可能です。

    パラメータ(基本設定)


    行動直前の再設定(resetAction)

     ONならば、行動直前にも再度の行動決定を行います。
     ※一人ずつ行動するCTBでは無意味なので、OFF推奨です。
     ※CTBでも複数回行動時には有効です。(ver1.04)

     ※ターン開始時に速度補正技が選ばれた場合は、行動再選択を行いません。また、行動再選択時に速度補正技を選ぶこともありません。速度補正の処理はターン開始時に行われるため、整合性が取れないためです。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineReset:[true or false]>

     ※[]は条件式内部に書かないでください。
     <RoutineReset:true>でON、<RoutineReset:false>でOFFという意味です。
     ちなみに、<RoutineReset>と省略しても、trueと同じ扱いになるみたいです。

    行動判定の実行(testApply)

     ONならば効果の得られないスキルは使用しなくなります。
     例えば、HPの減った仲間が存在しなければ回復を行いません。
     戦闘不能の仲間がいなければ、蘇生を行いません。
     既に仲間の全員がステートにかかっていれば、同一のステートをかけません。

     この設定がOFFの場合、以下の回復関連や使用効果関連の制御がONでも優先されます。

     個別設定時は以下を敵キャラのメモ欄に記入してください。
    <RoutineTest:[true or false]>


     また、スキルのメモ欄に以下を記入すると、スキル毎の使用条件を設定できます。
    <RoutineCondition:[condition]>

    例:10:睡眠の敵がいる場合のみ実行

    <RoutineCondition:$gameTroop.aliveMembers().some(function(m) {return m.isStateAffected(10)})>

     ※>(大なり)は条件式に使わないでください。タグ全体を閉じる記号と混同されるらしく認識できません。<(小なり)については有効です。

    パラメータ(回復関連)


    回復系行動の制御(controlRecover)

     ONならば回復系スキルの制御を行います。
     HP(MP)が最も減った仲間に対して回復スキルを使います。また、減った仲間がいなければ、優先度によらずスキルを使いません。

     ※タイプが『HP回復』『MP回復』のスキルが対象となります。使用効果などに回復値を設定するだけでは、制御を行いませんので注意してください。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineRecover:[true or false]>

    HP回復行動の条件(ifHpRecover)

     指定した条件式でHP回復を行います。
     『回復系行動の制御』がONの時のみ有効です。
     初期値の『b.hpRate() < 1.0』は、誰かのHPが100%未満になった時を意味します。
     例えば、50%以下に変更したい場合は、『b.hpRate() <= 0.5』にしてください。

     参照できる値はスキルの計算式と同じで、aは行動主体、bは対象者を意味します。基本的には『b.hpRate()』以外を使う必要はありません。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineIfHp:[条件式]>

     実際には以下のようになります。
    <RoutineIfHp:b.hpRate() <= 0.5>


    MP回復行動の条件(ifMpRecover)

     指定した条件式でMP回復を行います。
     『回復系行動の制御』がONの時のみ有効です。
     初期値の『b.mpRate() < 1.0』は、誰かのMPが100%未満になった時を意味します。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineIfMp:[条件式]>

    MP吸収の制御(controlMpDrain) ver1.07

     ONならばMP吸収/ダメージスキルの制御を行います。
     MPが0の相手に対してスキルを使用しなくなります。
     ※項目名は吸収になっていますが、MPダメージにも対応しています。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineMpDrain:[true or false]>

    蘇生系行動の制御(controlForDead)

     ONならば戦闘不能者を対象にしたスキルの制御を行います。
     行動の優先度を高めに設定しておけば、戦闘不能者が出るなり即座に蘇生を行う厄介な敵も作れます。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineForDead:[true or false]>

    パラメータ(使用効果関連)


    対エネミーの使用効果制御(controlEnemyEffect)

     ONならば仲間(エネミー)サイドに対する使用効果系スキルの制御を行います。
     例えば、支援系ステートの無意味な重ねがけをせず、かかっていない対象を選ぶようになります。

     ※タイプが『なし』のスキルが対象となります。タイプが『HP回復』などの使用効果にステートを設定しても、制御を行いませんので注意してください。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineEnemyEffect:[true or false]>

    対アクターの使用効果制御(controlActorEffect)

     ONならば相手(アクター)サイドに対する使用効果系スキルの制御を行います。

     例えば、異常系ステートの無意味な重ねがけをせず、かかっていない対象を選ぶようになります。
     つまり、一人ずつ着実に異常スキルをしかけてきます。行動異常の場合、必然的にハメ殺しが発生しやすくなります。取り扱いには若干の注意が必要です。

     ※タイプが『なし』のスキルが対象となります。タイプが『HPダメージ』などの使用効果にステートを設定しても、制御を行いませんので注意してください。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineActorEffect:[true or false]>

    ステート耐性を見るか(watchResist)

     ONならば対象の耐性を確認し、無効なステートを使用しなくなります。

     ちなみにツクールMVの仕様では、命中タイプが『必中』だと、有効度が0%の相手にまでステートがかかります。
     必中スキルを無効化したい場合は、ステート無効化を設定する必要があります。

     個別設定時は以下をメモ欄に記入してください。
    <RoutineWatchResist:[true or false]>


    身代わりを改善(improveSubstitute)

     ONならば一人しかいない状態で身代わりステート付きのスキルを使用しません。

     >RPGツクールMZ&MV目次に戻る
  • posted by 砂川赳 at 14:21 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする

    アクターの装備を自由に変更【RPGツクールMZプラグイン】

    2025年01月20日

     アクターの装備を自由に変更します。


     通常のイベントコマンドの『装備の変更』は、アクター自身および初期職業が可能な装備しか選択できません。
     つまり、途中でアクターが転職した場合や、何らかのプラグインによって装備が拡張された場合は、有効な装備が選択できなくなってしまいます。
     ※例えば、多重職業プラグインアイテム装備プラグインがそれに該当します。

     このプラグインを使えば、それらの制約を受けずに装備を変更できます。
     また、スロット変更プラグインなどでスロットの並びが標準から変更されている場合、適切に装備できなくなる問題がありますが、そちらにも対応が可能です。

     ※なお、ツクールMVには対応していません。必要な場合は以下のスクリプトを参考にしてください。

    ツクールMVのスクリプトで装備の変更を行う方法(村人A様)

     http://rpgmaker-script-wiki.xyz/equip_mv.php

    目次


    導入方法(Install)

    更新履歴(History)

    MZ用プラグインコマンド(PluginCommandMZ)

    注意点(Notice)


    導入方法(Install)


     以下のファイルをダウンロードし 、[プロジェクト]\js\plugins に放り込みます。ツクールのプラグイン管理から機能をONにしてください。
     ※このプラグインはMZでのみ有効です。

     NRP_ChangeEquipment.js ver1.03(2025/01/20)

    更新履歴(History)


    2025/01/20(ver1.03)


    2022/07/09 -> 2022/07/11(ver1.02 -> 1.021)

    • スロット変更プラグインに対応。装備タイプを自動で取得するようにした。
    • スロットが存在しない場合もエラーにならないよう修正。
      (2022/07/11 ver1.021)

    2022/07/07(ver1.01)


    2022/06/25(ver1.00)

    • 公開!

    MZ用プラグインコマンド(PluginCommandMZ)


    装備の変更(自動)

     アクターの装備を変更します。
     武器/防具/アイテムは一つだけ指定すればOKです。

     装備するスロットはアイテム情報から自動的に取得します。
     二刀流など同一の装備タイプが複数存在する場合は、順序番号で装備箇所を選択できます。

     いずれの項目もテキストモードに変更すれば、数式可です。
     例:『$gameVariables.value(1)』で変数1の値。

    装備を外す

     アクターの装備を外します。
     装備タイプ、順序番号が未指定なら全ての装備を外します。
     ※装備タイプはデータベースの登録値に対応します。
     (デフォルト:1:武器, 2:盾, 3:頭, 4:身体, 5:装飾品)

    装備の変更(旧)

     こちらは装備タイプの指定が必須です。
     ※装備タイプはデータベースの登録値に対応します。
     (デフォルト:1:武器, 2:盾, 3:頭, 4:身体, 5:装飾品)

     外部プラグインで装備スロットが変更されていた場合、うまく装備変更できない問題があるため推奨しません。

    注意点(Notice)


     通常の装備の変更と同じく、所有していないものは装備できません。
     必要なら先に武器、防具の増減を忘れないようにしてください。

     また、現在装備できないものを無理やり装備することはできません。

     >RPGツクールMZ&MV目次に戻る
    posted by 砂川赳 at 11:13 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする