[プラグイン]スキルに反応して反撃/連鎖で更にスキルを発動

剣崎宗二

ユーザー
大元はメルサイア様の質問に応じて、昔に作った物を改造したプラグインとなります。

スキルのメモ欄にタグをつける、或いはステートのメモ欄にタグをつける事で、他者の自分をターゲットに入れた攻撃にスキルで反撃したり、連鎖して別のスキルが自動で発動したりできます。
詳しくはプラグイン内のタグ説明をご覧ください。

(2017/8/18:開発版で目立ったバグ報告がなかったため、安定版に併合いたしました。以降は安定版のみをお使いください)

安定版
https://github.com/kenzakis2/RMP_kenzaki/blob/master/ChainSkill/LinkActionSkills.js


実装検討中の要素
・インタラプトカウンター
(自分以外をターゲットした攻撃にも反応する)

他機能追加リクエストなども募集中です。よろしくお願いいたしますー
 
最後に編集:

剣崎宗二

ユーザー
使用例:

一定確率で自分に反動が来る強力な攻撃
技1(範囲敵単体、強力なHPダメージ)
技2(範囲使用者自身、HPダメージ)
を用意する。
技1のメモ欄に
<linkskill:50,[技2のID]>
を追加。
これで、技1を使用した後に、50%の確率で技2が発動し、自身への反動を演出できます。


炎属性の攻撃を受けた際に一定確率で解凍される氷結ステート

氷結ステート(行動不能3T持続)
技1(範囲使用者自身、効果氷結ステートを解除)

を用意する。
氷結ステートのメモ欄に
<elementcounter:[炎属性のID],30,[技1のID]>
<counteronhit>
<counter_ignorebind>
を記入。
これで炎属性の攻撃が当たった際に、30%の確率で技1が発動して氷結ステートが解除されるようになります。

他にもいろいろ面白い技やステートが作れそうなのでまた思いついたら追記します。
 
>剣崎宗二さん
機能の大幅追加、ありがとうございます。大変助かります。
挙げられている効果も、面白いアイディアですね! 夢広がります。

https://forum.tkool.jp/index.php?threads/楽しい戦闘を盛り上げるスキルコンボの実現について.286/ のスレッドでもいいのですが、プラグインの要望や使い方に関しては、こちらのスレッドのほうがいいと思いましたので、こちらに返信します。
開発中β版
https://github.com/kenzakis2/RMP_kenzaki/blob/develop/ChainSkill/LinkActionSkills.js
・相手の行動をキャンセルしてこちらが行動する「クラッシュカウンター」実装。
・自分の設定したスキルに確率で連鎖できるように。
・発動時メッセージが出るように。
こちらの新機能を「物理攻撃を弾くステート(ガードインパクト)」を作って試しているのですが、
以下の症状が出て、困っています。
・「クラッシュカウンター」でキャンセルした場合、元の行動のメッセージやエフェクトや出ない(仕様かもしれません…)
・確率で連鎖は問題なし(確率が高いものでしか試してないので、もうちょい50%とかで何度か試してみます)
・発動時メッセージをプラグインのパラメータで変更できない(スキル名やキャラ名が長かったりすると、切れてしまう…)

出来ましたら、以下の要望を受け付けていただけると嬉しいです。
・「クラッシュカウンター」でも元の行動のメッセージ「【攻撃者】のスキル名!」やスキルエフェクトが出てほしい
 (ツクールデフォルトの反撃のような演出がしたい)
 → 割り込み演出もこれはこれで見事で、需要があるかもなので、
   クラッシュカウンターの仕様を変更せず、別の形(タグ名:counter_tkool?)で作ったほうがいいのかもしれません。
・発動時メッセージをプラグインのパラメータで変更したい、もしくは非表示にしたい
 (主に文章が切れてしまうのは、「【反撃者】が【攻撃者】の【スキル名】を割り込み!」の部分です。
  他にもメッセージが出る時がある気がするのですが、ちょっとわからないので、もう少しテストしてみます)
58c58e092904306f3bd3266047d528a1.png
参考までに、クラッシュカウンターを実装したステートの設定画面や動画です(敵キャラクターがこのステートです)。
ステート(弾きの構え)の設定画面です。
https://gyazo.com/77ba135ce2b3a35ef6f9fac108ad0852

