【解決済み】『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

nomaly
記事: 29
登録日時: 2018年9月26日(水) 21:51

【解決済み】『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by nomaly » 2018年11月02日(金) 20:15

こんにちは。

少し長いので結論を先に書くと、タイトル通りですが
『最後にダメージを受けた敵』をスクリプトで変数に格納する方法を知りたいのです。

[経緯]
攻撃アイテムで、「敵単体にダメージ(確定効果)」処理の後、確率による追加効果で「『同じ敵に』追加ダメージ」もしくは「『アイテム使用者が』ダメージ」という効果を持つアイテムを設定したいです。

これを実現するために考えた方法が以下の通りです。
①アイテムの効果に確定効果のHPダメージを設定
②アイテムの効果にコモンイベントを追加。乱数と条件分岐により追加効果を確率分岐させる
③スクリプトを用いて「『同じ敵に』追加ダメージを与える」、「『アイテム使用者が』ダメージ」を設定

この③について、『アイテム使用者が』を変数に格納するには
$gameVariables.setValue([変数ID], BattleManager._action._subjectActorId); でできると見つけたのですが、
『同じ敵に(最後にダメージを受けた敵)』をスクリプトで変数に格納する方法が見つかりませんでした。

どなたかご存知の方お教えいただけないでしょうか。
もしくは、別の方法で実現できますでしょうか。
よろしくお願いします。
最後に編集したユーザー nomaly on 2018年11月05日(月) 08:59 [ 編集 1 回目 ]

奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: 『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by 奏ねこま » 2018年11月02日(金) 21:07

敵の番号(1体目が0、2体目が1、3体目が2…)を取得するなら

$gameActors.actor(BattleManager._action._subjectActorId)._lastTargetIndex

こうでしょうか。
似たようなものに

BattlerManager._action._targetIndex

というものがありますが、これは行動決定時に選択した敵になるので
例えば「1体目を選択していたけど他のキャラが1体目を倒してしまったので自動的に2体目を攻撃した」という場合に
1にはなってくれず0のままになります。1つめのスクリプトなら1になります。
nomaly
記事: 29
登録日時: 2018年9月26日(水) 21:51

Re: 『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by nomaly » 2018年11月02日(金) 21:49

奏ねこま様

回答ありがとうございます。

現在作っているゲームでは、既に倒した敵を別のアクターが目標にする可能性はないです。(フトコロ様の敵味方交互ターン戦闘プラグイン)

スクリプトの知識に乏しく、完成形が分からないのですが、前者なら
$gameVariables.setValue([変数ID], $gameActors.actor(BattleManager._action._subjectActorId)._lastTargetIndex);

後者なら
$gameVariables.setValue([変数ID],BattlerManager._action._targetIndex);
にすれば使えるのでしょうか。
nomaly
記事: 29
登録日時: 2018年9月26日(水) 21:51

Re: 『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by nomaly » 2018年11月02日(金) 23:12

ありがとうございました!

検索用 指定の敵 特定の敵 スクリプト 
nomaly
記事: 29
登録日時: 2018年9月26日(水) 21:51

Re: 『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by nomaly » 2018年11月03日(土) 20:12

こんにちは。敵キャラIDを取得することはできたようです。
しかし、私が見つけた敵キャラのHPを減らす際のスクリプト

this.iterateEnemyIndex(敵ID, function(enemy) {
this.changeHp(enemy, 増減値, 戦闘不能を許可するか);
}.bind(this));

で敵ID(や増減値に)変数を使うとエラーになってしまうようです。

敵キャラを指定してHPの増減を行う他のスクリプトがあるのでしょうか。
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: 『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by 奏ねこま » 2018年11月03日(土) 21:02

変数を使ったからエラーになったんじゃなくて
書き方を間違えたからエラーになったんじゃないですかね?
nomaly
記事: 29
登録日時: 2018年9月26日(水) 21:51

Re: 『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by nomaly » 2018年11月03日(土) 21:19

再びありがとうございます。

イベントコマンドで、
スクリプト $gameVariables.setValue(26, $gameActors.actor(BattleManager._action._subjectActorId)._lastTargetIndex);
変数ID27の定義
スクリプト this.iterateEnemyIndex(\V[26], function(enemy) {
this.changeHp(enemy, \V[27], true);
}.bind(this));
の3段階の手順にしていて、エラーになります。

最後の部分を
スクリプト this.iterateEnemyIndex(0, function(enemy) {
this.changeHp(enemy, 100, true);
}.bind(this));
にするとエラーなく動きます。

何か初歩的な部分を間違えているのでしょうか。
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: 『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by 奏ねこま » 2018年11月03日(土) 22:06

スクリプト内で「\V[26]」のような表記は使えません。
これは文章の表示でのみ可能な記述です(何らかのプラグインによる機能拡張があれば話は変わる)。

スクリプト内で変数を使いたい場合は

$gameVariables.value(26)

という風にしてください。
nomaly
記事: 29
登録日時: 2018年9月26日(水) 21:51

Re: 『最後にダメージを受けた敵』をスクリプトで変数に格納する方法 (敵にダメージ後、確率で追加ダメージor自分がダメージを設定したい)

投稿記事by nomaly » 2018年11月05日(月) 08:54

$gameVariables.value(26) を試したところ、エラーなく動きました!

ありがとうございました、重ねて感謝申し上げます!

“MV:質問” へ戻る