#==============================================================================
#                     「最強装備拡張」(ACE) ver.1.3
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
#   その場合も元のスクリプトの作成者として名前は載せて下さい。
#   その他、詳しい利用規約はブログを参照して下さい。
#
#------------------------------------------------------------------------------
#
#   「最強装備」を選ぶための装備評価を自由に設定できるようになります。
#   
#   ◇アクター・職業
#   メモ欄に<装備評価タイプ x>と書きます。
#   職業が優先され、どちらも無記入ならタイプ0扱いです。
#   
#   ◇武器・防具
#   メモ欄に<装備評価 x y>と書きます。(xが違えば複数可)
#   yの値がその装備品の評価となり、最も高いものが最強装備になります。
#   xの値はアクターの持つ装備評価タイプと対応します。
#   対応するタイプがない場合はタイプ0が適用されます。
#   
#   ◇武器・防具(変数での評価)
#   メモ欄に<装備評価変数 x y>と書きます。
#   y番の変数の値がその装備品の評価となります。
#   それ以外は装備評価と全く同じです。
#   
#   ◇その他
#   
#   ・評価を設定していない装備について
#   メモ欄の評価設定が無記入の場合は
#   初期設定のDEFAULT = nで設定した値の評価になります。
#   
#   ・評価が0の装備について
#   評価が0の装備は、装備可能であっても最強装備で選ばれません。
#   これは呪い装備などを再現するためのものです。
#   
#
#==============================================================================
#   ◇初期設定
module Nana_EP
  
  DEFAULT = 1   #評価未設定時の評価
  
end
#   ここまで
#==============================================================================  

#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 装備評価タイプ
  #--------------------------------------------------------------------------
  def ep_type
    return self.class.ep_type if self.class.ep_type
    return actor.ep_type if actor.ep_type
    return 0
  end
  #--------------------------------------------------------------------------
  # ● 最強装備
  #--------------------------------------------------------------------------
  def optimize_equipments
    clear_equipments
    equip_slots.size.times do |i|
      next if !equip_change_ok?(i)
      items = $game_party.equip_items.select do |item|
        item.etype_id == equip_slots[i] &&
        equippable?(item) && item.equip_performance(ep_type) > 0
      end
      change_equip(i, items.max_by {|item| item.equip_performance(ep_type) })
    end
  end
end

class RPG::EquipItem < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● 装備評価
  #--------------------------------------------------------------------------
  def equip_performance(ep_type)
    list = []
    @note.scan(/<装備評価\s?(\d+)\s?(\d+)>/){|s|
      list[$1.to_i] = $2.to_i
    }
    @note.scan(/<装備評価変数\s?(\d+)\s?(\d+)>/){|s|
      list[$1.to_i] = $game_variables[$2.to_i]
    }
    return list[ep_type] ? list[ep_type] : (list[0] ? list[0] : Nana_EP::DEFAULT)
  end
end
class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● 装備評価タイプ
  #--------------------------------------------------------------------------
  def ep_type
    @note.scan(/<装備評価タイプ\s?(\d+)>/)
    return $1 ? $1.to_i : nil
  end
end