しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

返信する
nuruten
記事: 23
登録日時: 2018年2月16日(金) 00:10

しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

投稿記事 by nuruten »

お世話になっております。
件名の通り、しぐれん様のプラグインMano_AfterCounter.jsの
チェイン(追撃)システムを使わせていただいているのですが
肝心の追撃のターゲットが、
前提となる攻撃スキルとは別のエネミーへ発動してしまい困っています。

色々と調査した結果
チェイン(追撃)スキルのターゲットに選ばれるのはランダムではなく
前提となる攻撃スキルを発動したキャラと、同じ位置のエネミーへ追撃しているようです。

例えば サイドビューでPTメンバーの4人を上からA,B,C,Dとし、
    敵グループのエネミー5体を配置した順番にA',B',C',D',E'とした時に
    PTメンバー4人の前提となる攻撃スキルを順に、全てエネミーA’へ放ってみたところ、
    PTメンバーAのエネミーA'への攻撃に対する追撃スキルはエネミーA'へ
    PTメンバーBのエネミーA'への攻撃に対する追撃スキルはエネミーB'へ
    PTメンバーCのエネミーA'への攻撃に対する追撃スキルはエネミーC'へ
    PTメンバーDのエネミーA'への攻撃に対する追撃スキルはエネミーD'へ
    といったように配置した順番に追撃スキルが行われています
    また、二週目のPTメンバーAのエネミーA'への攻撃に対する追撃スキルは
    エネミーE’を無視し、エネミーA’へ追撃スキルが行われました

console.rogで色々見たところ

