水星人 さんが書きました:この計算式のスキルは対象がステート48の時ちゃんと倍になるのですが、修正したほうが良いのでしょうか
軽く検証した限り最初に提示された例でも問題無く使用可能ですね。
これは自分が不勉強でした。混乱を招く発言をして申し訳ないです。
Array.prototype.some()
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/somesome(callbackFn, thisArg)この使用法に該当します。
第一引数が評価用関数、第二引数が内部でthisを参照する為のオブジェクト指定です。
水星人 さんが書きました:これで試したところCannot read property 'isStateAffected' of undefinedが出ました。
どこがおかしいかわかりますか。
どう考えても$gameVariables.value(85)の中身ですね。
というかこれも自分が検証もせずに「インデックスなら0から始まる」という先入観で答えた事が原因ですね…
コアスクリプトを検めたところ、そのまま記録せずに途中で+1している事が分かりました。
重ね重ね申し訳ない。
コード: 全て選択
// rmmz_objects.js2256行目
Game_Action.prototype.updateLastTarget = function(target) {
if (target.isActor()) {
$gameTemp.setLastTargetActorId(target.actorId());
} else {
// 「変数の操作」「直前に対象になった敵キャラのインデックス」を記録する時に
// 「戦闘行動の強制」の表記を揃える為に+1しています
$gameTemp.setLastTargetEnemyIndex(target.index() + 1);
}
};
この記録変数をスクリプトに用いる場合は-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);
}