【解決済み】反撃率をステータスによって変動させたい

btk
記事: 4
登録日時: 2018年7月09日(月) 20:03

【解決済み】反撃率をステータスによって変動させたい

投稿記事by btk » 2018年7月09日(月) 20:34

閲覧ありがとうございます。
当方ツクール触り始めて1か月程度の初心者のため、簡単な疑問であったらすみません。。

掲題の通り、反撃率を攻撃側、防御側のステータスによって変動させたい
(もしくは、攻撃側、防御側のステータスによって反撃率が変動するスキルを作りたい)、
と思い、トリアコンタン様、Yanfly様等反撃系プラグインを色々といじってみているのですが、
反撃条件等の指定については上記のプラグインで多様なものが実装できそうなのですが、
反撃率そのものを変動させたい、という当初の目的がうまく達成できずにおります。

イメージとしては、例えば
攻撃側:a.atk 50
防御側:b.atk 100
のとき、100-50=50% を防御側の反撃率にしたい、というものを想定しています。

どなたか上記を実現できるような良いお知恵をお貸しいただけたら幸いです。
最後に編集したユーザー btk on 2018年7月13日(金) 23:21 [ 編集 1 回目 ]

アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 反撃率をステータスによって変動させたい

投稿記事by まっつUP » 2018年7月09日(月) 23:03

btk様

rpg_objects.js中のGame_Action.prototype.itemCntを
直接改変するのが単純でよいと思います。
Game_Actionなので行動主体と対象者の特定も簡単ですので
計算式を直接書き込むことになると思います。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
btk
記事: 4
登録日時: 2018年7月09日(月) 20:03

Re: 反撃率をステータスによって変動させたい

投稿記事by btk » 2018年7月10日(火) 23:51

まっつUP 様

アドバイスいただきありがとうございます。
Game_Action.prototype.itemCntの部分を切り出して色々と試してみているのですが、
何分直接スクリプトをいじった経験がなく、四苦八苦しております。

現状下記の通り切り出し・加筆してプラグイン化してみたのですが、
Game_Action.prototype.itemCnt = function(subject, target) {
if (this.isPhysical() && target.canMove()) {
return target.luk - subject.luk;
} else {
return 0;
}
};

テストプレイ中に攻撃ダメージが表示される手前で停止し、以下のエラーが出てしまいました。
rpg_managers.js:1756 TypeError: Cannot read property 'canMove' of undefined
at Game_Action.itemCnt (jisaku_CounterRateChange.js:2)
at Function.BattleManager.invokeAction (YEP_BattleEngineCore.js:2106)
at Function.<anonymous> (YEP_BattleEngineCore.js:2721)
at Array.forEach (<anonymous>)
at Function.BattleManager.actionActionEffect (YEP_BattleEngineCore.js:2718)
at Function.BattleManager.processActionSequence (YEP_BattleEngineCore.js:2314)
at Function.BattleManager.processActionSequence (YEP_X_ActSeqPack1.js:882)
at Function.BattleManager.processActionSequence (YEP_X_ActSeqPack2.js:602)
at Function.BattleManager.processActionSequence (YEP_X_ActSeqPack3.js:473)
at Function.BattleManager.processActionSequence (YEP_X_BattleSysCTB.js:1314)
SceneManager.catchException @ rpg_managers.js:1756

特に変更していないcanMoveがなぜundefinedとなってしまうのか、、当方では見当がつかず。。
重ねての質問で恐縮なのですが、ご助言いただけないでしょうか?
アバター
剣崎 宗二
記事: 678
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 反撃率をステータスによって変動させたい

投稿記事by 剣崎 宗二 » 2018年7月11日(水) 09:31

btk様

横から失礼します。
この件、canMoveがundefinedになっているのではなく、targetがundefinedになっております。
理由としましては、btk様の方でfunctionのパラメーター群の並びを変更しているからです。
(元は
Game_Action.prototype.itemCnt = function(target) 
となっていた筈です。)

