#============================================================================== # ■ RGSS2 KGC_UsableEquipment拡張 # 状況別使用可否・使用時破損装備 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 戦闘時にしか使えなかった使用効果つき装備品が # 非戦闘時も使用できるようになります。 # また、状況別に使用可否を設定したり # 使用時に破損する装備品及び、破損率の設定が個別に行えるようになります。 #------------------------------------------------------------------------------ # 以下、全て使用効果を付与した装備品のメモ欄に設定 # # <戦闘時使用禁止> # 戦闘時に使用できなくなる。 # # <メニュー使用禁止> # メニュー画面で使用できなくなる。 # # <使用時破損率:50> # 50%の確率で使用時に破損する。 # #============================================================================== module EQ_CONS #戦闘時使用禁止にする場合のキーワード設定(変更不要) WORD1 = "<戦闘時使用禁止>" #メニュー画面で使用禁止にする場合のキーワード設定(変更不要) WORD2 = "<メニュー使用禁止>" #使用時の破損率設定用キーワード設定(変更不要) BREAK_RATE = "使用時破損率" #戦闘中、破損した場合にメッセージを表示するか?(true 表示/false 非表示) BM = true end module Vocab #戦闘中、破損した場合にメッセージ BreakItem = "%sは砕け散った!!" end class RPG::BaseItem attr_accessor :eq_cons #-------------------------------------------------------------------------- # ○ 戦闘時使用可否 #-------------------------------------------------------------------------- def battle_ok? return false if item_id == 0 or @note.include?(EQ_CONS::WORD1) return item.battle_ok? end #-------------------------------------------------------------------------- # ○ メニュー画面使用可否 #-------------------------------------------------------------------------- def menu_ok? return false if item_id == 0 or @note.include?(EQ_CONS::WORD2) return item.menu_ok? end #-------------------------------------------------------------------------- # ○ 特殊装備消費処理用 #-------------------------------------------------------------------------- def eq_cons return nil if @eq_cons == nil return @eq_cons end #-------------------------------------------------------------------------- # ○ 特殊装備消費処理用 #-------------------------------------------------------------------------- def break_rate return @break_rate if @break_rate != nil memo = @note.scan(/<#{EQ_CONS::BREAK_RATE}[::](\S+)>/) memo = memo.flatten if memo != nil && !memo.empty? @break_rate = memo[0].to_i else @break_rate = 0 end return @break_rate end def break_check break_rate if rand(100) < @break_rate return true else return false end end end class Scene_Item < Scene_Base alias determine_item_eq_cons determine_item def determine_item @true_item = @item @item = $data_items[@item.item_id] if @item.item_id != 0 determine_item_eq_cons @item = @true_item @true_item = nil end alias determine_target_eq_cons determine_target def determine_target @true_item = @item @item = $data_items[@item.item_id] if @item.item_id != 0 determine_target_eq_cons @item = @true_item @true_item = nil end alias use_item_nontarget_eq_cons use_item_nontarget def use_item_nontarget use_item_nontarget_eq_cons if @true_item.break_check $game_party.lose_item(@true_item, 1) @item_window.refresh end end end class Scene_Battle < Scene_Base alias execute_action_item_eq_cons execute_action_item def execute_action_item execute_action_item_eq_cons if @active_battler.action.item.eq_cons != nil if @active_battler.action.item.eq_cons.break_check $game_party.lose_item(@active_battler.action.item.eq_cons, 1) if EQ_CONS::BM text = sprintf(Vocab::BreakItem, @active_battler.action.item.name) @message_window.add_instant_text(text) wait(30) end end end end end class Game_BattleAction #-------------------------------------------------------------------------- # ● アイテムオブジェクト取得 #-------------------------------------------------------------------------- alias item_KGC_UsableEquipment2 item def item if use_equipment? && @use_equipment.note.include?(EQ_CONS::BREAK_RATE) source_item = $data_items[@use_equipment.item_id].clone source_item.name = @use_equipment.name source_item.consumable = false source_item.eq_cons = @use_equipment return source_item end return item_KGC_UsableEquipment2 end end