【解決済】戦闘中のクラス切り替えについて

アバター
べるろ*(米工事)
記事: 30
登録日時: 2018年1月27日(土) 12:41
連絡を取る:

【解決済】戦闘中のクラス切り替えについて

投稿記事by べるろ*(米工事) » 2018年12月21日(金) 14:27

JavaScriptに詳しい方に質問です。

Game_Actor.prototype.addstate の書き換えによって特定のステートが付与・解除されたときにクラスを変更する簡単なプラグインを作っています。
コード内容はこのような感じです。

コード: 全て選択

var _Game_Actor_addNewState = Game_Actor.prototype.addNewState;
Game_Actor.prototype.addNewState = function(stateId) {
  _Game_Actor_addNewState.call(this,stateId);
  if($dataStates[stateId].meta['クラス変更タグ']) {
   var actorId = this._actorId;
   var classId = actorId + 1;
   this.changeClass(classId);
   this.refresh();
  }
};

このコードによるクラスの変更自体はうまくいくのですが、戦闘中にクラス変更を行った場合、同じターンにHPが0になると戦闘不能ステートが付与されません。
この現象が発生した場合、それ以降ダメージを受けても戦闘不能ステートが付与されない無敵状態となります。
また、クラス変更を行った次のターン以降にHPが0になった場合は普通に戦闘不能となります。

できれば余分なコードを入れたくはないので、原因または解決法を教えて頂けないでしょうか。
最後に編集したユーザー べるろ*(米工事) on 2018年12月22日(土) 02:04 [ 編集 3 回目 ]

アバター
剣崎 宗二
記事: 681
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 戦闘中のクラス切り替えについて

投稿記事by 剣崎 宗二 » 2018年12月21日(金) 21:11

取りあえずですが、
$gamePlayerが指しているのはGame_Playerクラス(マップ画面上に於けるプレイヤー)であり、戦闘中のキャラクターではありません。

$gamePlayer.refresh();

this.refresh();

にしてみてはいかがでしょうか。
(他の問題もある可能性もございますが…)
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
アバター
べるろ*(米工事)
記事: 30
登録日時: 2018年1月27日(土) 12:41
連絡を取る:

Re: 戦闘中のクラス切り替えについて

投稿記事by べるろ*(米工事) » 2018年12月21日(金) 21:25

剣崎 宗二さま

お返事ありがとうございます。

確かに$gamePlayerではなくthisや$gameActorなどの方が適切ですね。
ただ、試しに書き換えてみたのですが同じ症状が生じてしまうので他に問題がありそうです。
そもそもconsole.log(this)の実行は関係なく、クラス変更を行ったターンにHPが0になると戦闘不能が付与されないようでした。
また、一度この状態になると以降どれだけダメージを受けても戦闘不能にならなくなってしまいます。
アバター
剣崎 宗二
記事: 681
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 戦闘中のクラス切り替えについて

投稿記事by 剣崎 宗二 » 2018年12月22日(土) 00:49

console.log()を用いてaddStateの内部の各条件を確認(特にisStateAddable周辺に引っかかっていないか)する事をお勧めいたします。

一例ですが、ツクールMVの仕様として、「そのターンに解除されたステートは、同ターン内には再度付与できない」と言う制限が御座います。
なので、若しも例えば「死亡」ステートにそのタグを追加しているようであれば、当然ながら同じターンには再度死ねません。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
アバター
べるろ*(米工事)
記事: 30
登録日時: 2018年1月27日(土) 12:41
連絡を取る:

Re: 戦闘中のクラス切り替えについて

投稿記事by べるろ*(米工事) » 2018年12月22日(土) 02:04

剣崎 宗二さま

重ねてのアドバイスありがとうございます。

isStateAddableは盲点でした。
console.log()で探っていったところYEP_BattleEngineCore.jsによるisStateResistの書き換えが原因だったようです。
自分だけではここまで深く見る発想はなかったと思うので本当に助かりました。
ありがとうございます!

“MV:質問” へ戻る