(追記)なお、開発中β版で、確率でスキル連鎖発動も、試してみました。
確率発動は問題なく動いてました。
ただ、スキルに複数のタグをつけると、一番最後に設定したスキルしか連鎖しないようです
(これも仕様だと思いますが…欲を言えば、複数分岐させたいかな…と)。
参考までに、通常攻撃スキルにつけたタグの画像を載せておきます(この場合だと、40%でためる、しか発動しません)。
https://gyazo.com/1052fa0339b7ff5b338730cfc17536fe
こちらの場合も、「連鎖発動!」というメッセージが表示されるので、非表示オプションを付けていただけるとありがたいです。

たくさん要望を出して申し訳ないですが、お手すきの時で結構ですので、ご確認お願いします。
 
最後に編集:

剣崎宗二

ユーザー
>メルサイア様
テストへのご協力、ありがとうございます!
各要望への返答を以下にさせていただきます。


>「クラッシュカウンター」でキャンセルした場合、元の行動のメッセージやエフェクトや出ない(仕様かもしれません…)
→「クラッシュカウンター」でも元の行動のメッセージ「【攻撃者】のスキル名!」やスキルエフェクトが出てほしい

こちら現状仕様となります。と言うのも、ツクールのカウンターは相手の行動中に特例行動を差し込むような形なので、事前に予約テーブルを作り順に実行する私の形式とは相性が悪いのです…逆にこちらの方法でやろうとすると、メッセージが出た時点では既に発動が確定しており、不可能と言う…

ただ現状でも面倒にはなる物の、タグの設置方法次第では(一応)可能です。
先ず、反撃される可能性のある技を2つに分けます。
・前半技は効果、属性を「なし」とし、スキルの発動メッセージやエフェクトを盛り込む。
・後半技パートに効果に実際の技効果、属性を盛り込み、メッセージやエフェクトを設置しない
・前半技から後半技に100%でリンクするようにする
こうすれば、前半技が使われる(エフェクトメッセージ表示)→反撃された場合、後半技がキャンセルされる(ダメージなし、反撃技発動)となり、疑似的にそちらのお望みの処理ができるかと思います。

ただまぁ、全ての技にこれをやるのは非効率的なので、いつかは普通にできないか考えてみます…


>発動時メッセージをプラグインのパラメータで変更できない(スキル名やキャラ名が長かったりすると、切れてしまう…)
→発動時メッセージをプラグインのパラメータで変更したい、もしくは非表示にしたい
→こちらの場合も、「連鎖発動!」というメッセージが表示されるので、非表示オプションを付けていただけるとありがたいです。

こちら元々実装しようとして私の体力が尽きただけなので、次のバージョンで実装します。


>スキルに複数のタグをつけると、一番最後に設定したスキルしか連鎖しないようです
こちら、複数タグの装着ではなく、連鎖にもクラッシュカウンターが適用できるという事を利用して疑似的に再現可能です。
明日あたりに「パルプンテ」(ランダムで設定した技の中から1つを発動する)のタグレシピを掲示してみます。しばしお待ちください。
 

剣崎宗二

ユーザー
使用例追加です。

ランダムで何かの技を発動(いわゆるパルプ〇テ) ※要・開発版

以下の技を用意する。(技1を使った際、ランダムで2(ヒール)、3、(全体攻撃)、4(自身ダメージ)のどれかが発動する、と言う効果を作りたい場合です)

技1:「パルプンテを詠唱している状態」を表現する技。効果なし、エフェクトやメッセージはあり。
→タグ:<linkskill:100,[技2のID]>

技2:効果にヒールを設定。
→タグ:<linkskill:60,[技2のID]><counter_crash>

技3:効果に全体攻撃を設定。
→タグ:<linkskill:33,[技2のID]><counter_crash>

技4:効果に自身ダメージを設定。
→タグ:なし

これで、以下のように動きます。

技1が起動した際に技2が自動で連鎖


技2が起動した際:
・40%の確率で連鎖失敗(技2が発動して自身をヒール)。ここで連鎖終了
・60%の確率で連鎖成功し技3起動。同時にCounter_Crashタグの効果で技2がキャンセルされ発動しません。

技3が起動した際
・66%の確率で連鎖失敗(技3が発動して全体攻撃)。ここで連鎖終了
・34%の確率で連鎖成功し技4起動。同時にCounter_Crashタグの効果で技3がキャンセルされ発動しません。

技4が発動。

総合すると、40%の確率で技2が発動、60% * 66% = 39.6% の確率で技3が発動、60% * 34% = 20.4%の確率で技4が発動する事となります。

自分の望む確率を出すには少し計算が必要となりますが、ぜひ一度お試しください。
 
