#============================================================================== # ■ 基本クラス #============================================================================== # モード module BS_MODE BS_M_WEAPON = 0 BS_M_ARMOR1 = 1 BS_M_ARMOR2 = 2 BS_M_ARMOR3 = 3 BS_M_ARMOR4 = 4 end # 条件クラス class BlacksmithCondition attr_reader :type # 条件種別 attr_reader :id # 条件ID attr_reader :num # 条件値 def initialize(prm) @type = prm[0] @id = prm[1] @num = prm[2] end end # 個別データクラス class Blacksmith include BlacksmithSetting include BS_MODE attr_reader :cur_w_id # 装備中アイテム attr_reader :price # 価格 attr_reader :next_w_id # 錬成アイテム attr_reader :prm # 条件パラメータ #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(w_a_id, mode, setting) @cur_w_id = w_a_id @mode = mode @price = setting[0] @prm = [] for pp in setting[1] @prm.push(BlacksmithCondition.new(pp)) end @next_w_id = setting[2] judgement # リスト作成時に判定する end #-------------------------------------------------------------------------- # ● 鍛冶可否判定 #-------------------------------------------------------------------------- def judgement # 設定なし return false if @prm.empty? # 付属条件 for state in @prm @reason = state.type case state.type when C_NON # 条件:なし when C_ITEM_G # 条件:アイテム(鍛冶成功後:消費する) # 条件にあったアイテムを持っているか? return false if $game_party.item_number(state.id) < state.num when C_ITEM_H # 条件:アイテム(鍛冶成功後:消費しない) # 条件にあったアイテムを持っているか? return false if $game_party.item_number(state.id) < state.num when C_SW # 条件:特定スイッチがON # 条件にあったSWがONになっているか? return false unless $game_switches[state.id] when C_VA # 条件:特定変数 # 条件にあった変数が規定値以上になっているか? return false if $game_variables[state.id] < state.num else p "BLACKSMITH : 条件設定エラー" return false end end # お金 @reason = C_PRICE return false if @price > $game_party.gold @reason = C_NON return true # 条件クリア end #-------------------------------------------------------------------------- # ● 可否判定結果 #-------------------------------------------------------------------------- def judge_result return (@reason == C_NON) end #-------------------------------------------------------------------------- # ● 鍛冶実行 #-------------------------------------------------------------------------- def execute $game_party.lose_gold(@price) for state in @prm case state.type when C_ITEM_G # レベル上昇条件:アイテム(鍛冶成功後:消費する) $game_party.lose_item(state.id, state.num) end end return @next_w_id end #-------------------------------------------------------------------------- # ● 表示OKか? #-------------------------------------------------------------------------- def visible? return (@reason != C_SW and @reason != C_VA) end #-------------------------------------------------------------------------- # ● リストのアイテムデータ #-------------------------------------------------------------------------- def next_item if @mode == BS_M_WEAPON return $data_weapons[next_w_id] else return $data_armors[next_w_id] end end end # 武器リストクラス class BlacksmithList include BlacksmithSetting include BS_MODE attr_reader :list #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(id, mode) @mode = mode setting = @mode == BS_M_WEAPON ? BS_WEAPON : BS_ARMOR @list = [] return if setting.nil? or setting.empty? or setting[id].nil? for pp in setting[id] data = Blacksmith.new(id, mode, pp) next if !SHOW_DISABLE and !data.visible? # 表示許可のないものを含める? @list.push(data) end end #-------------------------------------------------------------------------- # ● リスト数 #-------------------------------------------------------------------------- def size return @list.size end #-------------------------------------------------------------------------- # ● リストdata取得 #-------------------------------------------------------------------------- def [](index) return @list[index] end end #============================================================================== # ■ VirtualEquip #------------------------------------------------------------------------------ # 仮想装備クラス。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 仮想装備時の能力値取得 #-------------------------------------------------------------------------- def v_equip(type, equip_id, prm) case type # 仮想装備にする when 0; tmp_id = @weapon_id; @weapon_id = equip_id when 1; tmp_id = @armor1_id; @armor1_id = equip_id when 2; tmp_id = @armor2_id; @armor2_id = equip_id when 3; tmp_id = @armor3_id; @armor3_id = equip_id when 4; tmp_id = @armor4_id; @armor4_id = equip_id end case prm # 仮想装備時のパラメータ when 0; ret_prm = atk when 1; ret_prm = pdef when 2; ret_prm = mdef when 3; ret_prm = str when 4; ret_prm = dex when 5; ret_prm = agi when 6; ret_prm = int when 7; ret_prm = eva end case type # 仮想装備を戻す when 0; @weapon_id = tmp_id when 1; @armor1_id = tmp_id when 2; @armor2_id = tmp_id when 3; @armor3_id = tmp_id when 4; @armor4_id = tmp_id end return ret_prm end end class VirtualEquip #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(actor, i_type, equip_item) @actor = actor @i_type = i_type @id = equip_item.nil? ? 0 : equip_item.id end #-------------------------------------------------------------------------- # ● 仮想装備時の能力値取得 #-------------------------------------------------------------------------- def param(type) return @actor.v_equip(@i_type, @id, type) end #-------------------------------------------------------------------------- # ● 攻撃力の取得 #-------------------------------------------------------------------------- def atk return param(0) end #-------------------------------------------------------------------------- # ● 物理防御の取得 #-------------------------------------------------------------------------- def pdef return param(1) end #-------------------------------------------------------------------------- # ● 魔法防御の取得 #-------------------------------------------------------------------------- def mdef return param(2) end #-------------------------------------------------------------------------- # ● 腕力の取得 #-------------------------------------------------------------------------- def str return param(3) end #-------------------------------------------------------------------------- # ● 器用さの取得 #-------------------------------------------------------------------------- def dex return param(4) end #-------------------------------------------------------------------------- # ● 素早さの取得 #-------------------------------------------------------------------------- def agi return param(5) end #-------------------------------------------------------------------------- # ● 魔力の取得 #-------------------------------------------------------------------------- def int return param(6) end #-------------------------------------------------------------------------- # ● 回避修正の取得 #-------------------------------------------------------------------------- def eva return param(7) end end