戦闘で負ったダメージを維持するエネミー



戦闘終了してもエネミーのHPを保持する
※ぶっちゃけるとFF〇のデス〇イズのような演出をやってみる

★注意
複数のエネミーには対応していないので、特殊なボスの場合のみ設定してください

トループの設定にて ターン0 のページにスクリプトで
set_hp_hold(エネミーID)
とすることで有効になります

変更点
まだなし

#----------------------------------------------------------------------------
# 戦闘で負ったダメージを維持するエネミー by 貪藻矢射妥←
#----------------------------------------------------------------------------
# 戦闘終了してもエネミーのHPを保持する
# ※ぶっちゃけるとFF〇のデス〇イズのような演出をやってみる
#
# ★注意
# 複数のエネミーには対応していないので、特殊なボスの場合のみ設定してください
#
# トループの設定にて ターン0 のページにスクリプトで
# set_hp_hold(エネミーID)
# とすることで有効になります
# 
#============================================================================
# 変更点
# まだなし

#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :en_hp_hld_flg              # エネミーのHP保持フラグハッシュ
  attr_accessor :en_hp_holding              # エネミーのHPハッシュ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_Enemy_HP_Hold initialize
  def initialize
    # 元の処理を実施
    initialize_Enemy_HP_Hold
    
    @en_hp_hld_flg = {}
    @en_hp_holding = {}
  end
  #--------------------------------------------------------------------------
  # ● エネミーのHP保持フラグの設定
  #     id : エネミーのID
  #--------------------------------------------------------------------------
  def set_hp_hold(id)
    @en_hp_hld_flg[id] = true
  end
end

#==============================================================================
# ■ Scene_Battle (分割定義 1)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● バトル終了
  #     result : 結果 (0:勝利 1:逃走 2:敗北)
  #--------------------------------------------------------------------------
  alias battle_end_Enemy_HP_Hold battle_end
  def battle_end(result)
    $game_troop.enemies.each do |enemy|
      if enemy.exist? && $game_system.en_hp_hld_flg[enemy.id] == true
        # 逃走した場合、あるいは敗北した場合、現HPを退避する
        $game_system.en_hp_holding[enemy.id] = enemy.hp
      else
        # 戦闘に勝利した場合、HPは最大にリセット
        $game_system.en_hp_holding[enemy.id] = enemy.maxhp
      end
    end
    
    # 元の処理を実施
    battle_end_Enemy_HP_Hold(result)
  end
end

#==============================================================================
# ■ Scene_Battle (分割定義 2)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● フレーム更新 (プレバトルフェーズ)
  #--------------------------------------------------------------------------
  alias update_phase1_Enemy_HP_Hold update_phase1
  def update_phase1
    # エネミーのHPを再設定
    $game_troop.enemies.each do |enemy|
      if enemy.exist? && $game_system.en_hp_hld_flg[enemy.id] == true && 
        $game_system.en_hp_holding[enemy.id].is_a?(Numeric)
        enemy.hp = $game_system.en_hp_holding[enemy.id]
      end
    end
    
    # 元の処理を実施
    update_phase1_Enemy_HP_Hold
  end
end

#==============================================================================
# ■ Interpreter (分割定義 X)
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # ● エネミーのHP保持フラグの設定
  #     id : エネミーのID
  #--------------------------------------------------------------------------
  def set_hp_hold(id)
    if id.is_a?(Numeric)
      $game_system.en_hp_hld_flg[id] = true
    else
      p "数値以外が設定されました"
    end
  end
end

戻る