#==============================================================================
#                      「ドロップアイテム拡張」(ACE) Ver.1.0
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇利用規約
#   この素材はフリーゲームにのみご利用頂けます。
#   シェアウェア、販売作品への利用は原則として禁止します。(詳細はブログ参照)
#   利用される場合はスクリプト作成者として「奈々」とURLを明記し
#   配布時にブログで利用規約の確認と、利用報告を行って下さい。
#
#------------------------------------------------------------------------------
#   
#   エネミーのドロップアイテムを拡張します。
#   ・ドロップアイテムを3つ以上設定できるように
#   ・ドロップ率を%指定に変更
#   
#   ドロップアイテムの追加は、データベースの「エネミー」のメモ欄に入力します。
#   
#   <ドロップアイテム id x% n>
#   id:アイテムID(武器1番ならW1、防具3番ならA3、アイテム99番ならI99)
#   x%:入手確率(20%、100%というように%まで記入)
#   n:個数(省略可能)
#   
#   仕様の詳細はブログを参照して下さい。
#   
#==============================================================================

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

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :drop_items_list          # ドロップアイテムのリスト(動的)
  #--------------------------------------------------------------------------
  # ● ドロップアイテムの配列作成
  #    ※denominatorを1/nではなくn%の設定として使用
  #--------------------------------------------------------------------------
  def make_drop_items
    make_drop_items_list.inject([]) do |r, di|
      if di.kind > 0 && rand(100) < di.denominator * drop_item_rate
        r.push(item_object(di.kind, di.data_id))
      else
        r
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● ドロップアイテムのリスト作成
  #--------------------------------------------------------------------------
  def make_drop_items_list
    enemy.drop_items
  end
end

#==============================================================================
# ■ RPG::Enemy
#------------------------------------------------------------------------------
#  敵キャラのデータクラス。
#==============================================================================
class RPG::Enemy < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● ドロップアイテム
  #--------------------------------------------------------------------------
  def drop_items
    @drop_items + added_drop_items
  end
  #--------------------------------------------------------------------------
  # ● 追加のドロップアイテム
  #--------------------------------------------------------------------------
  def added_drop_items
    list = []
    self.note.each_line do |line|
      if line[/<\s*ドロップアイテム\s+(\w)\s*(\d+)\s+(\d+)%\s*(\d+|)>/]
        di = RPG::Enemy::DropItem.new
        di.kind = 1 if $1 == ("I" || "i")
        di.kind = 2 if $1 == ("W" || "w")
        di.kind = 3 if $1 == ("A" || "a")
        di.data_id = $2.to_i
        di.denominator = $3.to_i
        
        $4 == "" ? n = 1 : n = $4.to_i
        if n == 0
          n = 1
          di.unique = true
        end
        n.times{list.push(di)}
      end
    end
    return list
  end
end

#==============================================================================
# ■ RPG::Enemy::DropItem
#------------------------------------------------------------------------------
#  敵キャラの [ドロップアイテム] のデータクラス。
#==============================================================================
class RPG::Enemy::DropItem
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :unique
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias n7dia_initialize initialize
  def initialize
    n7dia_initialize
    @unique = false
  end
end