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