>剣崎宗二さん
開発版の更新ありがとうございます!
なるほど、クラッシュカウンターは、自分自身の技を割り込むという、偉業も成し遂げられるのですね。
一人ひらめき技(何回か使ってると、一定確率ですごい技に変化して、新しい技を覚える)とか、進化技とか作れそうです!
使用例追加です。
技2:効果にヒールを設定。
→タグ:<linkskill:60,[技2のID]><counter_crash>

技3:効果に全体攻撃を設定。
→タグ:<linkskill:33,[技2のID]><counter_crash>
この部分、
技2:効果にヒールを設定。
→タグ:<linkskill:60,[技3のID]><counter_crash>

技3:効果に全体攻撃を設定。
→タグ:<linkskill:33,[技4のID]><counter_crash>

で合っていますでしょうか。後の説明で補足されていますし、おそらく単なるコピペミスだと思うのですが、念のため確認です。

なお、ツクールデフォルトのカウンターの仕様は、トリアコンタンさんの反撃拡張プラグイン(ver1.3.3まで)で実装されていて
そちらと併用が可能なので、無理に実装されなくていいと思います。

(追記)開発版の新しいもの、試してみました。メッセージの場合分けがとても美しいですね!
ただ、プラグインのパラメータkzktxt_ECounterなどの各種メッセージを""(空白)にしても、
一行の空白が表示されてしまうみたいです。
できましたら、各種メッセージを""にした場合は、メッセージ自体をpushされないようにしていただけると幸いです。

これで夢の楽しいスキルひらめき&確率連鎖コンボに一歩近づきました! 
剣崎さんには、重ねてお礼申し上げます。
 
最後に編集:

剣崎宗二

ユーザー
インターセプトカウンターの実装やら条件拡張を思案中なのでもう少しお待ちを…


>メルサイア様

この部分、
技2:効果にヒールを設定。
→タグ:<linkskill:60,[技3のID]><counter_crash>

技3:効果に全体攻撃を設定。
→タグ:<linkskill:33,[技4のID]><counter_crash>

で合っていますでしょうか。後の説明で補足されていますし、おそらく単なるコピペミスだと思うのですが、念のため確認です。
仰る通りで間違いありません。私のコピペミスです…すみません。

ただ、プラグインのパラメータkzktxt_ECounterなどの各種メッセージを""(空白)にしても、
一行の空白が表示されてしまうみたいです。
できましたら、各種メッセージを""にした場合は、メッセージ自体をpushされないようにしていただけると幸いです。
次のアップデートにてその様に仕様変更させていただきます。
 
>剣崎さん
いつも利用させていただいています。
ありがとうございます。
「メッセージが空白な場合」に戦闘一行メッセージが改行されてしまう件、空白の改行がなくなったことを確認しました。
動作確認済みです。

ご存知かもしれませんが、スキル発動後にランダムで遷移するやり方は、サスケさんが https://forum.tkool.jp/index.php?threads/プラグイン-「戦闘行動の強制」の際、残りの行動をリセットしない.306/ を作ってくれたおかげで、
スキルのコモンイベントを呼び出して、その中で乱数を使って分岐することで実現できるようになりました。
コモンイベント中にスキル使用者などを取得する処理が必要になりますが、私はこれを以前自分でツクっていたので、問題なく動いています。
ですので、タグでのパルプンテの件は無理なさらず、ご自身の作りたいものを作っていただけると幸いです。
 
安全版をダウンロードして使おうとしたらプラグインのヘルプ部分が何も書かれていませんでした。
どうやら右クリックによるリンク先保存が原因でした。
 
最後に編集:

karamiso

ユーザー
お世話になります。
反撃部分を試用させていただいたのですが気になる点があり書き込みさせていただきました。

属性ID:01(物理)に反応して攻撃スキルID:0001を返すようなステート「反撃」を作成し、
この「反撃」ステートを付与するスキル「反撃準備」を作成しバトル中に使用しました。

「反撃準備」スキルを使用して「反撃」ステートが付与されたタイミングでカウンターが発動してしまいます。

「反撃準備」スキルに別属性のダメージを設定すると発動しなくなったため
どうやらステートを付与するスキル自身(「反撃準備」スキル)に反応してしまっているのではないかと考えました。

ご確認いただけますと幸いです。
もしそうであれば、回避策をご教示いただけますと助かります。
 

剣崎宗二

ユーザー
お世話になります。
反撃部分を試用させていただいたのですが気になる点があり書き込みさせていただきました。

属性ID:01(物理)に反応して攻撃スキルID:0001を返すようなステート「反撃」を作成し、
この「反撃」ステートを付与するスキル「反撃準備」を作成しバトル中に使用しました。