Game_Battler.prototype.acceptForChain =function(func){
const list = this.counterTraitObjects();
for(var i=0; i <list.length;++i){
var obj = list;
if(obj.chain_MA){
for(var j =0;j < obj.chain_MA.length;j+=1){
func(obj.chain_MA[j],obj);


* @param {Game_Action} action
*/
BattleManager.pushChainAttack =function(action){
this._reservedChainAttack.push(action);
};
BattleManager.reserveChainAttack =function(){
const act = this._action;
if(this.canChainAttack(act)){
var chainUser = act.friendsUnit().aliveMembers();
for (const battler of chainUser) {
const chainAction = battler.findChainAciton(act);
if(chainAction){
this.pushChainAttack(chainAction);
}
この辺りなのかなと思いはしたのですが
どこをどうすればいいかまでは全くわかりませんでした。

拙い説明で申し訳ございませんが、
何卒よろしくお願いします。
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
nuruten さんが書きました:お世話になっております。
件名の通り、しぐれん様のプラグインMano_AfterCounter.jsの
チェイン(追撃)システムを使わせていただいているのですが
肝心の追撃のターゲットが、
前提となる攻撃スキルとは別のエネミーへ発動してしまい困っています。

色々と調査した結果
チェイン(追撃)スキルのターゲットに選ばれるのはランダムではなく
前提となる攻撃スキルを発動したキャラと、同じ位置のエネミーへ追撃しているようです。

例えば サイドビューでPTメンバーの4人を上からA,B,C,Dとし、
    敵グループのエネミー5体を配置した順番にA',B',C',D',E'とした時に
    PTメンバー4人の前提となる攻撃スキルを順に、全てエネミーA’へ放ってみたところ、
    PTメンバーAのエネミーA'への攻撃に対する追撃スキルはエネミーA'へ
    PTメンバーBのエネミーA'への攻撃に対する追撃スキルはエネミーB'へ
    PTメンバーCのエネミーA'への攻撃に対する追撃スキルはエネミーC'へ
    PTメンバーDのエネミーA'への攻撃に対する追撃スキルはエネミーD'へ
    といったように配置した順番に追撃スキルが行われています
    また、二週目のPTメンバーAのエネミーA'への攻撃に対する追撃スキルは
    エネミーE’を無視し、エネミーA’へ追撃スキルが行われました

console.rogで色々見たところ

Game_Battler.prototype.acceptForChain =function(func){
const list = this.counterTraitObjects();
for(var i=0; i <list.length;++i){
var obj = list;
if(obj.chain_MA){
for(var j =0;j < obj.chain_MA.length;j+=1){
func(obj.chain_MA[j],obj);


* @param {Game_Action} action
*/
BattleManager.pushChainAttack =function(action){
this._reservedChainAttack.push(action);
};
BattleManager.reserveChainAttack =function(){
const act = this._action;
if(this.canChainAttack(act)){
var chainUser = act.friendsUnit().aliveMembers();
for (const battler of chainUser) {
const chainAction = battler.findChainAciton(act);
if(chainAction){
this.pushChainAttack(chainAction);
}
この辺りなのかなと思いはしたのですが
どこをどうすればいいかまでは全くわかりませんでした。

拙い説明で申し訳ございませんが、
何卒よろしくお願いします。

対象のインデックスを設定する処理は、上記の部分ではなく
selectTargetIndex というメソッドの中で行われています。
ここの内容を見ると、

コード: 全て選択

    /**
     * 
     * @param {Game_Action} action 
     * @param {Game_Actor} opponent 
     */
    selectTargetIndex(action, opponent) {
        if (action.isForOpponent()) {
            action.setTarget(opponent.index());
        }
        else if (action.isForFriend()) {
            action.setTarget(action.subject().index());
        }
    }
となっています。
どうやら、カウンター(反撃)発生時と同じ挙動になっているようで、
チェイン発生のスキル(前提スキル)を使用したバトラーのインデックス
が設定されるようになってしまっているようです。

単体攻撃にしかチェインが発生しない、もしくは、全体攻撃や敵◯体ランダムでも、最後に対象になった相手にしか追撃しないという場合は、ここを変更すればいいのですが、
前提スキルの対象全員に追撃をするという場合は、また、違った編集をする必要があります。

単体にしか追撃しないのか、前提スキルの対象全員に攻撃するのか、どちらかをお教えください。
nuruten
記事: 23
登録日時: 2018年2月16日(金) 00:10

Re: しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

投稿記事 by nuruten »

返信ありがとうございます!
確かにsettargetと書いてありますね・・・
targetで検索したこともあったのですが全く気が付きませんでした。

>単体攻撃にしかチェインが発生しない、もしくは、全体攻撃や敵◯体ランダムでも、最後に対象になった相手にしか追撃しないという場合は、ここを変更すればいいのですが、
前提スキルの対象全員に追撃をするという場合は、また、違った編集をする必要があります。

とのことですが、そういう処理(前提スキルの対象全員に追撃をする)
も出来るとは思ってもいませんでしたので
当初の想定としては、前提スキルが範囲系であればランダムかラストターゲットを対象
というより、プラグインの挙動に任せるつもりでした。

ですので、基本的には追撃は単体対象で(範囲技に対してはランダムかラストターゲット)
追撃することでTPを溜め、そのTPを消費して
ダメージが下がる代わりに全体への追撃に変化する(他の方のプラグインを使用)
といったシステムにするつもりでした。

そこで一つお聞きしたいのですが
普段は追撃の対象は単体(範囲技に対してはランダムかラストターゲット)で
特定のステート時は【前提スキルの対象全員に追撃をする】
といった処理というのは可能でしょうか。
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
nuruten さんが書きました:返信ありがとうございます!
確かにsettargetと書いてありますね・・・
targetで検索したこともあったのですが全く気が付きませんでした。

>単体攻撃にしかチェインが発生しない、もしくは、全体攻撃や敵◯体ランダムでも、最後に対象になった相手にしか追撃しないという場合は、ここを変更すればいいのですが、
前提スキルの対象全員に追撃をするという場合は、また、違った編集をする必要があります。

とのことですが、そういう処理(前提スキルの対象全員に追撃をする)
も出来るとは思ってもいませんでしたので
当初の想定としては、前提スキルが範囲系であればランダムかラストターゲットを対象
というより、プラグインの挙動に任せるつもりでした。

ですので、基本的には追撃は単体対象で(範囲技に対してはランダムかラストターゲット)
追撃することでTPを溜め、そのTPを消費して
ダメージが下がる代わりに全体への追撃に変化する(他の方のプラグインを使用)
といったシステムにするつもりでした。

そこで一つお聞きしたいのですが
普段は追撃の対象は単体(範囲技に対してはランダムかラストターゲット)で
特定のステート時は【前提スキルの対象全員に追撃をする】
といった処理というのは可能でしょうか。
Mano_AfterCounter での追撃時の挙動を変更するプラグインを試作しました。
プラグインパラメータによって、
特定のステート時のみ、前提スキルの対象全員に攻撃、
ステートにかかっていない時は、生きている対象の中で、一番最後に攻撃された対象に攻撃するよう、
設定可能です。
Mano_AfterCounter_Opt1.js
(5.9 KiB) ダウンロード数: 6 回
詳しくは、プラグインのヘルプをご参照ください。

他のプラグインが何を使っているのか分かりませんので、競合の対策を行っておりません。
ご了承ください。
また、きちんとしたテストをしていないので、不具合が生じる可能性があります。
その際は、お知らせください。

以上、ご確認お願いします。
nuruten
記事: 23
登録日時: 2018年2月16日(金) 00:10

Re: しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

投稿記事 by nuruten »

ターゲットの調整だけでなく
機能追加までしていただき本当にありがとうございます!

確認させていただいたところ、しっかり同じ対象に追撃してくれました!

重ね重ねで申し訳ないのですが、一つお聞きしたいことがあります。
以前に

>追撃することでTPを溜め、そのTPを消費して
ダメージが下がる代わりに全体への追撃に変化する(他の方のプラグインを使用)
といったシステムにするつもりでした。
(記載はしませんでしたが、追撃か弱点だった場合さらに追撃スキルが追加発動するシステムも入れています)

と記載させていただいた通り
yana様の
ConditionallyAddEffect.js(条件を満たした時別のスキルを追加発動する)
ConditionallyChangeSkill.js(条件を満たした時別のスキルへと変化する)
{ConditionallyCore.js(上二つの前提プラグイン)}
を使用させていただいているのですが
確かめたところ、追撃スキルからさらに別のスキルを発動した場合及び、
最初の追撃スキルを別のスキルへ変化させた場合
以前と同じく、その追加発動したスキルと変化したスキルの
ターゲットがキャラの位置と同じ相手になってしまいました。

不可能ということであれば別の仕様に変更も出来るので、
本当によろしければでいいので、確認していただくことは可能でしょうか。
我儘を言って申し訳ございません。
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
nuruten さんが書きました:ターゲットの調整だけでなく
機能追加までしていただき本当にありがとうございます!

確認させていただいたところ、しっかり同じ対象に追撃してくれました!

重ね重ねで申し訳ないのですが、一つお聞きしたいことがあります。
以前に

>追撃することでTPを溜め、そのTPを消費して
ダメージが下がる代わりに全体への追撃に変化する(他の方のプラグインを使用)
といったシステムにするつもりでした。
(記載はしませんでしたが、追撃か弱点だった場合さらに追撃スキルが追加発動するシステムも入れています)

と記載させていただいた通り
yana様の
ConditionallyAddEffect.js(条件を満たした時別のスキルを追加発動する)
ConditionallyChangeSkill.js(条件を満たした時別のスキルへと変化する)
{ConditionallyCore.js(上二つの前提プラグイン)}
を使用させていただいているのですが
確かめたところ、追撃スキルからさらに別のスキルを発動した場合及び、
最初の追撃スキルを別のスキルへ変化させた場合
以前と同じく、その追加発動したスキルと変化したスキルの
ターゲットがキャラの位置と同じ相手になってしまいました。

不可能ということであれば別の仕様に変更も出来るので、
本当によろしければでいいので、確認していただくことは可能でしょうか。
我儘を言って申し訳ございません。
お待たせして申し訳ありません。
とりあえず、ConditionallyAddEffect と ConditionallyChangeSkill に対応させてみました。
Mano_AfterCounter_Opt1.js
(15.4 KiB) ダウンロード数: 7 回
こちらの、プラグインを使用するために、
ConditionallyAddEfect.js 及び ConditionallyChangeSkill.js に対して、
以下の編集を行っていただく必要があります。
  1. conditionallyChangeSkill.js の 80 行目あたりに、

    コード: 全て選択

        function ChangeSkillManager() {
            throw new Error('This is a static class');
        }
    
    という部分があると思います。これを

    コード: 全て選択

    (function(){
    
    となっている部分(恐らく 74 行目あたり)の前に移動させてください。
  2. ConditionallyAddEffect.js の 87 行目あたりに、

    コード: 全て選択

    	function AddEffectManager() {
        	throw new Error('This is a static class');
    	}
    
    という部分があると思います。これを

    コード: 全て選択

    (function(){
    
    となっている部分(恐らく 79 行目あたり)の前に移動させてください。
以上を行い、動作チェックを行ってください。

プラグインのヘルプに記載しましたが、
ConditionallyAddEfect、ConditionallyChangeSkill と一緒に使う場合は、
Mano_AfterCounter_Opt1 の方が下にある必要があります。
プラグインの並び順に注意してください。

申し訳ないんですが、チェックしきれず、対応できていない部分があるとおもいます。
nuruten さんのやりたい挙動には問題ないかなと思っているのですが、
変な挙動になってしまっていたら、報告お願いします。

以上、ご確認お願いします。
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

投稿記事 by ecf5DTTzl6h6lJj02 »

conditionallyAddEffect、ConditionallyChangeSkill に対応させてほしいという要請を受けて、
対応させましたという記事をあげてから、2週間以上、返信がありませんが、
きちんと、記事をご確認いただけていますでしょうか。
確認いただけている場合は、
動作確認中なら、確認中ですという返答でいいので、
何かしらの返信をしていただけますようお願いします。
nuruten
記事: 23
登録日時: 2018年2月16日(金) 00:10

Re: しぐれん様のプラグインMano_AfterCounter.jsのチェイン機能について

投稿記事 by nuruten »

お世話になっております。
返信が遅れて申し訳ありません。

競合対応していただきありがとうございます。
ようやくまとまった時間が取れたので色々と試させていただきました。

当初実現したかった通りの対象に追撃してくれました!
我儘にも関わらず対応していただき本当にありがとうございました。
また、返信が遅れたこと重ねてお詫び申し上げます。
返信する

“MV:質問”に戻る