#============================================================================== # ■ VXAce-RGSS3-34 解体屋 [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # ・武器/防具を解体して、素材(アイテム)を得ることができます。 #------------------------------------------------------------------------------ # ★解体屋の呼び出し方 # イベントスクリプトから SceneManager.call(Scene_Dismantle) #------------------------------------------------------------------------------ # ●解体情報の表示許可 # - 武器 : $game_system.dismantle.w[武器id] = true # - 防具 : $game_system.dismantle.a[防具id] = true #============================================================================== module Dismantle ### 設 定 ###################################################################### # 解体屋コマンド # 0:武器の解体 1:防具の解体 2:武器・防具の解体 3:店を出る COMMAND = [0, 1, 3] # 成功時のSE(nilならショップSE) SUCCESS_SE = RPG::SE.new("Sword2", 100, 100) # メッセージ表示 MESSAGE = true # 武器の解体設定 WEAPON = { # 武器ID => [解体料金, [[入手アイテムID, 入手個数], …], 初期表示(省略時:true)] 1 => [10, [[1,10]]], 2 => [300, [[2,2]], false], 3 => [1500, [[1,1], [2,1]]] } # 防具の解体設定 ARMOR = { # 防具ID => [解体料金, [[入手アイテムID, 入手個数], …], 初期表示(省略時:true)] 1 => [20, [[3,2]]], 2 => [400, [[4,1], [5,1], [6,2]]], 3 => [2800, [[7,3], [8,1]], false] } ################################################################################ #-------------------------------------------------------------------------- # ● コマンドリスト #-------------------------------------------------------------------------- def self.command text = ["#{$data_system.terms.etypes[0]}の解体", "防具の解体", "#{$data_system.terms.etypes[0]}・防具の解体", "やめる"] sym = [:weapon, :armor, :all, :exit] COMMAND.collect {|c| [text[c], sym[c], c] } end end #============================================================================== # ■ Game_System #============================================================================== class Game_System #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :dismantle # 解体情報 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_dismantle initialize def initialize initialize_dismantle @dismantle = Game_Dismantle.new end end #============================================================================== # ■ Game_Dismantle : 解体情報クラス $game_system.dismantle で参照可能 #============================================================================== class Game_Dismantle attr_reader :w # 武器解体情報 attr_reader :a # 防具解体情報 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize @w = DataDismantle.new @a = DataDismantle.new reset end #-------------------------------------------------------------------------- # ● 初期化 #-------------------------------------------------------------------------- def reset @w.reset @a.reset Dismantle::WEAPON.each {|k, val| @w[k] = true if check(val[2]) } Dismantle::ARMOR.each {|k, val| @a[k] = true if check(val[2]) } end def check(v) v.nil? ? true : v end #-------------------------------------------------------------------------- # ● 解体可能な武器・防具取得 #-------------------------------------------------------------------------- def weapons $game_party.weapons.select {|w| enable?(w.id, @w, Dismantle::WEAPON)} end def armors $game_party.armors.select {|a| enable?(a.id, @a, Dismantle::ARMOR)} end def enable?(id, val, ary) val[id] && !ary[id].nil? end #============================================================================ # ■ DataDismantle : 解体情報クラス #============================================================================ class DataDismantle #------------------------------------------------------------------------ # ● オブジェクト初期化 #------------------------------------------------------------------------ def initialize reset end #------------------------------------------------------------------------ # ● 初期化 #------------------------------------------------------------------------ def reset @data = {} end #------------------------------------------------------------------------ # ● 情報取得 #------------------------------------------------------------------------ def [](id) @data[id] || false end #------------------------------------------------------------------------ # ● 情報設定 # value : ON (true) / OFF (false) #------------------------------------------------------------------------ def []=(id, value) @data[id] = value end end end