「反撃準備」スキルを使用して「反撃」ステートが付与されたタイミングでカウンターが発動してしまいます。

「反撃準備」スキルに別属性のダメージを設定すると発動しなくなったため
どうやらステートを付与するスキル自身(「反撃準備」スキル)に反応してしまっているのではないかと考えました。

ご確認いただけますと幸いです。
もしそうであれば、回避策をご教示いただけますと助かります。
こちら残念ながら仕様となります。
通常反撃(=クラッシュカウンター不使用)の場合、反撃可否の確認タイミングは「行動終了後」であり、その時点では反撃の要件となる「タグのあるステート付与」「前行動で該当属性の攻撃を受けた」の両面を満たしている為に、反撃が発生しています。

回避策と致しましては、
仰る通り「「反撃準備」スキルに別属性のダメージを設定する」となります。
(尚、ダメージタイプを「なし」にしても、内部的には属性は反映されているため、ダメージタイプなしのスキルを設定する際は、あらかじめダメージタイプありの状態で属性を変更し、その後ダメージタイプを変えるという方法で対処してください)
 

karamiso

ユーザー
早速のお返事ありがとうございます。
承知しました。

別属性を設定することで回避できました。回答いただきありがとうございました。
 

karamiso

ユーザー
すみません、今度は連鎖の場合でご教示ください。
基本的な部分で躓いているので、私の設定ミスが原因だと思いますが。。

プラグインはLinkActionSkill.jsのみをONにし、それ以外のすべてのプラグインをOFFにしています。
スキル3のメモに<linkskill:100,0001>と記載し戦闘中に使用したところ
スキル3発動後、スキル1が発動する前にエラー落ちしました。

<Consoleのログ>
rpg_managers.js:1949 TypeError: Cannot read property 'scope' of null
at Game_Action.checkItemScope (rpg_objects.js:1302)
at Game_Action.needsSelection (rpg_objects.js:1334)
at Function.BattleManager.generateLinkedAction (LinkActionSkill.js:336)
at Function.BattleManager.endAction (LinkActionSkill.js:256)
at Function.BattleManager.updateAction (rpg_managers.js:2524)
at Function.BattleManager.updateAction (LinkActionSkill.js:215)
at Function.BattleManager.update (rpg_managers.js:2253)
at Scene_Battle.updateBattleProcess (rpg_scenes.js:2265)
at Scene_Battle.update (rpg_scenes.js:2257)
at Function.SceneManager.updateScene (rpg_managers.js:2024)


どのようにしたら正常に稼働するかヒントをいただけないでしょうか。
宜しくお願いいたしますm(_ _)m
 

剣崎宗二

ユーザー
0001ではなく1にしても同じ問題が起きますでしょうか。
0001だと10進数以外の形式として扱われる可能性が御座います。
 

karamiso

ユーザー
なるほど、そういうことでしたか…
整数値で記述したら正常に稼働しました。回答ありがとうございました。

ちなみに、下記現象が確認できたのでご報告させていただきます。

・Link先のスキルや反撃時の発動スキルに消費MPが設定されており、
 残りMPがそれ以下の時に発動(Linkか反撃)するとMPがマイナスになる
・MPがマイナスになると、攻撃や防御など消費MP0のアクションも選択できない
・HP回復などSTATUS表示が変わる行為を伴うとMP0になって正常化する
・しかしMP0でもまたLink・反撃は発動し、またMPマイナスになる
 

剣崎宗二

ユーザー
ご報告ありがとうございます。
こちら、リンク技が「基本的には」MPを消費しないという前提で作られているための仕様となります。
(イベント発動でMPが足りなくて演出ェ…となるのを防ぐためでもあります)

防ぎたい場合は、<linkcondition:a.canUse($dataSkills[3])>
と言った形で、スキルID3が使用可能(MP等を含め)の場合のみ連鎖、ということが可能だと考えます。
 

karamiso

ユーザー
回答ありがとうございます。
ガイドいただいた通り、<linkcondition:~~>で確かに回避できました。
感謝申し上げます。
 

karamiso

ユーザー
お世話になります。
初撃で対象が倒れた場合、リンク先のスキルが別の対象に矛先を変えます。(最後のエネミーを初撃の対象にしてた場合はリンク先スキルが対象を喪失してエラー落ちします)

これを防ぐために、初撃で対象が倒れた場合にはリンク先スキルが発動しないようにしたいのですが、<linkcondition:~~>をどのように記載すればよいでしょうか?
 
トップ