/*:
 * @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);
        }
    };

})();
