#============================================================================== # 「アイテム入手率拡張」(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