【解決済】5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

アバター
TEN
記事: 197
登録日時: 2018年9月04日(火) 14:48
お住まい: TEN_GAME
連絡を取る:

【解決済】5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by TEN » 2021年2月08日(月) 21:45

お世話になっております。

早速ですが質問があります。
下記の防具の作り方を教えていただきたいです。

◆〇%の確率で攻撃を完全にガードする防具
(例)5%の確率で攻撃を完全にガードする盾

調べたのですが、あまり検索にヒットせず困っております。
防具欄の特徴を見てもそのような効果はなく、プラグインだとあるのかと思い探しましたが見当たりませんでした(自分の探し不足だったら申し訳ありません)。

どなたか知恵を貸していただけないでしょうか?
毎度申し訳ありませんが、よろしくお願いいたします。

【追記】2021.02.13
助言いただき、とても丁寧にご対応いただいた ころあ様 本当にありがとうございました。
おかげで制作が進みます。
感謝いたします。
最後に編集したユーザー TEN on 2021年2月13日(土) 00:45 [ 編集 2 回目 ]

===============================
公開ゲーム/小説ブログ
『 TEN_GAME / https://ten-game.hatenablog.com/
制作初心者が作ったゲームですので暖かい目で見てください( ̄▽ ̄;)
                        ◇◆――――
                          TEN
―――――――――――――――――――――――――――――――――――――――◆◇
ころあ
記事: 51
登録日時: 2017年8月16日(水) 08:55

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by ころあ » 2021年2月11日(木) 21:24

こんばんは。

私も似たような仕様を模索していた時期があり、
そのままズバリのプラグインは見つかりませんでしたが
以下のプラグインを活用することで実現まで漕ぎつくことができました。

・必要プラグイン

YEP_BattleEngineCore
YEP_X_ActSeqPack1~2
YEP_AutoPassiveStates
http://www.yanfly.moe/wiki/Category:RPG_Maker_MV_Plugins

HzExState
https://hiz-tkool.tumblr.com/post/144395027735/hzexstatejs

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>で処理を行わせることで解決を図ってみました)」

など、課題はあると思いますが、他のプラグインなどを掛け合わせることで
guard.jpg

このような「敵の攻撃に対し盾ごとに設定されたガード発動率、ダメージ割合で攻撃を防ぎ、(盾で攻撃を防ぐ)アニメーション表示を行う」こともできたりします。

YEP系は競合も多いようで使うことができるかどうかわかりませんが
良ければご参考までにどうぞ。
最後に編集したユーザー ころあ on 2021年2月12日(金) 00:18 [ 編集 1 回目 ]
アバター
TEN
記事: 197
登録日時: 2018年9月04日(火) 14:48
お住まい: TEN_GAME
連絡を取る:

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by TEN » 2021年2月11日(木) 23:31

ころあ 様

とても詳しく教えてくださりありがとうございます。

しかし少しわからない箇所があります。
書いてくれた通りにスキルのメモ欄に

<target action>
if target.isRestricted()
else
if target.isStateAffected(37) && Math.random() > 1.00
add State 38: target
end
end

action effect

remove State 38:target
</target action>

※ステートID37:盾装備判定ステート
※ステートID38:ガードステート
※試すために100%ガードするようにしました。

そして、盾装備ステートには <hzExState_remain> とメモ欄に記述しています。

そして上記のメモ欄に記述してあるスキルを、モンスターに使用させてテストプレイしてみたら以下のようなエラーが出てしまいました。
error.png


これは何か間違った記述をしてしまったのでしょうか?

厚かましいですが、どこが間違っていたのか教えていただければ助かります。

ちなみに、教えていただいたプラグイン
YEP_BattleEngineCore
YEP_AutoPassiveStates
YEP_X_ActSeqPack1
YEP_X_ActSeqPack2
HzExState
以外は全てOFFにしてあります。
順番も上記の通りです。
===============================
公開ゲーム/小説ブログ
『 TEN_GAME / https://ten-game.hatenablog.com/
制作初心者が作ったゲームですので暖かい目で見てください( ̄▽ ̄;)
                        ◇◆――――
                          TEN
