ページ 11

【解決済み】直前に行動したのがアクターか敵かどうかを取得したい

Posted: 2022年10月16日(日) 09:04
by akira57
・直前に行動したアクターのID
・直前に行動した敵キャラのインデックス
はMZ内のイベントコマンドで、もしくはスクリプトで取得できるのですが、では、
・「直前に行動したのが(行動主体が)アクターであったのか敵であったのか」
を取得することはできるでしょうか。

例 スキル「炎の剣」を敵キャラが使用した場合は、本来のダメージのみだが、
アクターが使用すると、本来の攻撃+炎 のダメージ。

のように、あるスキルを使用したのが、アクターの場合は追加効果がある、というのを
スキルの使用効果にコモンイベントを付けることで実現しようとしたいです。
そのために、コモンイベント内で、行動主体がアクターか敵のどちらであったのかで条件分岐
すれば実現できると思いました。
 よろしくお願いいたします。

Re: 直前に行動したのがアクターか敵かどうかを取得したい

Posted: 2022年10月16日(日) 13:42
by WTR
・直前に行動したアクターのID
・直前に行動した敵キャラのインデックス
を取得する処理でアクターなのかエネミーなのか判定しているのに
残念ながらその判定結果がどこにも残っていないようです。
仕方ないので別途直前の行動主体を取得できるように処理を追加しました。

直前の行動主体がアクターであった場合の条件分岐

コード: 全て選択

$gameTemp.lastSubject().isActor()
直前の行動主体がエネミーであった場合の条件分岐

コード: 全て選択

$gameTemp.lastSubject().isEnemy()
適当な名前を付けてプラグイン登録してください。

コード: 全て選択

(() => {
	"use strict";
const _Game_Temp_initialize = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function() {
	_Game_Temp_initialize.call(this)
    this._lastSubject = null;
};

Game_Temp.prototype.setLastSubject = function(subject) {
	this._lastSubject = subject;
};

Game_Temp.prototype.lastSubject = function() {
	return this._lastSubject;
};

const _Game_Action_updateLastSubject = Game_Action.prototype.updateLastSubject;
Game_Action.prototype.updateLastSubject = function() {
	_Game_Action_updateLastSubject.call(this)
	$gameTemp.setLastSubject(this.subject());
};
})();

Re: 【解決済み】直前に行動したのがアクターか敵かどうかを取得したい

Posted: 2022年10月30日(日) 12:24
by akira57
返信が遅くなり申し訳ありません。
ご解答ありがとうございました。
 教えて頂いた方法で試したところ、上手く取得できました。
「直前に行動したのがアクターか敵か」のスクリプトが(おそらく)無かったというのは意外でしたが、
プラグイン化してコモンイベントに取り込んで実装させて頂きました。
これがあると、1つのスキルのみで、アクターか敵かで効果を使い分けるなど、いろいろと使いどころが
ある気がします。
大変ありがとうございました。