1つひとつ付与されているか確認せず、まとめて1つの条件分岐で出来ますか。
以前どこかで見たであろう、上と同じ条件で威力が上がるスキルはスキル計算式に
コード: 全て選択
[id1,id2,...].some(b.isStateAffected,b)?2:1)
コード: 全て選択
$gameTroop.members()[n].isStateAffected(id)
また、[n]を変数で指定する場合は、ラストターゲットのインデックスを変数に格納した後に
1引かないといけないでしょうか
コード: 全て選択
[id1,id2,...].some(b.isStateAffected,b)?2:1)
コード: 全て選択
$gameTroop.members()[n].isStateAffected(id)
文法がおかしいですね。おそらくは元はこうではないかと水星人 さんが書きました: 以前どこかで見たであろう、上と同じ条件で威力が上がるスキルはスキル計算式に
[id1,id2,...].some(b.isStateAffected,b)?2:1)
コード: 全て選択
// ステートID5,6,7を判定する場合
([5, 6, 7].some(id => b.isStateAffected(id)) ? 2 : 1) * (a.atk * 4 - b.def - 2)
同じ要領でsomeで判定をすれば良いのでは。水星人 さんが書きました:こちらの敵にステートが付与されているかのコードにどう組み合わせればいいのかがわかりません。
また、[n]を変数で指定する場合は、ラストターゲットのインデックスを変数に格納した後に
1引かないといけないでしょうか
コード: 全て選択
const battler = $gameTroop.members()[n];
if ( [5, 6, 7].some(id => battler.isStateAffected(id)) ) {
}
コード: 全て選択
const battler = $gameTroop.members()[$gameVariables.value(85)];
if ( [5,6,7,8,9,10,12,13,41,42,43,44,45,46,47,48].some(id => battler.isStateAffected(id)) ) {
$gameTroop.members()[$gameVariables.value(85)].addState(222)
}
コード: 全て選択
(a.atk * 1.39 - b.def)*(a.isStateAffected(11)?1:0.5)*([5,6,7,8,9,10,12,13,41,42,43,44,45,46,47,48].some(b.isStateAffected,b)?2:1)
軽く検証した限り最初に提示された例でも問題無く使用可能ですね。水星人 さんが書きました:この計算式のスキルは対象がステート48の時ちゃんと倍になるのですが、修正したほうが良いのでしょうか
どう考えても$gameVariables.value(85)の中身ですね。水星人 さんが書きました:これで試したところCannot read property 'isStateAffected' of undefinedが出ました。
どこがおかしいかわかりますか。
コード: 全て選択
// rmmz_objects.js2256行目
Game_Action.prototype.updateLastTarget = function(target) {
if (target.isActor()) {
$gameTemp.setLastTargetActorId(target.actorId());
} else {
// 「変数の操作」「直前に対象になった敵キャラのインデックス」を記録する時に
// 「戦闘行動の強制」の表記を揃える為に+1しています
$gameTemp.setLastTargetEnemyIndex(target.index() + 1);
}
};
コード: 全て選択
const battler = $gameTroop.members()[$gameVariables.value(85) - 1];
if ( [5,6,7,8,9,10,12,13,41,42,43,44,45,46,47,48].some(battler.isStateAffected, battler) ) {
battler.addState(222);
}