―――――――――――――――――――――――――――――――――――――――◆◇
ころあ
記事: 51
登録日時: 2017年8月16日(水) 08:55

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by ころあ » 2021年2月12日(金) 00:17

すみません、先にお伝えした<target action>部分ですが、
最後の「remove State (ステートID番号):target」部分について、半角スペースを差し込み漏れていました。
「remove State 38: target」(「:」と「target」の間に半角スペースを入力)と入力しないとエラーになります。

なお、余談ですが「100%ガードが発動するかを試したい場合」は
Math.random() > 1.00 ではなく
Math.random() < 1.00 になると思います。
( Math.random()関数は、 0 以上 1 未満 の乱数を返すので)
アバター
TEN
記事: 197
登録日時: 2018年9月04日(火) 14:48
お住まい: TEN_GAME
連絡を取る:

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by TEN » 2021年2月12日(金) 00:35

ころあ 様

試してみたところ、エラーは起こりませんでした。
ありがとうございます。

しかし、普通にダメージが通ってしまいます。
調べてみたら、装備に設定した盾装備判定ステートはきちんとかかっていました。
敵が攻撃した時に『確率ガード』のステートが発動していないようでした。
敵側が使用するスキルには、先程助言をいただいた通り直して記述してあります。

<target action>
if target.isRestricted()
else
if target.isStateAffected(37) && Math.random() < 1.00
add State 38: target
end
end

action effect

remove State 38: target
</target action>

何が悪いのかさっぱりわかりません……。
再びご教授ただければ助かります。
===============================
公開ゲーム/小説ブログ
『 TEN_GAME / https://ten-game.hatenablog.com/
制作初心者が作ったゲームですので暖かい目で見てください( ̄▽ ̄;)
                        ◇◆――――
                          TEN
―――――――――――――――――――――――――――――――――――――――◆◇
ころあ
記事: 51
登録日時: 2017年8月16日(水) 08:55

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by ころあ » 2021年2月12日(金) 07:12

TEN さんが書きました:しかし、普通にダメージが通ってしまいます。
調べてみたら、装備に設定した盾装備判定ステートはきちんとかかっていました。
敵が攻撃した時に『確率ガード』のステートが発動していないようでした。
敵側が使用するスキルには、先程助言をいただいた通り直して記述してあります。

<target action>
if target.isRestricted()
else
if target.isStateAffected(37) && Math.random() < 1.00
add State 38: target
end
end

action effect

remove State 38: target
</target action>




ステートID38の特徴に物理ダメージ率を0パーセントで追加するなど、ダメージを軽減又は無効化する設定を行ってますでしょうか?
このやり方はダメージを与える直前に「ステートを付与し、ダメージを与えた後に解除する」動作だけですので該当のステートに付与したい効果(ダメージ無効化やステート有効度を0パーセントにするなど)を設定する必要があります。

また、ステートID38がきちんと発動しているか否かについてはステートID38にステートアイコンを設定すればダメージを受ける際、瞬間的にステートアイコンが表示されるはずです。(waitを設定すれば視認しやすいと思います。)

既にこれらを設定されていたら恐縮ですが一度設定をご確認下さいませ。
アバター
TEN
記事: 197
登録日時: 2018年9月04日(火) 14:48
お住まい: TEN_GAME
連絡を取る:

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by TEN » 2021年2月12日(金) 11:36

ころあ 様

ステートアイコンを設定して確かめているのですが、ダメージを受けた瞬間チラッともアイコンが表示されません(ちなみにステートの方には物理ダメージ0%を入れています)。
盾装備ステートのアイコンは表示されているので、ガードステートがかかっていないようでした。
これは、ステートではなくスキルに問題があるということでしょうか?

ダメージを食らって普通にダメージが通りHPが減ります(ステートアイコンは表示されず)。
===============================
公開ゲーム/小説ブログ
『 TEN_GAME / https://ten-game.hatenablog.com/
制作初心者が作ったゲームですので暖かい目で見てください( ̄▽ ̄;)
                        ◇◆――――
                          TEN
