ページ 11

【解決済】「パーティメンバーで一番HP割合の低い味方」をターゲットする方法について

Posted: 2021年1月28日(木) 17:36
by ころあ
いつもお世話になっております。

こちらのサイト(https://punipunion.hatenablog.com/entry ... /15/144143)を参考にして
「同じキャラに追撃するスキル」を作成していたのですが、
この度、「一撃目は敵を対象としたスキルで攻撃し、二撃目のスキルでパーティメンバーの中で一番HPの割合が低い(最大HPに対し、現在のHPの割合が低い)メンバーを回復する」スキルを作りたいと思い、質問させていただきました。

サイトにある以下のスクリプト構文を参照し、

this._params[0] = 0;
this._params[1] = BattleManager._subject.index();
this._params[2] = 29;
this._params[3] = -2;
this.command339();

の部分の「this._params[3] 」の部分で「パーティメンバーの内、HPの割合が一番低いメンバーを指定」すれば良いと思うのですが、この場合のスクリプト構文はどのようになるのでしょうか?
または前提となる構文を入力する必要があったりするのでしょうか?

ちなみに、エネミー側の挙動は考慮していない(敵側のスキルとして設定しない)ので
こちらについての対応は不要でございます。

もしご存じの方がいらっしゃったらご教示くださいませ。
どうぞよろしくお願い致します。

Re: 「パーティメンバーで一番HP割合の低い味方」をターゲットする方法について

Posted: 2021年1月28日(木) 20:02
by 奏ねこま
(削除)

Re: 「パーティメンバーで一番HP割合の低い味方」をターゲットする方法について

Posted: 2021年1月28日(木) 21:38
by jp_asty
自分も考えてみました。

コード: 全て選択

this._params[0] = 1;
this._params[1] = BattleManager._subject.actorId();
this._params[2] = 8;//使用スキルID
this._params[3] = $gameParty.aliveMembers().reduce((a, c) => a.hpRate() <= c.hpRate() ? a : c).index();
this.command339();
これで如何でしょうか。

Re: 「パーティメンバーで一番HP割合の低い味方」をターゲットする方法について

Posted: 2021年1月28日(木) 22:28
by ころあ
>奏ねこま様
>jp_asty様

ご返信ありがとうございます。
教示いただきましたスクリプトをそれぞれ試してみたところ
「味方全員が生存している状況」では問題なく動作していましたが
「味方に戦闘不能者がいる状況」ではjp_asty様のスクリプトが適切に動作をしているようでした。
(パーティメンバーAが戦闘不能・BがHP100%・CがHP50%・DがHP90%の状況でスキルを発動した場合、
 奏ねこま様のスクリプトで動作させた場合、Bがターゲットされました。)

恐らくjp_asty様のスクリプトでは生存状況を加味した条件設定がなされているためと推測しますが
生存状況については私も想定ができておらず、
あらゆる状況を想定した上で質問ができるようにしなければ、と思うところです。
奏ねこま様、お手間を取らせて申し訳ありません。

ですがお二方に提示いただきましたスクリプトで
これまで作成していた「攻撃属性の異なる2連撃」だけにとどまらず、
攻撃⇒回復の他にも効果の異なるバフなど、様々な事が試せそうです。
改めてお二方に感謝申し上げます。

ありがとうございました。
状況が解決されましたので【解決済】とさせていただきます。