こんばんは。
私も似たような仕様を模索していた時期があり、
そのままズバリのプラグインは見つかりませんでしたが
以下のプラグインを活用することで実現まで漕ぎつくことができました。
・必要プラグイン
YEP_BattleEngineCore
YEP_X_ActSeqPack1~2
YEP_AutoPassiveStates
http://www.yanfly.moe/wiki/Category:RPG ... MV_Plugins
HzExState
https://hiz-tkool.tumblr.com/post/14439 ... zexstatejs
YEP系のプラグインは少し前に有料化されているようですが
この3つについては2021年2月現在のところではフリープラグインのようです。
・設定方法
1.2つのステートを設定する。
1つ目のステート:対応する防具を装備していることを判定するステート(仮にステートID100・盾装備 とします。)
こちらのステートには特徴には何も設定しませんが、そのままですと宿屋などで全回復の処理を行ったときに解除されてしまうと思いますのでメモ欄に<hzExState_remain>を入力し、解除されないようにします。
2つ目のステート:攻撃を完全にガードするステート(仮にステートID101・ガード発動 とします)
特徴欄には「物理ダメージ率」「魔法ダメージ率」をゼロに設定(或いは属性有効度をゼロにする等)するなどしてダメージを受けないステートにします。
2.ステートID100を付与する防具を作成する。
対応する防具のメモ欄に<Passive State: 100>を入力し、ステートを付与します。
3.YEP_X_ActSeqPack1~2を活用して
「攻撃を受けた時、ステートID100が付与されている場合に5%の確率でステートID101が発動し、ダメージを受ける(ただしステート効果によって結果としてダメージを受けない)」
処理をスキルのメモ欄に組み込む。
《例》
<target action>
if target.isRestricted()
else
if target.isStateAffected(100) && Math.random() > 0.05
add State 101: target
end
end
action effect
remove State 101: target //※半角スペース入れ忘れのため追加入力
</target action>
内容としては
「行動不能でなく、ステートID100が付与されており、かつ5%の確率で
ステートID101がターゲット(ダメージを受ける側)に付与され、攻撃を受ける。
その後ステートID101が解除される」という流れになります。
※target.isRestricted()を組み込むのは
「行動不能時に盾などでガードできる状況は不自然」と思ったので加えてみました。
(これがないと行動不能時にもガードが発動してしまう)
また、行動後にステートID101を解除させないと次の攻撃もステートの影響を受ける(ガードしてしまう)ことになります。
このやり方ですと
「ガードを発動させたい全ての攻撃に処理を組み込む必要がある(入力が大変)」
「必中タイプのガード方法は別途考える必要がある(物理・魔法はダメージ率で調整できるが必中タイプは特徴で防ぐことができない。別に方法が無いわけではないですが)」
「<whole action>の時に挙動が若干おかしかったりする(ステートが付与されていないキャラクターがガードを発動させてしまう場合があるようです。私は全体攻撃のアニメーションは<whole action>で処理を行い、ガード及びダメージ判定は<target action>で処理を行わせることで解決を図ってみました)」
など、課題はあると思いますが、他のプラグインなどを掛け合わせることで
このような「敵の攻撃に対し盾ごとに設定されたガード発動率、ダメージ割合で攻撃を防ぎ、(盾で攻撃を防ぐ)アニメーション表示を行う」こともできたりします。
YEP系は競合も多いようで使うことができるかどうかわかりませんが
良ければご参考までにどうぞ。