―――――――――――――――――――――――――――――――――――――――◆◇
ころあ
記事: 51
登録日時: 2017年8月16日(水) 08:55

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by ころあ » 2021年2月12日(金) 21:17

TEN さんが書きました:ころあ 様

ステートアイコンを設定して確かめているのですが、ダメージを受けた瞬間チラッともアイコンが表示されません(ちなみにステートの方には物理ダメージ0%を入れています)。
盾装備ステートのアイコンは表示されているので、ガードステートがかかっていないようでした。
これは、ステートではなくスキルに問題があるということでしょうか?

ダメージを食らって普通にダメージが通りHPが減ります(ステートアイコンは表示されず)。


ご連絡の件、こちらでも新規プロジェクトで作成し、先のやり取りで記載されていました

<target action>
if target.isRestricted()
else
if target.isStateAffected(37) && Math.random() < 1.00
add State 38: target
end
end

action effect

remove State 38: target
</target action>

この部分をコピー&ペーストでスキルの特徴欄に入力してテストプレイをしてみましたが
問題なく動作しました。(ステートID部分は新規プロジェクトから追加したID11・12でテストプレイをしました)

2021-02-12 (2).jpg


こちらは remove State 38: target の前の行に wait: 60 を差し込んで撮影したスクリーンショットですが
盾のステートアイコン・・・盾装備判定ステート(TENさんのステートではステートID37)
ハートのステートアイコン・・・ダメージを受ける直前に発動するガードステート(TENさんのステートではステートID38)
というように発動している状況が確認できますので何か他に原因があるのかもしれません。

プラグインやスクリプトに詳しいわけではないですので
プラグイン間の競合の可能性やMVのバージョン、コアスクリプトやプラグイン自体が最新であるかなど、
これらの関係についてはあまり深く言及できないですが
もしかすると私の伝え方が拙いせいでうまく設定できていない部分があるかもしれません。
参考までに私が設定した画面のスクリーンショットを載せてみますので
比較してみてくださいませ。
※スクリーンショットでは<hzExState_remain> をステートID11に記入するのを忘れていますが、
 記入していても発動することを確認しました。
添付ファイル
設定画面2.jpg
設定画面1.jpg
アバター
TEN
記事: 197
登録日時: 2018年9月04日(火) 14:48
お住まい: TEN_GAME
連絡を取る:

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by TEN » 2021年2月13日(土) 00:10

ころあ 様

結果から言いますと、きちんと動作いたしました!

いただいたスクショを元に確認しても同じだったので、どこも変更せずにやったのですが……
しいて言うなら再び、ころあ様がコピペしたという文字列を私もコピペして再度張り付けてみました。
それで動作したということは、どこかが抜けていたりおかしな部分があったのでしょうか?
また、wait: 60を挟むことにより、ステートアイコンを目視で確認できました。
ダメージも受けずに望んでいたことができました。

お手間を取らせてしまい申し訳ございません。
ころあ様、長々とお付き合いいただき、本当にありがとうございました。
===============================
公開ゲーム/小説ブログ
『 TEN_GAME / https://ten-game.hatenablog.com/
制作初心者が作ったゲームですので暖かい目で見てください( ̄▽ ̄;)
                        ◇◆――――
                          TEN
―――――――――――――――――――――――――――――――――――――――◆◇
ころあ
記事: 51
登録日時: 2017年8月16日(水) 08:55

Re: 5%の確率で攻撃を完全にガードする防具の作り方を教えていただきたい

投稿記事by ころあ » 2021年2月13日(土) 00:21

無事に動作したようでなによりです。

YEP系のプラグインは厳格な入力を求めるようでして、全角スペースであったり、先のエラーのように半角スペースを入れる場所が異なるだけでもNGだったりしますので細かいところで違いがあったのかもしれませんね。

私もまだまだ慣れていないのでお互い制作を頑張っていきましょう。

“MV:質問” へ戻る