#==============================================================================
#                      「アイテム入手率拡張」(ACE) Ver.1.0
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇利用規約
#   この素材はフリーゲームにのみご利用頂けます。
#   シェアウェア、販売作品への利用は原則として禁止します。(詳細はブログ参照)
#   利用される場合はスクリプト作成者として「奈々」とURLを明記し
#   配布時にブログで利用規約の確認と、利用報告を行って下さい。
#
#------------------------------------------------------------------------------
#   
#   ※前提スクリプトとして「ドロップアイテム拡張(ver1.0〜)」が必要です。
#   「アイテム入手率」を拡張します。
#   ・タグによって%で細かく設定できるように
#   ・「アイテム入手率二倍」の特徴を、入手数(判定)2倍に変更
#   
#   データベースの「アクター、職業、ステート、装備品、スキル」のメモ欄に入力します。
#   
#   <アイテム入手率 n%>
#   
#   入手率を全て乗算した割合が、ベースのドロップ確率に掛かります。
#   
#   
#==============================================================================
#初期設定
module Nana
module Dia_R
  
  #「アイテム入手率」を戦闘に参加していないメンバーも含めて適用するかどうか
  ALL_MEMBER = false
  
end
end


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

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● ドロップアイテムのリスト作成
  #--------------------------------------------------------------------------
  alias n7dia_r_make_drop_items_list make_drop_items_list
  def make_drop_items_list
    n7dia_r_make_drop_items_list.inject([]) do |r, di|
      unless di.unique
        r.push(di)
        r.push(di)
      else
        r.push(di)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● ドロップアイテム取得率の倍率を取得
  #--------------------------------------------------------------------------
  def drop_item_rate
    $game_party.drop_item_rate
  end
end

#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
#  パーティを扱うクラスです。所持金やアイテムなどの情報が含まれます。このクラ
# スのインスタンスは $game_party で参照されます。
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● アイテム入手率
  #--------------------------------------------------------------------------
  def drop_item_rate
    if Nana::Dia_R::ALL_MEMBER
      self.all_members.inject(1) do |dir, member|
        dir *= member.drop_item_rate
      end
    else
      self.battle_members.inject(1) do |dir, member|
        dir *= member.drop_item_rate
      end
    end
  end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● アイテム入手率
  #--------------------------------------------------------------------------
  def drop_item_rate
    prm = self.actor.drop_item_rate
    prm *= self.class.drop_item_rate
    self.equips.each do |equip|
      next unless equip
      prm *= equip.drop_item_rate
    end
    self.states.each do |state|
      prm *= state.drop_item_rate
    end
    self.skills.each do |skill|
      prm *= skill.drop_item_rate
    end
    return prm
  end
end

#==============================================================================
# ■ RPG::BaseItem
#------------------------------------------------------------------------------
#  アクター、職業、スキル、アイテム、武器、防具、敵キャラ、およびステートのスーパークラス。
#==============================================================================
class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● アイテム入手率
  #--------------------------------------------------------------------------
  def drop_item_rate
    prm = 1
    @note.scan(/<\s*アイテム入手率\s*(\d+)%\s*>/) {|s| prm *= ($1.to_i / 100) if $1}
    return prm
  end
end