#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ 드롭 아이템 확장 - KGC_ExtraDropItem ◆ VX ◆
#_/    ◇ Last update : 2012/02/24 ◇
#_/----------------------------------------------------------------------------
#_/  적이 떨어뜨리는 아이템의 종류를 늘립니다.
#_/============================================================================
#_/ 【특수 시스템】≪전투 난이도≫ 보다 위에 도입해 주세요.
#_/ 【메뉴】≪몬스터 도감≫ 보다 아래에 도입해 주세요.
#_/  ※ 사용 방법
#_/  메모 칸에 [드롭 타입:ID 확률]을 적어 주세요.
#_/  [타입]에는 아이템 = I(Item) 무기 = W(Weapon) 방어구 = A(Armor)
#_/  [ID]에는 적이 떨어뜨리는 아이템/무기/방어구의 ID를 기입해 주세요.
#_/  [확률]엔 아이템을 떨어뜨리는 확률을 지정합니다. n으로 하면 1/n확률입니다.
#_/  [확률]에 %를 붙이면, 드롭율을 백분율로 지정할 수 있습니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
$imported = {} if $imported == nil
$imported["ExtraDropItem"] = true
module KGC
module ExtraDropItem
  # 정규 표현
  module Regexp
    # 에너미
    module Enemy
      # 드롭 아이템
      DROP_ITEM = /<(?:DROP|드롭)\s*([IWA]):(\d+)\s+(\d+)([%%])?>/i
    end
  end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Enemy
#==============================================================================
class RPG::Enemy
  #--------------------------------------------------------------------------
  # ○ 드롭 아이템 확장의 캐쉬 생성
  #--------------------------------------------------------------------------
  def create_extra_drop_item_cache
    @__extra_drop_items = []
    self.note.each_line { |line|
      case line
      when KGC::ExtraDropItem::Regexp::Enemy::DROP_ITEM
        # 드롭 아이템
        item = RPG::Enemy::DropItem.new
        case $1.upcase
        when "I"  # 아이템
          item.kind = 1
          item.item_id = $2.to_i
        when "W"  # 무기
          item.kind = 2
          item.weapon_id = $2.to_i
        when "A"  # 방어구
          item.kind = 3
          item.armor_id = $2.to_i
        else
          next
        end
        # 드롭율
        if $4 != nil
          item.drop_prob = $3.to_i
        else
          item.denominator = $3.to_i
        end
        @__extra_drop_items << item
      end
    }
  end
  #--------------------------------------------------------------------------
  # ○ 확장 드롭 아이템
  #--------------------------------------------------------------------------
  def extra_drop_items
    create_extra_drop_item_cache if @__extra_drop_items == nil
    return @__extra_drop_items
  end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Enemy::DropItem
#==============================================================================
unless $@
class RPG::Enemy::DropItem
  #--------------------------------------------------------------------------
  # ● 공개 인스턴스 변수
  #--------------------------------------------------------------------------
  attr_writer   :drop_prob                # 드롭율
  #--------------------------------------------------------------------------
  # ○ 드롭율 취득
  #--------------------------------------------------------------------------
  def drop_prob
    @drop_prob = 0 if @drop_prob == nil
    return @drop_prob
  end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ○ 확장 드롭 아이템의 취득
  #--------------------------------------------------------------------------
  def extra_drop_items
    return enemy.extra_drop_items
  end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Troop
#==============================================================================
class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # ● 드롭 아이템의 배열 작성
  #--------------------------------------------------------------------------
  alias make_drop_items_KGC_ExtraDropItem make_drop_items
  def make_drop_items
    drop_items = make_drop_items_KGC_ExtraDropItem
    dead_members.each { |enemy|
      enemy.extra_drop_items.each_with_index { |di, i|
        next if di.kind == 0
        if di.drop_prob > 0
          # 확률 지정
          next if di.drop_prob < rand(100)
        else
          # 분모 지정
          next if rand(di.denominator) != 0
        end
        if di.kind == 1
          drop_items.push($data_items[di.item_id])
        elsif di.kind == 2
          drop_items.push($data_weapons[di.weapon_id])
        elsif di.kind == 3
          drop_items.push($data_armors[di.armor_id])
        end
        # 드롭이 끝난 플래그를 세트
        if $imported["EnemyGuide"]
          KGC::Commands.set_enemy_item_dropped(enemy.enemy.id, i + 2)
        end
      }
    }
    return drop_items
  end
end
사용법은 주석을 참고하시길^^