ちょうど少し前に知ったばかりの「発動前コモン」プラグインが使えそうだなと思いました
https://plugin-mz.fungamemake.com/archives/1442
これを使って、敵の数別に『名前は同じだけど、効果が異なるスキル』を発動させれば
条件を満たせると思われます。なんだったら演出も変えられますしね
説明のため、便宜上以下の内容とします
敵が1人のときのスキル:ID:52
敵が2人のときのスキル:ID:53
敵が3人のときのスキル:ID:54
発動者インデックスID変数ID:21(発動前コモンで設定してください)
スキルID格納変数:25
敵の数格納変数:26
ID:54のスキルに発動前コモンのコモンIDを指定します。
コモンイベントには次の内容を実行させます
①敵の数を数える
②敵が1匹ならスキルID:52、2匹ならID:53が発動できるようにする。3匹以上ならコモンイベント中断
③コモンイベントが続いたなら『戦闘行動の強制』にて別のスキルを発動する
『戦闘行動の強制』でスキルを発動させると元のスキルは発動前にキャンセルされるので、これで3つのスキルを使い分けられます
以下、細かく説明します
①『敵の数格納変数』にスクリプトで生きている敵の数を代入します。
コード: 全て選択
$gameTroop.aliveMembers().length
②『敵の数格納変数』が3以上ならコモンイベントを中断します。これで通常のID:54スキルが発動します
敵の数が1匹以下なら52、そうでなければ53を『スキルID格納変数』に代入します
③『戦闘行動の強制』は変数で指定できないので、スクリプトで同様の処理を行います
参考:
https://rpgmaker-script-wiki.xyz/battleaction_mz.php
まず発動者を特定します。『発動者インデックスID変数ID』の数値はPTの何番目の人がスキルを使ったか、
の数値が代入されているので、そこからアクターを特定し、アクターIDを求めます
const actor = $gameParty.battleMembers()[$gameVariables.value(21)];
const actorId = actor.actorId();
スキルは『スキルID格納変数』の値を使います
const skillId = $gameVariables.value(25);
自分に使用するスキルなので、対象者はなんでもいいです。ランダム対象の-1にでもしておきます
これらの変数を使って『戦闘行動の強制』を実行します。
this.iterateBattler(1, actorId, battler => {
if (!battler.isDeathStateAffected()) {
battler.forceAction(skillId, -1)
BattleManager.forceAction(battler)
this.setWaitMode('action')
}
})
まとめると下の通り
コード: 全て選択
const actor = $gameParty.battleMembers()[$gameVariables.value(21)];
const actorId = actor.actorId();
const skillId = $gameVariables.value(25);
this.iterateBattler(1, actorId, battler => {
if (!battler.isDeathStateAffected()) {
battler.forceAction(skillId, -1)
BattleManager.forceAction(battler)
this.setWaitMode('action')
}
})
上記の『21』、『25』の部分はご自身が設定した変数に書き換えてください
これで敵の数別に異なるスキルが発動するようになりました