prison-brave/js/plugins/IM_BattleSingleEnemySkip.js
2025-08-28 10:38:20 -05:00

59 lines
2.9 KiB
JavaScript

/*:
* @target MZ
* @plugindesc 敵が1体以下なら敵選択をスキップし、自動でその敵をターゲットにします。複数体いれば通常選択。
* @author
*
* @help
* =============================================================================
* ■ 概要
* =============================================================================
* - スキルやアイテム使用時に「敵を選択」する状況で、
* MZ標準では Scene_Battle.prototype.startEnemySelection() が呼ばれて
* 敵選択ウィンドウを開きます。
* - このプラグインでは、敵の生存数が1体以下の場合は
* その敵を自動的に選択し、ウィンドウを開かずスキップします。
* - 複数体生存していれば従来通り敵選択ウィンドウを表示。
*
* ■ 使い方
* 1) このファイルを「IM_BattleSingleEnemySkip.js」として js/plugins フォルダに置く。
* 2) プラグイン管理でONにして、他バトル系プラグインより下にすると競合しにくい。
* 3) 敵が1体だけ戦闘不能でない状態なら自動的にその敵をターゲットし、
* ウィンドウを表示しません。
* 4) 複数体いれば標準動作(敵選択ウィンドウ)を表示します。
*
* ■ 注意
* - 生存数(HP>0)が1体だけの場合にスキップするので、
* ボス戦など1体だけのケースで自動化できます。
* - startEnemySelection() を上書きするので、他プラグインがこれを再上書きしている場合、
* 順番によっては競合が起きる可能性があります。
*/
(() => {
"use strict";
//--------------------------------------------------------------------------
// ■ Scene_Battle.prototype.startEnemySelection
//--------------------------------------------------------------------------
// 敵選択ウィンドウを開く処理を上書き。
// 敵が1体以下(生存数が1以下)ならウィンドウを開かずスキップする。
const _Scene_Battle_startEnemySelection = Scene_Battle.prototype.startEnemySelection;
Scene_Battle.prototype.startEnemySelection = function() {
const aliveEnemies = $gameTroop.aliveMembers();
if (aliveEnemies.length <= 1) {
// 自動決定
// aliveEnemies[0] があればそのindexを取得して選択
if (aliveEnemies.length === 1) {
const index = $gameTroop.members().indexOf(aliveEnemies[0]);
$gameTroop.select(index);
} else {
// 全滅状態or0体? fallback → select(0) でもOK, どうせ行動できない
$gameTroop.select(0);
}
this.onEnemyOk();
} else {
// 通常
_Scene_Battle_startEnemySelection.call(this);
}
};
})();