/*:
 * @target MZ
 * @plugindesc [MZ] 戦闘中のターン終了時に習得スキルに応じてHPを％回復（重複可／1-3-5%版）
 * @author you
 * @help
 * 概要:
 *  戦闘中の各ターン終了時、アクターが習得している下記スキルに応じて
 *  最大HPの一定％を加算回復します（効果は重複します）
 *
 *  - スキルID 417: +1%
 *  - スキルID 418: +3%
 *  - スキルID 419: +5%
 *
 * 仕様:
 *  - 戦闘中のみ動作
 *  - アクターのみ対象（敵は対象外）
 *  - 回復量は合算後に Math.floor で小数点切り捨て
 *  - Game_Battler.prototype.regenerateAll をフックして実装
 *
 * 使い方:
 *  プロジェクトの js/plugins/ に本ファイルを保存し、プラグイン管理で有効化してください
 *
 * 変更したい場合:
 *  下の「const SKILL_*」「const RATE_*」の値を書き換えてください
 */

(() => {
  // ===== 設定値（必要なら書き換え） =====
  const SKILL_1P_ID  = 417; // 習得で+1%
  const SKILL_3P_ID  = 418; // 習得で+3%
  const SKILL_5P_ID  = 419; // 習得で+5%

  const RATE_1P = 1;  // %
  const RATE_3P = 3;  // %
  const RATE_5P = 5;  // %

  // ===== 実装本体 =====
  const _regenerateAll = Game_Battler.prototype.regenerateAll;
  Game_Battler.prototype.regenerateAll = function() {
    _regenerateAll.call(this);

    // 戦闘中のみ・生存中のみ・アクターのみ
    if (!$gameParty.inBattle() || !this.isAlive() || !this.isActor()) return;

    // 習得状況に応じて％を加算
    let totalRate = 0; // 合計％
    if (this.isLearnedSkill && this.isLearnedSkill(SKILL_1P_ID)) totalRate += RATE_1P;
    if (this.isLearnedSkill && this.isLearnedSkill(SKILL_3P_ID)) totalRate += RATE_3P;
    if (this.isLearnedSkill && this.isLearnedSkill(SKILL_5P_ID)) totalRate += RATE_5P;

    if (totalRate > 0) {
      const gain = Math.floor(this.mhp * (totalRate / 100));
      if (gain !== 0) this.gainHp(gain); // 上限超過はエンジン側で処理
    }
  };
})();
