標記の件、トリアコンタン様の効果範囲拡張プラグインを使ってますが、実際にスキル欄にMETAタグを入れると止まってしまうので回避法を考えたいです。
今のところ原因は、当方スキル発動メッセージに”targetsの名前”を入れられるようにコアスクリプトを改変しているため、効果範囲拡張プラグインのmetaタグが入るとtargetsが書き換えられてエラーが発生しているのではと推察しています。
コード: 全て選択
var _Game_Action_repeatTargets = Game_Action.prototype.repeatTargets;
Game_Action.prototype.repeatTargets = function(targets) {
if (this.isScopeExtendInfo(['敵味方', 'EnemiesAndAllies'])) {
if (!this.subject().isConfused() || this._forcing) {
targets = this.targetsForAll(targets);
//ここでtargetsが書き換えられる。
}
}
if (this.isScopeExtendInfo(['使用者追加', 'AdditionUser'])) {
if (!targets.contains(this.subject())) {
targets.push(this.subject());
}
}
if (this.isScopeExtendInfo(['使用者除外', 'RemoveUser', '使用者削除'])) {
targets = targets.filter(function(target) {
return target !== this.subject();
}.bind(this));
}
if (this.isScopeExtendInfo(['重複除外', 'RemoveDuplication', '重複削除'])) {
targets = targets.filter(function(target, i) {
return targets.indexOf(target) === i;
}.bind(this));
}
if (this.isScopeExtendInfo(['ランダム', 'Random'])) {
var number = this.getScopeExtendInfo(['ランダム', 'Random']);
var targetsForRandom = [];
while (targetsForRandom.length < number && targets.length > targetsForRandom.length) {
var index = Math.floor(Math.random() * targets.length);
if (!targetsForRandom.contains(targets[index])) {
targetsForRandom.push(targets[index]);
}
}
targets = targetsForRandom;
}
if (this.isScopeExtendInfo(['グループ', 'Group']) && targets[0]) {
var targetsForGroup, prevTarget = targets[0];
if (prevTarget.isActor()) {
targetsForGroup = prevTarget.friendsUnit().aliveMembers();
} else {
targetsForGroup = prevTarget.friendsUnit().aliveMembers().filter(function(member) {
//return prevTarget.enemyId() === member.enemyId();
return prevTarget.originalName() === member.originalName();
});
}
targets = targetsForGroup;
}
arguments[0] = targets;
return _Game_Action_repeatTargets.apply(this, arguments);
};
コード: 全て選択
if (DataManager.isSkill(item)) {
if (!$gameSwitches.value(504) || $gameSwitches.value(505)){
if ($gameSwitches.value(504) && $gameSwitches.value(505)){
this.push('clear')
}
var target= [targets];
if (item.message1) {
if (item.scope === 1 || item.scope=== 7 || item.scope=== 11) {
this.push('addText', subject.name() + item.message1.format(item.name, BattleManager._targets[0].name()));
//ここでtargetsを使っている。
} else {
this.push('addText', subject.name() + item.message1.format(item.name));
}
}
if (item.message2) {
if (item.scope === 1 || item.scope=== 7 || item.scope=== 11) {
this.push('addText', item.message2.format(item.name, BattleManager._targets[0].name(),subject.name()));
} else {
this.push('addText', item.message2.format(item.name, target.name,subject.name()));
}
}