#==============================================================================
#                      「エネミー戦闘行動のAI化」(ACE) Ver.1.0
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇利用規約
#   この素材はフリーゲームにのみご利用頂けます。
#   シェアウェア、販売作品への利用は原則として禁止します。(詳細はブログ参照)
#   利用される場合はスクリプト作成者として「奈々」とURLを明記し
#   配布時にブログで利用規約の確認と、利用報告を行って下さい。
#
#------------------------------------------------------------------------------
#   
#   エネミーの戦闘行動を、従来の「行動リストからランダム選択する」方式から
#   行動リストを習得スキルとして「状況に応じたスキルを使う」方式に変更します。
#   
#   AIの仕組みはアクターの自動戦闘と同一です。(習得スキル+通常攻撃)
#   行動リストの優先度は無効ですが、それ以外の条件はそのまま適用されます。
#   
#   導入するだけでAI化しますが、以下のタグを付けることで従来方式に戻せます。
#   
#   <戦闘行動をAI化しない>
#   
#==============================================================================

#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
#  敵キャラを扱うクラスです。このクラスは Game_Troop クラス($game_troop)の
# 内部で使用されます。
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● 戦闘行動の作成
  #--------------------------------------------------------------------------
  alias n7eai_make_actions make_actions
  def make_actions
    if enemy.note.include?("<戦闘行動をAI化しない>")
      n7eai_make_actions
    else
      super
      make_auto_battle_actions
    end
  end
  #--------------------------------------------------------------------------
  # ● 自動戦闘時の戦闘行動を作成
  # 追加メソッド、AIスクリプトはこちらを上書きする
  #--------------------------------------------------------------------------
  def make_auto_battle_actions
    @actions.size.times do |i|
      @actions[i] = make_action_list.max {|action| action.value }
    end
  end
  #--------------------------------------------------------------------------
  # ● 自動戦闘用の行動候補リストを作成
  # 追加メソッド、Lvスクリプトはこちらを上書きする
  #--------------------------------------------------------------------------
  def make_action_list
    list = []
    list.push(Game_Action.new(self).set_attack.evaluate)
    action_list = enemy.actions.select {|a| action_valid?(a) }
    action_list.each do |act|
      list.push(Game_Action.new(self).set_skill(act.skill_id).evaluate)
    end
    list
  end
end