【解決済み】スキルの連続回数を変更するプラグイン
Posted: 2022年12月10日(土) 00:35
行動主体がステート「双剣」だった場合、スキルの連続回数(通常は1)を2にするプラグインを作成しました。
戦闘中は問題なくプラグインが作動するのですが、戦闘以外のメニュー画面でアイテムを使用するなどのときに
TypeError
Cannot read property 'isStateAffected' of undefined
とエラー表示になってしまいます。おそらく、戦闘以外なのでBattleManager._subjectでひっかかるものと思われます。
そこで、各攻撃スキルのメモ欄に<双剣>と記入の上で、プラグインに
if( this.item().meta.match(/双剣/) …①
の条件付きを加えてみれば、攻撃スキルなら戦闘中のみの使用のため上記のようなエラーは避けられるのではと思いきや、やはりエラーとなります。①の構文にミスがあるのかもしれません、メモ欄には他の文なども書かれているため、一部一致で「双剣」と書かれていた場合を条件としたいのでmatchを使用したいです。
よい方法(プラグインの書き方)があれば教えていただけるとありがたいです。お願いいたします。
----以下プラグイン内容---------------------------------------------------------------------------------------------------
(function() {
var _Game_Action_numRepeats = Game_Action.prototype.numRepeats;
Game_Action.prototype.numRepeats = function() {
var number = _Game_Action_numRepeats.call(this);
return this.numRandRepeats(number);
};
Game_Action.prototype.numRandRepeats = function(number) {
var battler = BattleManager._subject; // 現在の行動主体
if(battler.isStateAffected(10)){ // ステート「双剣」のID=10
number = 2; // スキルの連続回数を2にする
}
return number;
}
})();
戦闘中は問題なくプラグインが作動するのですが、戦闘以外のメニュー画面でアイテムを使用するなどのときに
TypeError
Cannot read property 'isStateAffected' of undefined
とエラー表示になってしまいます。おそらく、戦闘以外なのでBattleManager._subjectでひっかかるものと思われます。
そこで、各攻撃スキルのメモ欄に<双剣>と記入の上で、プラグインに
if( this.item().meta.match(/双剣/) …①
の条件付きを加えてみれば、攻撃スキルなら戦闘中のみの使用のため上記のようなエラーは避けられるのではと思いきや、やはりエラーとなります。①の構文にミスがあるのかもしれません、メモ欄には他の文なども書かれているため、一部一致で「双剣」と書かれていた場合を条件としたいのでmatchを使用したいです。
よい方法(プラグインの書き方)があれば教えていただけるとありがたいです。お願いいたします。
----以下プラグイン内容---------------------------------------------------------------------------------------------------
(function() {
var _Game_Action_numRepeats = Game_Action.prototype.numRepeats;
Game_Action.prototype.numRepeats = function() {
var number = _Game_Action_numRepeats.call(this);
return this.numRandRepeats(number);
};
Game_Action.prototype.numRandRepeats = function(number) {
var battler = BattleManager._subject; // 現在の行動主体
if(battler.isStateAffected(10)){ // ステート「双剣」のID=10
number = 2; // スキルの連続回数を2にする
}
return number;
}
})();