詳しい解説をしようとすると長くなるので知りたい場合は検索していただく形になりますが、この変更がある場合、元々targetに入っていた物が今回subjectに入る事になり、targetには何も入っていない…という事態を招きます。
subjectを取得したいのならば別の方法で行うべきかと。
(一例としてはGame_Action.prototype.itemHitで行われている方法をご参照ください。)
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
アバター
しぐれん
記事: 972
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: 反撃率をステータスによって変動させたい

投稿記事by しぐれん » 2018年7月11日(水) 10:19

subjectの取得、Game_Actionであれば、this.subject()が使えるので、これを使えばいいと思います。
現在、プラグイン依頼はお休み中です。
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: 反撃率をステータスによって変動させたい

投稿記事by ぼた餅 » 2018年7月11日(水) 18:31

こんにちは、btkさん。

横からすみません。
トリアコンタンさん制作の「CounterExtend」を使えば実現可能です。

コード: 全て選択

<CE_反撃条件:this.atk - target.atk &gt; Math.randomInt(100) + 1>

これを全キャラのメモ欄に貼っておけば、「防御側-攻撃側」の攻撃力%の確率で反撃が発動します。
その場合反撃率を100%に設定しておかないとうまく動かないのでご注意ください。

実際に動かしてないのでなにかあればご指摘ください。
btk
記事: 4
登録日時: 2018年7月09日(月) 20:03

Re: 反撃率をステータスによって変動させたい

投稿記事by btk » 2018年7月12日(木) 01:07

剣崎 宗二 様
しぐれん 様

お二方ともご助言いただきありがとうございます。
以下の通り修正してみたところ、エラーも出ず処理が進みました!
Game_Action.prototype.itemCnt = function(target) {
if(this.isPhysical() && target.canMove() ) {
return target.atk - this.subject().atk ;
} else {
return 0;
}
};

何度かテストしてみたところ実際の発動率もステータスに依存した挙動になったかな?と思います。
しかしながら、攻撃側の攻撃力が防御側より高い場合、防御側でなく攻撃側がカウンターで追撃するようになってしまいました。。
やはり上記の記述でもいまいちなのでしょうか…?


ぼた餅 様

ありがとうございます、トリアコンタン様のプラグインで実現可能だったのですね!
まだまだ自分には使いこなせていなかったようです。。

とはいえ、自分の勉強のためにも、直接jsを記述して達成できるまで引き続き試行してみようと思います。
アバター
剣崎 宗二
記事: 678
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 反撃率をステータスによって変動させたい

投稿記事by 剣崎 宗二 » 2018年7月12日(木) 22:44

btk様

当方の方で新規プロジェクトで同じコードを試してみましたが、問題が再現できませんでした(正常に動きました)
その為:

1.他のプラグインを全て一旦切ってみて、問題が続くかお試しいただけますでしょうか。
2.ツクールMV本体のバージョンを教えていただけますでしょうか。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
btk
記事: 4
登録日時: 2018年7月09日(月) 20:03

Re: 反撃率をステータスによって変動させたい

投稿記事by btk » 2018年7月13日(金) 23:17

剣崎 宗二 様

ご返信及びご助力感謝いたします。ありがとうございます。

プラグインをOFFにして影響を特定していくなかで、
Yanfly様のCounterControlでデフォルトカウンターが変更できることに思い至り、
デフォルトカウンターを通常攻撃以外のものに変更してみたところ、
攻撃側が追撃してきているのではなくて、
防御側として反撃の通常攻撃を行った後、攻撃側として通常攻撃を放っていたので、
攻撃が2回連続し、追撃しているように見えていたことが判明いたしました。
私がまだまだ不慣れな点が多く、お騒がせいたしました。

カウンターさせたくないキャラについては、
メモ欄でデフォルトカウンター回数を0にすることで望んでいた挙動が達成できました。

皆様のアドバイスのおかげです、ありがとうございました!

“MV:質問” へ戻る