#==============================================================================
# 「ドロップアイテム拡張」(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