【解決済み】戦闘中、スクリプトでアクターの強化状態を判定して解除したい

sunagimo
記事: 138
登録日時: 2017年9月17日(日) 07:53

【解決済み】戦闘中、スクリプトでアクターの強化状態を判定して解除したい

投稿記事by sunagimo » 2020年2月27日(木) 19:38

お疲れ様です。いつもお世話になっております。
掲題の件ですが、以下の方法についてご教授願えませんでしょうか。

・戦闘中、指定したアクターの能力強化状態(スキルの特徴で付与できる、最大HPや攻撃力の強化のことです)に
 なっているかどうかを条件分岐コマンドで判定するスクリプト

・指定したアクターの能力強化状態を解除するスクリプト

以上になります
最後に編集したユーザー sunagimo on 2020年2月29日(土) 15:25 [ 編集 1 回目 ]

【自作RPG】
■北国狩人物語
https://plicy.net/GamePlay/152039
■ラストディフェンダー
https://plicy.net/GamePlay/152035
■ウィズテマーグ迷宮残歌
https://plicy.net/GamePlay/146396
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 戦闘中、スクリプトでアクターの強化状態を判定して解除したい

投稿記事by Plasma Dark » 2020年2月28日(金) 22:56

・戦闘中、指定したアクターの能力強化状態(スキルの特徴で付与できる、最大HPや攻撃力の強化のことです)に
 なっているかどうかを条件分岐コマンドで判定するスクリプト
・指定したアクターの能力強化状態を解除するスクリプト


本当にこれらはスクリプトで実現する必要があるものでしょうか。
戦闘行動の強制で、強化を解除する効果を持ったスキルを使わせる、では不足でしょうか。

もし不足なら下記のようなスクリプトで実現可能かと思います。
全能力について強化状態なら解除するという記述になっているので、能力をどれかに限定したい場合は適宜直して使ってください。

コード: 全て選択

let actor = $gameParty.battleMembers()[隊列位置];
for (let i = 0; i<actor.buffLength(); i++) {
  if (actor.isBuffAffected(i)) {
    actor.eraseBuff(i);
  }
}
sunagimo
記事: 138
登録日時: 2017年9月17日(日) 07:53

Re: 戦闘中、スクリプトでアクターの強化状態を判定して解除したい

投稿記事by sunagimo » 2020年2月29日(土) 07:02

>Plasma Dark 様

返信ありがとうございます。いただいたスクリプトで能力強化状態のキャラを判定して
解除することが出来ました。

>本当にこれらはスクリプトで実現する必要があるものでしょうか。
>戦闘行動の強制で、強化を解除する効果を持ったスキルを使わせる、では不足でしょうか。

戦闘行動の強制は、別の処理を流す為に使っているため競合を避けるために
スクリプトで強化状態を解除したいと思っていました。
ただ、強化状態の判定を条件分岐コマンドで行って強化状態の有無で処理を分岐できると
色々融通が利きそうですね……

いただいた処理ですと強化状態の判定と解除がセットになっていますが
こちらの、強化状態の判定だけをイベントコマンドのスクリプトで行う方法があれば
ご教授願えませんでしょうか
【自作RPG】
■北国狩人物語
https://plicy.net/GamePlay/152039
■ラストディフェンダー
https://plicy.net/GamePlay/152035
■ウィズテマーグ迷宮残歌
https://plicy.net/GamePlay/146396
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 戦闘中、スクリプトでアクターの強化状態を判定して解除したい

投稿記事by Plasma Dark » 2020年2月29日(土) 08:44

いただいた処理ですと強化状態の判定と解除がセットになっていますが
こちらの、強化状態の判定だけをイベントコマンドのスクリプトで行う方法があれば
ご教授願えませんでしょうか


条件分岐のスクリプトに以下のように入力すると実現可能です。

コード: 全て選択

$gameParty.battleMembers()[隊列位置].isBuffAffected(ステータス番号)


ステータスを限定せず、全能力のうちいずれかが強化されているかどうかの判定は、やや冗長になりますが以下でできるかと。

コード: 全て選択

Array.from(Array($gameParty.battleMembers()[隊列位置].buffLength()).keys()).some(paramId => $gameParty.battleMembers()[隊列位置].isBuffAffected(paramId))


これを直接条件分岐のスクリプトに入れるよりは、判定用メソッドを追加するプラグインを書いたほうがスッキリしそうです。

https://github.com/elleonard/RPGtkoolMV-Plugins/blob/master/plugins/DarkPlasma_IsBuffAffected.js

右上のRawボタンからダウンロードするか、
gitが使えるならcloneしていただいても構いません。
このプラグインを導入すると、以下のように書けます。

コード: 全て選択

$gameParty.battleMembers()[隊列番号].isAnyBuffAffected()


詳しくはプラグインのヘルプにまとめていますので、ご参照ください。
sunagimo
記事: 138
登録日時: 2017年9月17日(日) 07:53

Re: 戦闘中、スクリプトでアクターの強化状態を判定して解除したい

投稿記事by sunagimo » 2020年2月29日(土) 11:35

>Plasma Dark 様

お世話になっております。Sunagimoです。
判定用メソッドを追加するプラグインまでご用意いただきありがとうございます。
こちらを用いて極めて簡潔に実装確認まで出来ました。
この度はありがとうございました
【自作RPG】
■北国狩人物語
https://plicy.net/GamePlay/152039
■ラストディフェンダー
https://plicy.net/GamePlay/152035
■ウィズテマーグ迷宮残歌
https://plicy.net/GamePlay/146396

“MV:質問” へ戻る