设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1451|回复: 4
打印 上一主题 下一主题

[已经过期] 请问这个耐久度的脚本怎样设置数值(比如耐久度100)?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3642
在线时间
912 小时
注册时间
2017-1-19
帖子
269
跳转到指定楼层
1
发表于 2017-11-25 17:42:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
实在是看不懂来求救  脚本如下:

#==============================================================================
# ■ BMSP 装備耐久度[EQUIPMENTDURABILITY] Ver1.11 2013/11/25
#------------------------------------------------------------------------------
#  装備に耐久度性を導入します.
#==============================================================================
#------------------------------------------------------------------------------
# ■内容
# 装備に耐久度性を導入します.
# 装備の様々な条件で耐久度を変更させたり,
# 耐久度によって装備の性能を変動させることができます.
#
# 位置:「BMSP ダメージイベント」より下
#       「BMSP アイテムセグメント」より下
#       「BMSP 装備強化システム」より下
#       「BMSP ショップアイテム試着」より上
#
# ■必須
# 「BMSP アイテムセグメントver1.12以上」が必須です.
#
# ■併用
# 「BMSP ダメージイベントver1.02以上」と併用することで戦闘時に装備の耐久度を
#  様々な条件で自動的に変動させることができます.
#
# ■使用方法
# スクリプトに丸ごと貼り付けていただければ使用できます。
#
# 装備修理画面を呼び出すことで,装備の修理を行うことができます.
# 装備修理画面を呼び出すにはマップ画面でイベントのスクリプトから
#   ED.call_repair_equipment
# を実行します.
# デフォルトでは修理にお金を消費しますが,引数に整数を渡すことでそのIDに対応する
# 変数の値を消費して修理することができます.
# 例・変数001を消費して装備を修理する
#   ED.call_repair_equipment(1)
# また,耐久度を変化させた武器,防具の入手についてはイベントのスクリプトから
#   ED.gain_durability_eapon(id, durability, amount)
#   ED.gain_durability_armor(id, durability, amount)
# を実行します.装備のID,設定耐久度,入手個数を引数に指定します.
#
# 詳細設定にて装備耐久度の設定を行うことができます.
# ○ENABLE_DURABILITY : 装備の耐久度が有効かどうかのデフォルトの設定です.
#
# 以下の設定では耐久度によるアイテムの性能を求めるための式を設定します.
# evalで評価されるためRubyの通常の式を描くことができます・
# このとき,対象の装備のパラメータを参照することができます.
# ・dur     :アイテムの現在の耐久度
# ・mdur    :アイテムの最大耐久度
# ・price   :オリジナルのアイテムの価格
# ・atk     :オリジナルのアイテムの攻撃力の上昇値
# ・_def    :オリジナルのアイテムの防御力の上昇値
# ・mat     :オリジナルのアイテムの魔法力の上昇値
# ・mdf     :オリジナルのアイテムの魔法防御力の上昇値
# ・agi     :オリジナルのアイテムの敏捷性の上昇値
# ・luk     :オリジナルのアイテムの運の上昇値
# ・mhp     :オリジナルのアイテムの最大HPの上昇値
# ・mmp     :オリジナルのアイテムの最大MPの上昇値
# ・etype_id:アイテムの装備タイプID
# ・id      :アイテムのid
# ○REPAIR_PRICE : 装備修理にかかる費用の式(お金の時)
# ○REPAIR_POINT : 装備修理にかかる費用の式(変数の時)
# ○PRICE:装備の価格の式
# ○SUC:修理成功率の式
# ○ATK:攻撃力上昇値の式
# ○DEF:防御力上昇値の式
# ○MAT:魔法力上昇値の式
# ○MDF:魔法防御力上昇値の式
# ○AGI:敏捷性上昇値の式
# ○LUK:運上昇値の式
# ○MHP:最大HP上昇値の式
# ○MMP:最大MP上昇値の式
#
# ○DEFAULT_DURABILITY:耐久度の初期値
# ○MAX_DURABILITY:最大耐久度
# ○REPAIR_DURABILITY:修理後の耐久度
# ○DESTROY:trueのとき耐久度が0になると装備が破棄されます
#
# ○PENALTY:修理に失敗したときのペナルティを設定します.
# ペナルティには以下の種類から選択します.
#   :none    :ペナルティなし
#  :break   :装備の破壊
#   (自然数) :耐久度が(自然数)になる
#
# ○DISPLAY_SUCCESS:装備修理画面で強化成功率を表示するか
# ○DISPLAY_PENALTY:装備修理画面でペナルティを表示するか
# ○POINT_UNIT:変数を消費して修理する時の通貨単位?です
#  キー:defaultにはデフォルトの単位を指定します.
#   自然数をキーにして単位を設定すると,そのIDの変数を利用する時その単位が表示されます.
# ○BROKEN_MESSAGE:trueのとき戦闘中装備が壊れた旨を表示します
# ○MESSAGE_FMT:装備破壊時に表示されるメッセージです.
#                アクターの名前,装備名が置換される
#
# ○DEGRADE_EXPS:ダメージイベントを利用して耐久度を変動させる場合に使用する耐久度減少式です.
#  任意のキーに対して式を文字列で設定し,装備耐久度イベント内で設定したキーを指定します.
#   このとき,対象の装備のパラメータおよび各種ダメージイベントで参照可能な
#   情報を参照することができます.
# ・dur     :アイテムの現在の耐久度
# ・mdur    :アイテムの最大耐久度
# ・price   :オリジナルのアイテムの価格
# ・atk     :オリジナルのアイテムの攻撃力の上昇値
# ・_def    :オリジナルのアイテムの防御力の上昇値
# ・mat     :オリジナルのアイテムの魔法力の上昇値
# ・mdf     :オリジナルのアイテムの魔法防御力の上昇値
# ・agi     :オリジナルのアイテムの敏捷性の上昇値
# ・luk     :オリジナルのアイテムの運の上昇値
# ・mhp     :オリジナルのアイテムの最大HPの上昇値
# ・mmp     :オリジナルのアイテムの最大MPの上昇値
# ・etype_id:アイテムの装備タイプID
# ・id      :アイテムのid
# ・ダメージイベントの変数(subject, targetなど)
#
# ○DRAW_GAUGE:装備アイコンに耐久度ゲージを描画するか
# ○GAUGE_MAX_DURABILITY:ゲージが最大になる耐久度
#                         装備の最大耐久度より小さくすることで
#                         例えば耐久度120%の装備などを表現することができます.
# ○GAUGE_EDGECOLOR:ゲージの縁の色(nilで描画しない)
# ○GAUGE_BACKCOLOR:ゲージの背景色(nilで描画しない)
# ○GAUGE_COLOR:ゲージの色
# ○GAUGE_MAXCOLOR:ゲージ最大時の色
# ○GAUGE_OVERCOLOR:ゲージ限界突破時の色
# ○BROKENCOLOR:耐久度が0のときの装備名の文字色(nilで変更しない)   
#
# 以下の設定では装備修理画面で鳴らす効果音を指定できます.
# ○REPAIR_SOUND:修理実行時効果音のファイル名
# ○REPAIR_VOLUME:修理実行時効果音のボリューム
# ○REPAIR_PITCH:修理実行時効果音のピッチ
# ○SUCCESS_SOUND:修理成功時効果音のファイル名
# ○SUCCESS_VOLUME:修理成功時効果音のボリューム
# ○SUCCESS_PITCH:修理成功時効果音のピッチ
# ○MISS_SOUND:修理失敗時効果音のファイル名
# ○MISS_VOLUME:修理失敗時効果音のボリューム
# ○MISS_PITCH:修理失敗時効果音のピッチ
#
# また,アイテムのメモ欄にてアイテムごとに耐久度の設定を行うことができます.
#  ==装備耐久度EnableDurability:xxx==
# xxxにtrueかfalseを指定して,耐久度のあるアイテムかどうか設定します.
#   ==装備耐久度RepairPrice:xxx==
# お金による修理費用の式を設定します.
#   ==装備耐久度RepairPoint:xxx==
# 変数による修理費用の式を設定します.
#   ==装備耐久度Price:xxx==
# 価格の式を設定します.
#   ==装備耐久度Success:xxx==
# 修理成功率の式を設定します.
#   ==装備耐久度Atk:xxx==
# 攻撃力の式を設定します.
#   ==装備耐久度Def:xxx==
# 防御力の式を設定します.
#   ==装備耐久度Mat:xxx==
# 魔法力の式を設定します.
#   ==装備耐久度Mdf:xxx==
# 魔法防御の式を設定します.
#   ==装備耐久度Agi:xxx==
# 敏捷性の式を設定します.
#   ==装備耐久度Luk:xxx==
# 運の式を設定します.
#   ==装備耐久度MaxHP:xxx==
# 最大HPの式を設定します.
#   ==装備耐久度MaxMP:xxx==
# 最大MPの式を設定します.
#   ==装備耐久度DefaultDurability:xxx==
# 初期耐久度を設定します.
#   ==装備耐久度MaxDurability:xxx==
# 最大耐久度を設定します.
#   ==装備耐久度RepairDurability:xxx==
# 修理成功時の耐久度を設定します.
#   ==装備耐久度GaugeMax:xxx==
# ゲージの最大耐久度を設定します.
#   ==装備耐久度Destroy:xxx==
# xxxにtrueかfalseを指定して耐久度が0になったとき装備が破棄されるか設定します.
#   ==装備耐久度Penalty:xxx==
# ペナルティを設定します.xxxにはbreak,none,(自然数)のいずれかを指定します.
#
# ● ダメージイベントを利用した耐久度の減少
# 基本的にはダメージイベントのコモンイベントの作り方と同様ですが,
# 以下の点が異なります.
# ・一行目の注釈
#  ==装備耐久度イベント:%types%:%timing%==
# ・条件注釈の最後に耐久度変動注釈を追加
#   耐久度変動#%args%
# %args%は以下のフォーマットで置き換えます.
#   :actor => xxx, :exp => xxx, %オプション% => xxx, ...
# :actorは耐久度の影響を受けるアクター,もしくはアクターの配列を指定します.
# :expはDEGRADE_EXPSのキーを指定します.この式の評価結果の分だけ耐久度が減少します.
# %オプション%は無くても構いませんが,設定するとより影響を受ける装備についてより細かい設定を行うことができます.
# %オプション%には以下の項目があります.
# :slot_idは装備のスロットIDもしくはスロットIDの配列で指定します.
# ここで指定したスロットIDの装備のみ耐久度が変動します.
# 省略すると全てのスロットIDの装備耐久度が減少します.
# :equip_typeは装備タイプIDもしくは装備タイプIDの配列で指定します.
# ここで指定した装備タイプIDの装備のみ耐久度が変動します.
# 省略すると全ての装備タイプIDの装備耐久度が減少します.
# :idは装備のアイテムIDもしくはアイテムIDの配列で指定します.
# ここで設定したアイテムIDの装備の耐久度が変動します.
# 省略すると全てのアイテムIDの装備耐久度が変動します.
#
# 耐久度変動注釈は%args%の途中に改行が入っても構いません.
#
# これらの違い以外はダメージイベントと同じ挙動をするので,
# ダメージイベントの条件注釈および耐久度変動注釈でうまく条件を設定し,
# 装備の耐久度を減少させます.
# 装備耐久度イベントのイベント内容自体も実行されます.
#
# ■注意
# このスクリプトでは
# 「RPG::BaseItem」「RPG::EquipItem」「Game_Actor」「Game_Party」
# 「Scene_Battle」「Window_BattleLog」「Window_Base」「Window_ShopBuy」
# のメソッドを改変しています。
# ■情報
# このスクリプトはgentlawkによって作られたものです。
# 利用規約はhttp://blueredzone.comをご覧ください。
#------------------------------------------------------------------------------
module BMSP
  @@includes ||= {}
  @@includes[:EquipmentDurability] = 1.11
  module EquipmentDurability
    #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
    #詳細設定
    ENABLE_DURABILITY = true # trueのときデフォルトで耐久度がON
    REPAIR_PRICE = "price / 2" # 修理費用式
    REPAIR_POINT = "price / 4" # 変数消費による修理費用式
    PRICE = "price" # 耐久度による価格変動式
    SUC = "100" # 修理成功率式
    ATK = "dur == 0 ? 0 : atk" # 攻撃力変動式
    DEF = "dur == 0 ? 0 : _def" # 防御力変動式
    MAT = "dur == 0 ? 0 : mat" # 魔法力変動式
    MDF = "dur == 0 ? 0 : mdf" # 魔法防御変動式
    AGI = "dur == 0 ? 0 : agi" # 敏捷性変動式
    LUK = "dur == 0 ? 0 : luk" # 運変動式
    MHP = "dur == 0 ? 0 : mhp" # 最大HP変動式
    MMP = "dur == 0 ? 0 : mmp" # 差大MP変動式
    DEFAULT_DURABILITY = 100 # 耐久度の初期値
    MAX_DURABILITY = 100 # 最大耐久度
    REPAIR_DURABILITY = 100 # 修理後の耐久度
    DESTROY = false # trueのとき耐久度が0になると装備が破棄
    PENALTY = 0 # 修理失敗時のペナルティ
                     # :break で装備が破棄
                     # :none でペナルティなし
                     # (自然数) で 指定の耐久度になる
    DISPLAY_SUCCESS = false # 修理成功率を表示するか
    DISPLAY_PENALTY = false # ペナルティを表示するか
   
    POINT_UNIT = {} # 変数による修理の時表示される単位
    POINT_UNIT[:default] = "P" # デフォルトの単位
    POINT_UNIT[1] = "RP" # 変数ID001による修理画面のとき,"RP"と表示
                     
    BROKEN_MESSAGE = true # trueのとき戦闘中装備が壊れた旨を表示
    MESSAGE_FMT = "%s の %s が壊れた!" # 装備破壊時に表示されるメッセージ
                                        # アクターの名前,装備名が置換される
   
    DEGRADE_EXPS = {}
    DEGRADE_EXPS[:weapon] = # 武器の耐久度減少式1
      "1"
    DEGRADE_EXPS[:weapon2] = # 武器の耐久度減少式2(ダメージイベント:HPを想定)
      "target.result.hp_damage < 100 ? 0 : 1" # 与えたダメージが100未満なら耐久度は減らない
    DEGRADE_EXPS[:armor] = # 防具の耐久度減少式1
      "1"
    DEGRADE_EXPS[:armor2] = # 防具の耐久度減少式2(ダメージイベントHPを想定)
      "equip.atype_id == 4 ? 1 : 2" # 防具タイプ4(重装防具)なら耐久度は減りにくい
   
    DRAW_GAUGE = true # 耐久度ゲージを描画するか
    GAUGE_MAX_DURABILITY = 100 # ゲージが最大になる耐久度
    GAUGE_EDGECOLOR = 7 # ゲージの縁の色(nilで描画しない)
    GAUGE_BACKCOLOR = 19 # ゲージの背景色(nilで描画しない)
    GAUGE_COLOR = 3 # ゲージの色
    GAUGE_MAXCOLOR = 1 # ゲージ最大時の色
    GAUGE_OVERCOLOR = 2 # ゲージ限界突破時の色
    BROKENCOLOR = 18 # 耐久度が0のときの装備名の文字色(nilで変更しない)   
   
    # 修理実行時の効果音
    REPAIR_SOUND = "Hammer" # ファイル名
    REPAIR_VOLUME = 80      # ボリューム
    REPAIR_PITCH = 100      # ピッチ
    # 修理成功時の効果音
    SUCCESS_SOUND = "Chime2" # ファイル名
    SUCCESS_VOLUME = 80      # ボリューム
    SUCCESS_PITCH = 100      # ピッチ
    # 強化失敗時の効果音
    MISS_SOUND = "Buzzer2" # ファイル名
    MISS_VOLUME = 80       # ボリューム
    MISS_PITCH = 100       # ピッチ
    #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
    # メモ欄から設定を抽出する正規表現
    MATCH = /==装備耐久度(.+):(.*)==/o
    NAME_LIST = [
      :EnableDurability, :RepairPrice, :RepairPoint,
      :Price, :Success, :Atk, :Def, :Mat, :Mdf, :Agi, :Luk,
      :MaxHP, :MaxMP, :DefaultDurability, :MaxDurability,
      :RepairDurability,:GaugeMax,
      :Destroy, :Penalty
    ]
    #--------------------------------------------------------------------------
    # ● 正規表現とのマッチ
    #--------------------------------------------------------------------------
    def self.match(str)
      data = Hash.new
      NAME_LIST.each{|name| data[name] = nil }
      str.scan(MATCH).each do |name, value|
        symname = name.to_sym
        next unless data.key?(symname)
        case symname
        when :Penalty
          if /\d+/ =~ value
            data[symname] = value.to_u
          elsif /break|none/ =~ value
            data[symname] = value.to_sym
          end
        when :EnableDurability, :Destroy
          data[symname] = Kernel.eval(value) ? true : false
        when :DefaultDurability, :MaxDurability, :RepairDurability, :GaugeMax
          data[symname] = value.to_i
        else
          data[symname] = value
        end
      end
      return data
    end
    #--------------------------------------------------------------------------
    # ● 式の評価の本体
    #--------------------------------------------------------------------------
    def self.eval(exp,dur,mdur,mhp,mmp,atk,_def,mat,mdf,agi,luk,price,etype_id,id)
      Kernel.eval(exp)
    end
    #--------------------------------------------------------------------------
    # ● 装備耐久度の変動
    #--------------------------------------------------------------------------
    def self.degrade_durability(bind, params)
      unless params[:actor] && params[:exp]
        raise ArgumentError, "耐久度変動の必須パラメータがありません."
      end
      actors = params[:actor].is_a?(Array) ? params[:actor] : [params[:actor]]
      if params[:slot_id]
        slot_id = params[:slot_id].is_a?(Array) ? params[:slot_id] : [params[:slot_id]]
      else
        slot_id = false
      end
      if params[:equip_type]
        equip_type = params[:equip_type].is_a?(Array) ? params[:equip_type] : [params[:equip_type]]
      else
        equip_type = false
      end
      if params[:id]
        id = params[:id].is_a?(Array) ? params[:id] : [params[:id]]
      else
        id = false
      end
      actors.each do |actor|
        next unless actor.actor?
        actor.degrade_durability(DEGRADE_EXPS[params[:exp]], bind, slot_id, equip_type, id)
      end
    end
    #--------------------------------------------------------------------------
    # ● 装備破壊メッセージバッファの初期化
    #--------------------------------------------------------------------------
    def self.init_message_buffer
      @message_buffer = []
    end
    #--------------------------------------------------------------------------
    # ● 装備破壊メッセージの取得
    #--------------------------------------------------------------------------
    def self.get_message
      return nil unless @message_buffer
      @message_buffer.shift
    end
    #--------------------------------------------------------------------------
    # ● 装備破壊メッセージの追加
    #--------------------------------------------------------------------------
    def self.push_message(message)
      @message_buffer ||= []
      @message_buffer.push message
    end
    #--------------------------------------------------------------------------
    # ● 導入スクリプトの例外クラス
    #--------------------------------------------------------------------------
    class REQUIRE < StandardError
    end
  end
  #--------------------------------------------------------------------------
  # ● 必須スクリプトのチェック
  #--------------------------------------------------------------------------
  class << self
    if method_defined?(:check_require)
      alias equipmentdurability_check_require check_require
    end
  end
  def self.check_require(require, version)
    if methods.include?(:equipmentdurability_check_require)
      equipmentdurability_check_require(require, version)
    end
    if !@@includes[require]
      message =
        sprintf("BMSPスクリプト%sが導入されていません.\n%s Ver%1.2f以上を導入してください.",
          require,require,version)
      raise EquipmentDurability::REQUIRE, message
    elsif @@includes[require] < version
      message =
        sprintf("BMSPスクリプト%s Ver%1.2fは古いバージョンです.\n%s Ver%1.2f以上を導入してください.",
          require,@@includes[require],require,version)
      raise EquipmentDurability::REQUIRE, message
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 導入スクリプトのチェック
  #--------------------------------------------------------------------------
  def self.check_include(include, version)
    return false unless @@includes[include]
    @@includes[include] >= version
  end
  module Interface
    ::ED = self
    #--------------------------------------------------------------------------
    # ● 耐久度指定武器の追加
    #--------------------------------------------------------------------------
    def self.gain_durability_weapon(id, durability, amount)
      $game_party.gain_durability_weapon(id, durability, amount)
    end
    #--------------------------------------------------------------------------
    # ● 耐久度指定防具の追加
    #--------------------------------------------------------------------------
    def self.gain_durability_armor(id, durability, amount)
      $game_party.gain_durability_armor(id, durability, amount)
    end
    #--------------------------------------------------------------------------
    # ● 装備修理画面の呼び出し
    #--------------------------------------------------------------------------
    def self.call_repair_equipment(point = false)
      return if $game_party.in_battle
      BMSP::Scene_RepairEquipment.point = point
      SceneManager.call(BMSP::Scene_RepairEquipment)
      Fiber.yield
    end
  end
end
BMSP.check_require(:ItemSegment, 1.12)
#==============================================================================
# ■ Sound
#==============================================================================
module Sound
  # 装備強化実行
  def self.play_repair_equipment
    Audio.se_play("Audio/SE/" + BMSP::EquipmentDurability::REPAIR_SOUND,
      BMSP::EquipmentDurability::REPAIR_VOLUME,
      BMSP::EquipmentDurability::REPAIR_PITCH)
    end
  # 装備強化成功
  def self.play_repair_equipment_success
    Audio.se_play("Audio/SE/" + BMSP::EquipmentDurability::SUCCESS_SOUND,
      BMSP::EquipmentDurability::SUCCESS_VOLUME,
      BMSP::EquipmentDurability::SUCCESS_PITCH)
  end
  # 装備強化失敗
  def self.play_repair_equipment_miss
    Audio.se_play("Audio/SE/" + BMSP::EquipmentDurability::MISS_SOUND,
      BMSP::EquipmentDurability::MISS_VOLUME,
      BMSP::EquipmentDurability::MISS_PITCH)
  end
end
#==============================================================================
# ■ BMSP::DamageEvent
#==============================================================================
if BMSP.check_include(:DamageEvent, 1.02)
module BMSP
  module DamageEvent
    #--------------------------------------------------------------------------
    # ● 条件にマッチするコモンイベントを取得
    #--------------------------------------------------------------------------
    instance_eval{ alias bmsp_equipmentdurability_commons commons }
    def self.commons(type, timing, binding)
      commons = bmsp_equipmentdurability_commons(type, timing, binding)
      init_equipmentdurability_commons if @equipmentdurability_commons.nil?
      return commons + @equipmentdurability_commons[type][timing].select{ |common,cond|
        check_condition(cond, binding)
      }.map{|cc| cc.first }
    end
    #--------------------------------------------------------------------------
    # ● 装備耐久度:対象コモンイベントの初期化
    #--------------------------------------------------------------------------
    def self.init_equipmentdurability_commons
      # オリジナルの対象コモンイベントの退避
      original_commons = @commons
      # 初期化
      types = [:counter, :reflection, :substitute, :failure, :critical, :miss, :evasion,
              :hp_damage, :mp_damage, :tp_damage, :added_st, :removed_st]
      @commons = {}
      types.each do |type|
        @commons[type] = {:before=>[], :after=>[]}
      end
      # 一時的に装備耐久度用のチェッカーをバインド
      class << self
        alias original_check_damageevent check_damageevent
        define_method(:check_damageevent, instance_method(:check_equipmentdurability_damageevent))
      end
      # 装備耐久度のダメージイベントを取得
      init_commons
      # チェッカーのバインドを戻す
      class << self
        define_method(:check_damageevent, instance_method(:original_check_damageevent))
        remove_method(:original_check_damageevent)
      end
      # 対象コモンイベントの再配置
      @equipmentdurability_commons = @commons
      @commons = original_commons
    end
    #--------------------------------------------------------------------------
    # ● 装備耐久度:ダメージイベントかチェックして情報を取得
    #--------------------------------------------------------------------------
    def self.check_equipmentdurability_damageevent(common_event)
      list = common_event.list
      index = 0
      return nil if list[index].code != 108 # 注釈じゃない
      define_comment = list[index].parameters[0]
      index += 1
      while list[index].code == 408
        index += 1
      end
      return nil unless define_comment =~ /==装備耐久度イベント:(.+):(表示前|表示後)==/o
      types = $1.split('|')
      timing = $2 == "表示前" ? :before : :after
      # 対象タイプを変換
      types.map!{|type| self.translate_type(type)}.compact!
      return nil if types.empty?
      # 条件文を抽出
      cond = []
      size = -1
      while list[index].code == 108
        size += 1
        line = list[index].parameters[0]
        if line =~ /耐久度変動#(.+)/ # 耐久度変動
          params = $1
          index += 1
          while list[index].code == 408
            params += list[index].parameters[0]
            index += 1
          end
          condition = "BMSP::EquipmentDurability.degrade_durability(binding, #{params})"
          cond[size] = [condition]
        else # 条件文
          cond[size] = [line]
          index += 1
          while list[index].code == 408
            cond[size].push(list[index].parameters[0])
            index += 1
          end
        end
      end
      return types,timing,cond
    end
  end
end
end
#==============================================================================
# ■ BMSP::DurabilityData
#------------------------------------------------------------------------------
#  装備耐久度情報のクラスです.
#==============================================================================
class BMSP::DurabilityData
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :durability # 耐久度
  attr_reader   :max_durability # 最大耐久度
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(data)
    @durability = 0
    ed = BMSP::EquipmentDurability
    @repair_price_exp = data[:RepairPrice] ? data[:RepairPrice] : ed::REPAIR_PRICE
    @repair_point_exp = data[:RepairPoint] ? data[:RepairPoint] : ed::REPAIR_POINT
    @price_exp = data[:Price] ? data[:Price] : ed::PRICE
    @suc_exp = data[:Success] ? data[:Success] : ed::SUC
    @atk_exp = data[:Atk] ? data[:Atk] : ed::ATK
    @def_exp = data[:Def] ? data[:Def] : ed::DEF
    @mat_exp = data[:Mat] ? data[:Mat] : ed::MAT
    @mdf_exp = data[:Mdf] ? data[:Mdf] : ed::MDF
    @agi_exp = data[:Agi] ? data[:Agi] : ed::AGI
    @luk_exp = data[:Luk] ? data[:Luk] : ed::LUK
    @mhp_exp = data[:MaxHP] ? data[:MaxHP] : ed::MHP
    @mmp_exp = data[:MaxMP] ? data[:MaxMP] : ed::MMP
    @default_durability = data[:DefaultDurability] ? data[:DefaultDurability] : ed::DEFAULT_DURABILITY
    @max_durability = data[:MaxDurability] ? data[:MaxDurability] : ed::MAX_DURABILITY
    @repair_durability = data[:RepairDurability] ? data[:RepairDurability] : ed::REPAIR_DURABILITY
    @gauge_max_durability = data[:GaugeMax] ? data[:GaugeMax] : ed::GAUGE_MAX_DURABILITY
    @destroy = data[:Destroy] ? data[:Destroy] : ed::DESTROY
    @penalty = data[:Penalty] ? data[:Penalty] : ed::PENALTY
    @penalty = :break if @destroy && @penalty == 0
    if @destroy && @default_durability == 0 # 最初から壊れているような装備は許可しない
      @max_durability = 1 if @max_durability == 0
      @default_durability = 1
    end
    self.durability = @default_durability
    @params_cache = []
    @price_cache = []
    @repair_price_cache = []
    @repair_point_cache = []
    @success_cache = []
  end
  #--------------------------------------------------------------------------
  # ● 耐久度の設定
  #--------------------------------------------------------------------------
  def durability=(dur)
    # min = @destroy ? 1 : 0
    min = 0
    @durability = [[dur, min].max, @max_durability].min
  end
  #--------------------------------------------------------------------------
  # ● パラメータ式の取得
  #--------------------------------------------------------------------------
  def params_exp
    [
      @mhp_exp, @mmp_exp, @atk_exp, @def_exp,
      @mat_exp, @mdf_exp, @agi_exp, @luk_exp
    ]
  end
  #--------------------------------------------------------------------------
  # ● パラメータの取得
  #--------------------------------------------------------------------------
  def params(item)
    return @params_cache[@durability] if @params_cache[@durability]
    @params_cache[@durability] = params_exp.map{|exp|
      exp_eval(item, exp)
    }
  end
  #--------------------------------------------------------------------------
  # ● 価格の取得
  #--------------------------------------------------------------------------
  def price(item)
    return 0 if item.bmsp_equipmentdurability_price == 0
    return @price_cache[@durability] if @price_cache[@durability]
    @price_cache[@durability] = [exp_eval(item, @price_exp), 1].max
  end
  #--------------------------------------------------------------------------
  # ● 修理価格の取得
  #--------------------------------------------------------------------------
  def repair_price(item)
    return @repair_price_cache[@durability] if @repair_price_cache[@durability]
    @repair_price_cache[@durability] = [exp_eval(item, @repair_price_exp), 0].max
  end
  #--------------------------------------------------------------------------
  # ● 変数修理価格の取得
  #--------------------------------------------------------------------------
  def repair_point(item)
    return @repair_point_cache[@durability] if @repair_point_cache[@durability]
    @repair_point_cache[@durability] = [exp_eval(item, @repair_point_exp), 0].max
  end
  #--------------------------------------------------------------------------
  # ● 成功率の取得
  #--------------------------------------------------------------------------
  def success(item)
    return @success_cache[@durability] if @success_cache[@durability]
    @success_cache[@durability] = [[exp_eval(item, @suc_exp), 0].max, 100].min
  end
  #--------------------------------------------------------------------------
  # ● 各種式の評価
  #--------------------------------------------------------------------------
  def exp_eval(item, exp)
    base_params = item.bmsp_equipmentdurability_params.dup
    price = item.bmsp_equipmentdurability_price
    BMSP::EquipmentDurability.eval(exp,@durability,@max_durability,*base_params,price,item.etype_id,item.id)
  end
  #--------------------------------------------------------------------------
  # ● ゲージ最大値の取得
  #--------------------------------------------------------------------------
  def gauge_max_durability
    @gauge_max_durability
  end
  #--------------------------------------------------------------------------
  # ● ペナルティの取得
  #--------------------------------------------------------------------------
  def penalty
    @penalty
  end
  #--------------------------------------------------------------------------
  # ● 耐久度0で壊れるかどうか
  #--------------------------------------------------------------------------
  def destroy?
    @destroy
  end
  #--------------------------------------------------------------------------
  # ● 修理可能かどうか
  #--------------------------------------------------------------------------
  def repairable?
    @durability < @repair_durability
  end
  #--------------------------------------------------------------------------
  # ● 修理
  #--------------------------------------------------------------------------
  def repair
    self.durability = @repair_durability
  end
  #--------------------------------------------------------------------------
  # ● 修理の実行
  #--------------------------------------------------------------------------
  def execute_repair(item)
    old_dur = self.durability
    if rand(100) < success(item) # 成功
      self.durability = @repair_durability
      return old_dur
    end
    # 失敗
    case @penalty
    when :break # 消失
      # 消失処理は呼び出し元で行う
    when :none # なし
    else # 耐久度指定
      self.durability = @penalty
    end
    return [old_dur, @penalty]
  end
end
#==============================================================================
# ■ BMSP::ItemExtend
#==============================================================================
class BMSP::ItemExtend
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :durability_data # 装備耐久度
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias equipdurability_initialize initialize
  def initialize(item)
    equipdurability_initialize(item)
    init_durability
  end
  #--------------------------------------------------------------------------
  # ● 装備耐久度の初期化
  #--------------------------------------------------------------------------
  def init_durability
    if is_weapon? || is_armor?
      data = BMSP::EquipmentDurability.match(original.note)
      if data[:EnableDurability].nil?
        durability = BMSP::EquipmentDurability::ENABLE_DURABILITY
      else
        durability = data[:EnableDurability]
      end
      @durability_data = durability ? BMSP::DurabilityData.new(data) : nil
    else
      @durability_data = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 耐久度があるかどうか
  #--------------------------------------------------------------------------
  def has_durability?
    extend? && !@durability_data.nil?
  end
end
#==============================================================================
# ■ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● 装備耐久度情報の取得
  #--------------------------------------------------------------------------
  def durability_data
    return nil unless has_durability?
    self.extend.durability_data
  end
  #--------------------------------------------------------------------------
  # ● 装備強化可能かどうか
  #--------------------------------------------------------------------------
  def has_durability?
    extend? && self.extend.has_durability?
  end
end
#==============================================================================
# ■ RPG::EquipItem
#==============================================================================
class RPG::EquipItem
  #--------------------------------------------------------------------------
  # ● パラメータの取得
  #--------------------------------------------------------------------------
  alias bmsp_equipmentdurability_params params
  def params
    return bmsp_equipmentdurability_params unless has_durability?
    durability_data.params(self)
  end
  #--------------------------------------------------------------------------
  # ● 価格の取得
  #--------------------------------------------------------------------------
  alias bmsp_equipmentdurability_price price
  def price
    return bmsp_equipmentdurability_price unless has_durability?
    durability_data.price(self)
  end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 装備耐久度の変動
  #--------------------------------------------------------------------------
  def degrade_durability(exp, bind = binding, slot_id = false, equip_type = false, id = false)
    equips = @equips.dup
    # 装備していないスロットの削除
    equips.map!{|equip| equip.object.nil? ? nil : equip}
    # 装備スロットの限定
    if slot_id
      slot_id.each do |i|
        equips = nil
      end
    end
    # 装備タイプの限定
    if equip_type
      equips.map!{|equip|
        next nil if equip.nil?
        equip_type.include?(equip.object.etype_id) ? equip : nil
      }
    end
    # 装備IDの限定
    if id
      equips.select!{|equip|
        next nil if equip.nil?
        id.include?(equip.object.id) ? equip : nil
      }
    end
    equips.each.with_index do |equipbase, slot|
      next if equipbase.nil?
      equip = equipbase.object
      next unless equip.has_durability?
      # 追加のローカル変数バインド
      $bmsp_equipmentdurability_localvars = {
        :actor => self,
        :equip => equip,
        :dur => equip.durability_data.durability,
        :mdur => equip.durability_data.max_durability,
        :mhp => equip.params[0],
        :mmp => equip.params[1],
        :atk => equip.params[2],
        :_def => equip.params[3],
        :mat => equip.params[4],
        :mdf => equip.params[5],
        :agi => equip.params[6],
        :luk => equip.params[7],
        :price => equip.price,
        :etype_id => equip.etype_id,
        :id => equip.id
      }
      exps = []
      $bmsp_equipmentdurability_localvars.keys.each do |var|
        exps.push("#{var} = $bmsp_equipmentdurability_localvars[:#{var}]")
      end
      exps.push(exp)
      # 評価
      value = bind.eval(exps.join(";"))
      # 変動
      equip.durability_data.durability -= value
      # 破壊の処理
      if equip.durability_data.destroy? && equip.durability_data.durability == 0
        force_change_equip(slot, nil) # 装備の強制解除
        if $game_party.in_battle && BMSP::EquipmentDurability::BROKEN_MESSAGE
          mes = sprintf(BMSP::EquipmentDurability::MESSAGE_FMT, actor.name, equip.name)
          BMSP::EquipmentDurability.push_message(mes)
        end
      end
    end
  end
end
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● 耐久度指定武器の追加
  #--------------------------------------------------------------------------
  def gain_durability_weapon(id, durability, amount)
    item = $data_weapons[id]
    gain_durability_equip(@weapons, item, durability, amount)
  end
  #--------------------------------------------------------------------------
  # ● 耐久度指定防具の追加
  #--------------------------------------------------------------------------
  def gain_durability_armor(id, durability, amount)
    item = $data_armors[id]
    gain_durability_equip(@armors, item, durability, amount)
  end
  #--------------------------------------------------------------------------
  # ● 耐久度指定装備の追加
  #--------------------------------------------------------------------------
  def gain_durability_equip(container, item, durability, amount)
    extenditems = []
    amount.times do
      extend = BMSP::ItemExtend.new(item)
      if extend.has_durability?
        # 最初から壊れていたらそもそも追加しない
        return if extend.durability_data.destroy? && durability == 0
        extend.durability_data.durability = durability
      end
      extenditems.push extend if BMSP::ItemSegmentSystem::NEW_SEGMENT
      gain_extend(container, extend.item, extend) unless BMSP::ItemSegmentSystem::NEW_SEGMENT
    end
    return unless BMSP::ItemSegmentSystem::NEW_SEGMENT
    segments = []
    extenditems.each do |extend|
      if segments.empty?
        segments.push(BMSP::ItemSegment.new(extend))
      elsif !segments.last.push(extend)
        segments.push(BMSP::ItemSegment.new(extend))
      end
    end
    segments.each do |segment|
      gain_segment(container, item, segment)
    end
  end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 戦闘行動の実行
  #--------------------------------------------------------------------------
  alias bmsp_equipmentdurability_execute_action execute_action
  def execute_action
    # 装備破壊メッセージの初期化
    BMSP::EquipmentDurability.init_message_buffer
    bmsp_equipmentdurability_execute_action
    # 装備破壊メッセージの表示
    @log_window.display_equipment_broken
  end
end
#==============================================================================
# ■ Window_BattleLog
#==============================================================================
class Window_BattleLog < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 装備破壊の表示
  #--------------------------------------------------------------------------
  def display_equipment_broken
    while message = BMSP::EquipmentDurability::get_message
      add_text(message)
      wait
    end
  end
end
#==============================================================================
# ■ BMSP::Window_RepairGold
#------------------------------------------------------------------------------
#  装備修理画面で所持金を表示するウィンドウです。
#==============================================================================
class BMSP::Window_RepairGold < Window_Gold
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    return 272
  end
  #--------------------------------------------------------------------------
  # ● 所持金の取得
  #--------------------------------------------------------------------------
  def value
    if BMSP::Scene_RepairEquipment.point # ポイント
      $game_variables[BMSP::Scene_RepairEquipment.point]
    else # お金
      $game_party.gold
    end
  end
  #--------------------------------------------------------------------------
  # ● 通貨単位の取得
  #--------------------------------------------------------------------------
  def currency_unit
    if BMSP::Scene_RepairEquipment.point # ポイント
      unit = BMSP::EquipmentDurability::POINT_UNIT[BMSP::Scene_RepairEquipment.point]
      unit ? unit : BMSP::EquipmentDurability::POINT_UNIT[:default]
    else # お金
      Vocab::currency_unit
    end
  end
end
#==============================================================================
# ■ BMSP::Window_RepairStatus
#------------------------------------------------------------------------------
#  装備強化画面で、アイテムの能力値変化を表示するウィンドウです。
#==============================================================================
class BMSP::Window_RepairStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, height)
    super(x, y, window_width, height)
    @item = nil
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    return 272
  end
  #--------------------------------------------------------------------------
  # ● アイテムの設定
  #--------------------------------------------------------------------------
  def item=(item)
    return if @item == item
    @item = item
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    return if @item.is_a?(Game_Actor)
    return if @item.is_a?(String)
    return if @item.nil? || [email protected]?
    draws = [:durability, :mhp, :mmp, :atk, :def, :mat, :mdf, :agi, :luk]
    draws.push :success if BMSP::EquipmentDurability::DISPLAY_SUCCESS
    draws.push :penalty if BMSP::EquipmentDurability::DISPLAY_PENALTY
    draws.each_with_index do |param, i|
      draw_item(0, i * line_height, param)
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(x, y, param)
    draw_param_name(x + 4, y, param)
    draw_current_param(x + 114, y, param)
    return if param == :success || param == :penalty
    draw_right_arrow(x + 168, y)
    draw_new_param(x + 192, y, param) if @item.durability_data.repairable?
  end
  #--------------------------------------------------------------------------
  # ● 能力値の名前を描画
  #--------------------------------------------------------------------------
  def draw_param_name(x, y, param)
    change_color(system_color)
    label =
    case param
    when :durability then "耐久度"
    when :mhp then Vocab::param(0)
    when :mmp then Vocab::param(1)
    when :atk then Vocab::param(2)
    when :def then Vocab::param(3)
    when :mat then Vocab::param(4)
    when :mdf then Vocab::param(5)
    when :agi then Vocab::param(6)
    when :luk then Vocab::param(7)
    when :success then "成功率"
    when :penalty then "ペナルティ"
    end
    draw_text(x, y, 100, line_height, label)
  end
  #--------------------------------------------------------------------------
  # ● 現在の能力値を描画
  #--------------------------------------------------------------------------
  def draw_current_param(x, y, param)
    durability_data = @item.durability_data
    change_color(normal_color)
    durability = durability_data.durability
    case param
    when :durability then draw_text(x, y, 48, line_height, durability.to_s, 2)
    when :mhp then draw_text(x, y, 48, line_height, durability_data.params(@item)[0], 2)
    when :mmp then draw_text(x, y, 48, line_height, durability_data.params(@item)[1], 2)
    when :atk then draw_text(x, y, 48, line_height, durability_data.params(@item)[2], 2)
    when :def then draw_text(x, y, 48, line_height, durability_data.params(@item)[3], 2)
    when :mat then draw_text(x, y, 48, line_height, durability_data.params(@item)[4], 2)
    when :mdf then draw_text(x, y, 48, line_height, durability_data.params(@item)[5], 2)
    when :agi then draw_text(x, y, 48, line_height, durability_data.params(@item)[6], 2)
    when :luk then draw_text(x, y, 48, line_height, durability_data.params(@item)[7], 2)
    when :success then
      success = durability_data.success(@item)
      draw_text(x, y, 126, line_height, success, 2)
    when :penalty then
      case pena = durability_data.penalty
      when :break
        penalty = "破壊"
      when :none
        penalty = "なし"
      else
        penalty = "耐久度が#{pena}に"
      end
      # penalty = "" if forgedata.maxlevel?
      draw_text(x, y, 126, line_height, penalty, 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 右向き矢印を描画
  #--------------------------------------------------------------------------
  def draw_right_arrow(x, y)
    change_color(system_color)
    draw_text(x, y, 22, line_height, "→", 1)
  end
  #--------------------------------------------------------------------------
  # ● 装備修理後の能力値を描画
  #--------------------------------------------------------------------------
  def draw_new_param(x, y, param)
    durability_data = @item.durability_data
    repair_data = durability_data.dup
    repair_data.repair
    new_value, old_value =
    case param
    when :durability
      [repair_data.durability,durability_data.durability]
    when :mhp
      [repair_data.params(@item)[0], durability_data.params(@item)[0]]
    when :mmp
      [repair_data.params(@item)[1], durability_data.params(@item)[1]]
    when :atk
      [repair_data.params(@item)[2], durability_data.params(@item)[2]]
    when :def
      [repair_data.params(@item)[3], durability_data.params(@item)[3]]
    when :mat
      [repair_data.params(@item)[4], durability_data.params(@item)[4]]
    when :mdf
      [repair_data.params(@item)[5], durability_data.params(@item)[5]]
    when :agi
      [repair_data.params(@item)[6], durability_data.params(@item)[6]]
    when :luk
      [repair_data.params(@item)[7], durability_data.params(@item)[7]]
    else
      return
    end
    change_color(param_change_color(new_value - old_value))
    draw_text(x, y, 48, line_height, new_value, 2)
  end
end
#==============================================================================
# ■ BMSP::Window_RepairCommand
#==============================================================================
class BMSP::Window_RepairCommand < Window_HorzCommand
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, width)
    @window_width = width
    super(x, y)
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    @window_width
  end
  #--------------------------------------------------------------------------
  # ● 桁数の取得
  #--------------------------------------------------------------------------
  def col_max
    return 2
  end
  #--------------------------------------------------------------------------
  # ● コマンドリストの作成
  #--------------------------------------------------------------------------
  def make_command_list
    enable = @item_window ? !@item_window.repairable_equips.empty? : false
    add_command("個別修理", :select)
    add_command("一括修理", :all, enable)
  end
  #--------------------------------------------------------------------------
  # ● アイテムウインドウの設定
  #--------------------------------------------------------------------------
  def item_window=(item_window)
    @item_window = item_window
  end
end
#==============================================================================
# ■ BMSP::Window_RepairList
#------------------------------------------------------------------------------
#  装備修理画面で、装備アイテムの一覧を表示するウィンドウです。
#==============================================================================
class BMSP::Window_RepairList < Window_ItemList
  #--------------------------------------------------------------------------
  # ● ステータスウインドウの設定
  #--------------------------------------------------------------------------
  def status_window=(window)
    @status_window = window
  end
  #--------------------------------------------------------------------------
  # ● 桁数の取得
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # ● アイテムリストの作成
  #--------------------------------------------------------------------------
  def make_item_list
    @data = []
    @equip_data = {}
    $game_party.members.each do |actor|
      item_actor = actor.dup
      def item_actor.description
        "#{self.name}の装備品です。"
      end
      @data.push item_actor
      equips = actor.equips
      equips.each.with_index do |equip, slot_id|
        @equip_data[equip] = [actor, slot_id]
      end
      @data.concat equips.compact
    end
    label = "所持装備アイテム"
    def label.description
      "所持している装備品です。"
    end
    @data.push label
    @data.concat $game_party.equip_items
  end
  #--------------------------------------------------------------------------
  # ● アイテムを許可状態で表示するかどうか
  #--------------------------------------------------------------------------
  def enable?(item)
    return false if item.nil?
    return false if item.is_a?(Game_Actor)
    return false if item.is_a?(String)
    return true if item.segment?
    return false unless item.extend?
    return false unless item.has_durability?
    item.durability_data.repairable?
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    case item
    when Game_Actor
      draw_item_actor_name(index, item)
    when String
      draw_item_label(index, item)
    else
      super
    end
  end
  #--------------------------------------------------------------------------
  # ● アクター名の描画
  #--------------------------------------------------------------------------
  def draw_item_actor_name(index, actor)
    rect = item_rect(index)
    change_color(system_color)
    draw_text(rect, actor.name, 1)
  end
  #--------------------------------------------------------------------------
  # ● ラベルの描画
  #--------------------------------------------------------------------------
  def draw_item_label(index, label)
    rect = item_rect(index)
    change_color(system_color)
    draw_text(rect, label, 1)
  end
  #--------------------------------------------------------------------------
  # ● アイテムの個数を描画
  #--------------------------------------------------------------------------
  def draw_item_number(rect, item)
    if item.segment?
      number = @data[@data.index(item)].extend.size
      draw_text(rect, sprintf(":%2d", number), 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    @status_window.item = item if self.active && @status_window
  end
  #--------------------------------------------------------------------------
  # ● アイテムの消失
  #--------------------------------------------------------------------------
  def lose_item(item)
    return unless item
    return if item.is_a?(Game_Actor)
    return if item.is_a?(String)
    actor, slot_id = @equip_data[item]
    if actor # 装備の強制解除(消失)
      actor.force_change_equip(slot_id, nil)
    else # アイテムの消失
      $game_party.lose_item(item, 1)
    end
  end
  #--------------------------------------------------------------------------
  # ● 修理可能な装備一覧の取得
  #--------------------------------------------------------------------------
  def repairable_equips
    @data.select { |item|
      enable?(item)
    }.map{ |item|
      next item unless item.segment?
      item.extend.select { |item|
        enable?(item)
      }
    }.flatten
  end
end
#==============================================================================
# ■ BMSP::Window_RepairExtendItem
#------------------------------------------------------------------------------
#  装備修理画面で,セグメントの中身を表示するウインドウです.
#==============================================================================
class BMSP::Window_RepairExtendItem < BMSP::Window_ExtendItem
  #--------------------------------------------------------------------------
  # ● ステータスウインドウの設定
  #--------------------------------------------------------------------------
  def status_window=(window)
    @status_window = window
  end
  #--------------------------------------------------------------------------
  # ● アイテムを許可状態で表示するかどうか
  #--------------------------------------------------------------------------
  def enable?(item)
    return false if item.nil?
    return false if item.is_a?(Game_Actor)
    return false if item.is_a?(String)
    return false unless item.extend?
    return false unless item.has_durability?
    item.durability_data.repairable?
  end
  #--------------------------------------------------------------------------
  # ● アイテムをリストに含めるかどうか
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item.nil?
    true
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    @status_window.item = item if self.active && @status_window
  end
end
#==============================================================================
# ■ BMSP::Window_RepairDecide
#------------------------------------------------------------------------------
#  装備修理画面で,修理の実行の最終確認のウインドウです.
#==============================================================================
class BMSP::Window_RepairDecide < Window_Command
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :just_mode # お金が足りなくても修理を選択可能
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0,0)
    self.openness = 0
    self.deactivate
    @just_mode = false
  end
  #--------------------------------------------------------------------------
  # ● 標準パディングサイズの取得
  #--------------------------------------------------------------------------
  def standard_padding
    return 18
  end
  #--------------------------------------------------------------------------
  # ● コマンドリストの作成
  #--------------------------------------------------------------------------
  def make_command_list
    # 金額が足りるか
    price_list = self.repair_price_list
    price = price_list.inject(0, :+)
    if BMSP::Scene_RepairEquipment.point # ポイント
      enable = $game_variables[BMSP::Scene_RepairEquipment.point] >= price
    else # お金
      enable = $game_party.gold >= price
    end
    if !enable && @just_mode
      # ひとつでも修理できるものがあれば修理を許可
      if BMSP::Scene_RepairEquipment.point # ポイント
        enable = price_list.any? {|price|
          $game_variables[BMSP::Scene_RepairEquipment.point] >= price
        }
      else # お金
        enable = price_list.any? {|price|
          $game_party.gold >= price
        }
      end
    end
    add_command("修理する", :repair, enable)
    add_command("やめる", :back)
  end
  #--------------------------------------------------------------------------
  # ● 通貨単位の取得
  #--------------------------------------------------------------------------
  def currency_unit
    if BMSP::Scene_RepairEquipment.point # ポイント
      unit = BMSP::EquipmentDurability::POINT_UNIT[BMSP::Scene_RepairEquipment.point]
      unit ? unit : BMSP::EquipmentDurability::POINT_UNIT[:default]
    else # お金
      Vocab::currency_unit
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    change_color(normal_color, command_enabled?(index))
    draw_text(item_rect_for_text(index), command_name(index), 0)
    if index == 0 && @item # 金額の表示
      price_list = self.repair_price_list
      price = price_list.inject(0, :+)
      return if price == 0
      width = contents.width - 4
      cx = text_size(currency_unit).width
      draw_text(0, 0, width - cx - 2, line_height, price, 2)
      change_color(system_color)
      draw_text(0, 0, width, line_height, currency_unit, 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテム一覧の設定
  #--------------------------------------------------------------------------
  def item=(item)
    return if @item == item
    @item = item.is_a?(Array) ? item : [item]
    set if @item
  end
  #--------------------------------------------------------------------------
  # ● アイテム一覧の取得
  #--------------------------------------------------------------------------
  def item
    return @item
  end
  #--------------------------------------------------------------------------
  # ● 修理金額一覧の取得
  #--------------------------------------------------------------------------
  def repair_price_list
    if @item
      if BMSP::Scene_RepairEquipment.point # ポイント
        @item.map { |item|
          item.durability_data.repair_point(item)
        }
      else # お金
        @item.map { |item|
          item.durability_data.repair_price(item)
        }
      end
    else
      []
    end
  end
  #--------------------------------------------------------------------------
  # ● 呼び出し元の設定
  #--------------------------------------------------------------------------
  def last_window=(window)
    return if @last_window == window
    @last_window = window
  end
  #--------------------------------------------------------------------------
  # ● 呼び出し元の取得
  #--------------------------------------------------------------------------
  def last_window
    return @last_window
  end
  #--------------------------------------------------------------------------
  # ● ウインドウのセット
  #--------------------------------------------------------------------------
  def set
    # ウインドウの幅を描画文字幅から算出
    # コマンドの文字幅
    command_width = @list.size.times.map{|i|
      text_size(command_name(i)).width
    }
    command_width[0] += 24 # パディング
    unit_width = contents.text_size(currency_unit).width
    price_list = self.repair_price_list
    price = price_list.inject(0, :+)
    if price > 0
      price_width = contents.text_size(price).width
      command_width[0] += price_width + 2 + unit_width # 金額
      command_width[0] += 4 # 右余白
    end
    self.width = command_width.max + standard_padding * 2
    self.height = fitting_height(@list.size)
    self.x = (Graphics.width - self.width) / 2
    self.y = (Graphics.height - self.height) / 2
    # リフレッシュ
    refresh
    self.select(command_enabled?(0) ? 0 : 1)
  end
end
#==============================================================================
# ■ BMSP::Window_RepairResult
#------------------------------------------------------------------------------
#  装備修理画面で、修理結果を表示するウインドウです.
#==============================================================================
class BMSP::Window_RepairResult < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    y = (Graphics.height - window_height) / 2
    super(0, y, 48, window_height)
    self.openness = 0
    self.deactivate
  end
  #--------------------------------------------------------------------------
  # ● ウインドウの高さ
  #--------------------------------------------------------------------------
  def window_height
    self.fitting_height(3)
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh(data)
    contents.clear
    change_color(system_color)
    width = contents.width
    y = 0
    draw_text(0,y,width,line_height,data[:label],1)
    y += line_height
    x = (contents.width - (text_size(data[:item].name).width + 24)) / 2
    draw_item_name(data[:item], x, y, !data[:lost], width-24)
    change_color(data[:penalty] ? power_down_color : power_up_color)
    y += line_height
    draw_text(0,y,width,line_height,data[:message],1)
  end
  #--------------------------------------------------------------------------
  # ● ウインドウのセット
  #--------------------------------------------------------------------------
  def set(item, old_dur, penalty = nil)
    data = {}
    # 描画内容の設定
    data[:label] = "修理結果"
    data[:item] = item
    data[:penalty] = penalty
    data[:lost] = true if penalty == :break
    if penalty.nil?
      data[:message] = "耐久度が#{item.durability_data.durability}になった!"
    elsif penalty == :none
      data[:message] = "修理に失敗した"
    elsif penalty == :break
      data[:message] = "壊れてしまった"
    else
      data[:message] = "耐久度が#{item.durability_data.durability}になってしまった!"
    end
    # ウインドウ幅の設定
    line_widths = []
    line_widths.push(text_size(data[:label]).width + 24)
    line_widths.push(24 + text_size(item.name).width + 24)
    line_widths.push(text_size(data[:message]).width + 24)
    self.width = line_widths.max + standard_padding * 2
    self.create_contents
    # 位置の設定
    self.x = (Graphics.width - self.width) / 2
    # 内容の描画
    refresh(data)
  end
end
#==============================================================================
# ■ BMSP::Scene_RepairEquipment
#------------------------------------------------------------------------------
#  装備の修理を行う画面です.
#==============================================================================
class BMSP::Scene_RepairEquipment < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 費用の設定
  #--------------------------------------------------------------------------
  def self.point; @@point; end
  def self.point=(point); @@point = point; end
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_gold_window
    create_status_window
    create_command_windo
    create_item_window
    create_extend_window
    create_repair_window
    create_result_window
    @command_window.item_window = @item_window
    @command_window.refresh
    @command_window.activate
    @buffer = []
  end
  #--------------------------------------------------------------------------
  # ● ゴールドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_gold_window
    @gold_window = BMSP::Window_RepairGold.new
    @gold_window.x = 272
    @gold_window.y = Graphics.height - @gold_window.height
  end
  #--------------------------------------------------------------------------
  # ● ステータスウィンドウの作成
  #--------------------------------------------------------------------------
  def create_status_window
    wx = Graphics.width - 272
    wy = @help_window.height
    wh = Graphics.height - @help_window.height - @gold_window.height
    @status_window = BMSP::Window_RepairStatus.new(wx, wy, wh)
    @status_window.viewport = @viewport
  end
  #--------------------------------------------------------------------------
  # ● コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_command_windo
    wy = @help_window.height
    ww = Graphics.width - @status_window.width
    @command_window = BMSP::Window_RepairCommand.new(0, wy, ww)
    @command_window.help_window = @help_window
    @command_window.set_handler(:select,    method(:on_command_select))
    @command_window.set_handler(:all, method(:on_command_all))
    @command_window.set_handler(:cancel, method(:on_command_cancel))
  end
  #--------------------------------------------------------------------------
  # ● 拡張アイテムウィンドウの作成
  #--------------------------------------------------------------------------
  def create_extend_window
    @extend_window = BMSP::Window_RepairExtendItem.new
    @extend_window.viewport = @viewport
    @extend_window.status_window = @status_window
    @extend_window.item_window = @item_window
    @extend_window.help_window = @help_window
    @extend_window.set_handler(:ok,     method(:on_extend_ok))
    @extend_window.set_handler(:cancel, method(:on_extend_cancel))
    @extend_window.init
  end
  #--------------------------------------------------------------------------
  # ● アイテムウィンドウの作成
  #--------------------------------------------------------------------------
  def create_item_window
    wy = @help_window.height + @command_window.height
    ww = Graphics.width - @status_window.width
    wh = Graphics.height - @help_window.height - @command_window.height
    @item_window = BMSP::Window_RepairList.new(0, wy, ww, wh)
    @item_window.viewport = @viewport
    @item_window.status_window = @status_window
    @item_window.help_window = @help_window
    @item_window.set_handler(:ok,     method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:on_item_cancel))
    @item_window.refresh
  end
  #--------------------------------------------------------------------------
  # ● 確認ウィンドウの作成
  #--------------------------------------------------------------------------
  def create_repair_window
    @repair_window = BMSP::Window_RepairDecide.new
    @repair_window.z = @viewport.z
    @repair_window.set_handler(:repair,    method(:on_repair))
    @repair_window.set_handler(:cancel,   method(:on_repair_cancel))
    @repair_window.set_handler(:back,     method(:on_repair_back))
  end
  #--------------------------------------------------------------------------
  # ● 結果ウィンドウの作成
  #--------------------------------------------------------------------------
  def create_result_window
    @result_window = BMSP::Window_RepairResult.new
    @result_window.z = @viewport.z
  end
  #--------------------------------------------------------------------------
  # ● 選択の開始
  #--------------------------------------------------------------------------
  def start_select
    activate_item_window(@item_window.index == -1 ? true : false)
    @status_window.item = @item_window.item
  end
  #--------------------------------------------------------------------------
  # ● 修理待ち状態か?
  #--------------------------------------------------------------------------
  def wait_for_repairing?
    !@command_window.active and
    !@item_window.active    and
    !@extend_window.active  and
    !@repair_window.active  and @repair_window.openness == 0
    !@result_window.active  and @result_window.openness == 0
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    # 結果ウインドウを閉じる動作
    if @result_window.active && Input.repeat?(:C)
      @result_window.close.deactivate
      repair_end if @buffer.empty?
    end
    if [email protected]? && wait_for_repairing?
      # バッファにアイテムがあれば修理を実行する
      if !execute_repair(@buffer.shift) && @buffer.empty?
        # アイテムを修理せず終わった(お金が足りない)
        repair_end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 修理フェイズの終了
  #--------------------------------------------------------------------------
  def repair_end
    case @repair_window.last_window
    when @item_window
      activate_item_window
    when @extend_window
      activate_extend_window
      if @extend_window.item_max == 0
        # 拡張ウインドウが空ならウインドウを閉じる
        @extend_window.close.deactivate
        activate_item_window
      else
        @item_window.refresh
      end
    when @command_window
      refresh_item_window
      @command_window.activate
    end
    @command_window.refresh # コマンドウインドウのリフレッシュ
  end
  #--------------------------------------------------------------------------
  # ● コマンド[個別修理]
  #--------------------------------------------------------------------------
  def on_command_select
    @command_window.deactivate
    start_select
  end
  #--------------------------------------------------------------------------
  # ● コマンド[一括修理]
  #--------------------------------------------------------------------------
  def on_command_all
    @repair_window.just_mode = true
    @repair_window.item = @item_window.repairable_equips
    @repair_window.last_window = @command_window
    @repair_window.open.activate
    @command_window.deactivate
  end
  #--------------------------------------------------------------------------
  # ● コマンド[キャンセル]
  #--------------------------------------------------------------------------
  def on_command_cancel
    return_scene
  end
  #--------------------------------------------------------------------------
  # ● アイテム[決定]
  #--------------------------------------------------------------------------
  def on_item_ok
    if @item_window.item.extend? # 拡張アイテム
      @repair_window.just_mode = false
      @repair_window.item = @item_window.item
      @repair_window.last_window = @item_window
      @repair_window.open.activate
    else # セグメント
      activate_extend_window(true)
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテム[キャンセル]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.deactivate
    @command_window.activate
  end
  #--------------------------------------------------------------------------
  # ● 拡張アイテム[決定]
  #--------------------------------------------------------------------------
  def on_extend_ok
    @repair_window.just_mode = false
    @repair_window.item = @extend_window.item
    @repair_window.last_window = @extend_window
    @repair_window.open.activate
  end
  #--------------------------------------------------------------------------
  # ● 拡張アイテム[キャンセル]
  #--------------------------------------------------------------------------
  def on_extend_cancel
    @extend_window.close.deactivate
    activate_item_window
  end
  #--------------------------------------------------------------------------
  # ● 確認[修理]
  #--------------------------------------------------------------------------
  def on_repair
    @buffer.concat @repair_window.item
    @repair_window.openness = 0
    @repair_window.close.deactivate
  end
  #--------------------------------------------------------------------------
  # ● 確認[やめる]
  #--------------------------------------------------------------------------
  def on_repair_back
    on_repair_cancel
  end
  #--------------------------------------------------------------------------
  # ● 確認[キャンセル]
  #--------------------------------------------------------------------------
  def on_repair_cancel
    @repair_window.close.deactivate
    case @repair_window.last_window
    when @item_window
      activate_item_window
    when @extend_window
      activate_extend_window
    when @command_window
      @command_window.activate
    end
  end
  #--------------------------------------------------------------------------
  # ● 修理の実行
  #--------------------------------------------------------------------------
  def execute_repair(item)
    # 所持金の減少
    if @@point # ポイント
      return false if $game_variables[@@point] < item.durability_data.repair_point(item)
      $game_variables[@@point] -= item.durability_data.repair_point(item)
      $game_variables[@@point] = 0 if $game_variables[@@point] < 0
    else # お金
      return false if $game_party.gold < item.durability_data.repair_point(item)
      $game_party.lose_gold(item.durability_data.repair_price(item))
    end
    Sound.play_repair_equipment
    @gold_window.refresh
    # 強化実行
    old_dur,penalty = item.durability_data.execute_repair(item)
    penalty ? Sound.play_forge_equipment_miss : Sound.play_forge_equipment_success
    if penalty == :break # 消失
      @item_window.lose_item(item)
    end
    # 結果の表示
    @result_window.set(item,old_dur,penalty)
    @result_window.openness = 255
    @result_window.open.activate
    true
  end
  #--------------------------------------------------------------------------
  # ● アイテムウインドウのアクティブ化
  #--------------------------------------------------------------------------
  def activate_item_window(init_index = false)
    refresh_item_window(init_index)
    @item_window.activate
  end
  #--------------------------------------------------------------------------
  # ● アイテムウインドウのリフレッシュ
  #--------------------------------------------------------------------------
  def refresh_item_window(init_index = false)
    @item_window.refresh
    # インデックスの修正
    if @item_window.index >= @item_window.item_max
      if @item_window.item_max > 0
        @item_window.select(@item_window.item_max - 1)
      else
        @item_window.select(0)
      end
    end
    @item_window.index = 0 if init_index
  end
  #--------------------------------------------------------------------------
  # ● 拡張アイテムウインドウのアクティブ化
  #--------------------------------------------------------------------------
  def activate_extend_window(init_index = false)
    # セグメントの設定
    @extend_window.segment = @item_window.item.extend
    # 表示位置と高さの変更
    @extend_window.set
   
    @extend_window.refresh
    @extend_window.open.activate
    @extend_window.index = 0 if init_index
  end
end
#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base < Window
  if BMSP::EquipmentDurability::BROKENCOLOR
  #--------------------------------------------------------------------------
  # ● アイテム名の描画(再定義)
  #     enabled : 有効フラグ。false のとき半透明で描画
  #--------------------------------------------------------------------------
  def draw_item_name(item, x, y, enabled = true, width = 172)
    return unless item
    draw_icon(item.icon_index, x, y, enabled)
    if item.has_durability? && item.durability_data.durability == 0
      change_color(knockout_color, enabled)
    else
      change_color(normal_color, enabled)
    end
    draw_text(x + 24, y, width, line_height, item.name)
  end
  end
  #--------------------------------------------------------------------------
  # ● アイテム名の描画
  #     enabled : 有効フラグ。false のとき半透明で描画
  #--------------------------------------------------------------------------
  alias bmsp_equipmentdurability_draw_item_name draw_item_name
  def draw_item_name(item, x, y, enabled = true, width = 172)
    bmsp_equipmentdurability_draw_item_name(item, x, y, enabled, width)
    return unless item
    return unless item.has_durability?
    return unless BMSP::EquipmentDurability::DRAW_GAUGE
    # 装備耐久度ゲージの描画
    max = item.extend.durability_data.gauge_max_durability
    dur = item.extend.durability_data.durability
    if dur > max
      rate = 1.0
      color = text_color(BMSP::EquipmentDurability::GAUGE_OVERCOLOR)
    elsif dur == max
      rate = 1.0
      color = text_color(BMSP::EquipmentDurability::GAUGE_MAXCOLOR)
    else
      rate = dur.to_f / max
      color = text_color(BMSP::EquipmentDurability::GAUGE_COLOR)
    end
    edgecolor = BMSP::EquipmentDurability::GAUGE_EDGECOLOR
    edgecolor = edgecolor.nil? ? nil : text_color(edgecolor)
    bgcolor = BMSP::EquipmentDurability::GAUGE_BACKCOLOR
    bgcolor = bgcolor.nil? ? nil : text_color(bgcolor)
    unless enabled
      color.alpha = translucent_alpha
      bgcolor.alpha = translucent_alpha unless bgcolor.nil?
    end
    bmsp_equipmentdurability_draw_durability_gauge(x, y, rate, color, edgecolor, bgcolor)
  end
  #--------------------------------------------------------------------------
  # ● 装備耐久度ゲージの描画
  #--------------------------------------------------------------------------
  def bmsp_equipmentdurability_draw_durability_gauge(x, y, rate, color, edgecolor, bgcolor)
    gauge_width = edgecolor ? 18 : 20
    gauge_x = x + 2
    gauge_y = y + (edgecolor ? 19 : 20)
    width = rate * gauge_width
    width = 1 if rate > 0 && width == 0
    contents.fill_rect(gauge_x-1, gauge_y-1, gauge_width + 2, 4, edgecolor) if edgecolor
    contents.fill_rect(gauge_x, gauge_y, gauge_width, 2, bgcolor) if bgcolor
    contents.fill_rect(gauge_x, gauge_y, width, 2, color)
  end
end
#==============================================================================
# ■ Window_ShopBuy
#==============================================================================
class Window_ShopBuy < Window_Selectable
  #--------------------------------------------------------------------------
  # ● アイテムの取得
  #--------------------------------------------------------------------------
  alias bmsp_equipmentdurability_item item
  def item
    item = bmsp_equipmentdurability_item
    return item unless item.extended?
    item.extend.original
  end
  #--------------------------------------------------------------------------
  # ● アイテムリストの作成
  #--------------------------------------------------------------------------
  alias bmsp_equipmentdurability_make_item_list make_item_list
  def make_item_list
    bmsp_equipmentdurability_make_item_list
    map_proc = proc { |item, type|
      extend = BMSP::ItemExtend.new(item)
      extended_item = extend.item
      goods = @shop_goods.find{ |goods|
        goods[0] == type && goods[1] == item.id
      }
      @price[extend] = goods[2] == 0 ? extend.item.price : goods[3]
      extend.item
    }
    @data.map! do |item|
      case item
      when RPG::Weapon
        map_proc.call(item, 1)
      when RPG::Armor
        map_proc.call(item, 2)
      else
        item
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 商品の値段を取得
  #--------------------------------------------------------------------------
  alias bmsp_equipmentdurability_price price
  def price(item)
    price = bmsp_equipmentdurability_price(item)
    return price if price
    @price[item.extend]
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    rect = item_rect(index)
    draw_item_name(item, rect.x, rect.y, enable?(item))
    rect.width -= 4
    draw_text(rect, price(item), 2)
  end
end
                                               

Lv3.寻梦者

梦石
0
星屑
3642
在线时间
912 小时
注册时间
2017-1-19
帖子
269
5
 楼主| 发表于 2017-11-26 01:06:44 | 只看该作者
必须把==也要放进难怪自己设置无效!! 不过不减耐久度
回复 支持 0 反对 1

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3642
在线时间
912 小时
注册时间
2017-1-19
帖子
269
4
 楼主| 发表于 2017-11-26 00:36:21 | 只看该作者
没用!而且不减耐久度,实在是不会用
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7427
在线时间
948 小时
注册时间
2017-9-27
帖子
583
3
发表于 2017-11-25 23:39:20 | 只看该作者
RUBY 代码复制
  1. # また,アイテムのメモ欄にてアイテムごとに耐久度の設定を行うことができます.
  2. #  ==装備耐久度EnableDurability:xxx==
  3. # xxxにtrueかfalseを指定して,耐久度のあるアイテムかどうか設定します.
  4. #   ==装備耐久度RepairPrice:xxx==
  5. # お金による修理費用の式を設定します.
  6. #   ==装備耐久度RepairPoint:xxx==
  7. # 変数による修理費用の式を設定します.
  8. #   ==装備耐久度Price:xxx==
  9. # 価格の式を設定します.
  10. #   ==装備耐久度Success:xxx==
  11. # 修理成功率の式を設定します.
  12. #   ==装備耐久度Atk:xxx==
  13. # 攻撃力の式を設定します.
  14. #   ==装備耐久度Def:xxx==
  15. # 防御力の式を設定します.
  16. #   ==装備耐久度Mat:xxx==
  17. # 魔法力の式を設定します.
  18. #   ==装備耐久度Mdf:xxx==
  19. # 魔法防御の式を設定します.
  20. #   ==装備耐久度Agi:xxx==
  21. # 敏捷性の式を設定します.
  22. #   ==装備耐久度Luk:xxx==
  23. # 運の式を設定します.
  24. #   ==装備耐久度MaxHP:xxx==
  25. # 最大HPの式を設定します.
  26. #   ==装備耐久度MaxMP:xxx==
  27. # 最大MPの式を設定します.
  28. #   ==装備耐久度DefaultDurability:xxx==
  29. # 初期耐久度を設定します.
  30. #   ==装備耐久度MaxDurability:xxx==
  31. # 最大耐久度を設定します.
  32. #   ==装備耐久度RepairDurability:xxx==
  33. # 修理成功時の耐久度を設定します.
  34. #   ==装備耐久度GaugeMax:xxx==
  35. # ゲージの最大耐久度を設定します.
  36. #   ==装備耐久度Destroy:xxx==
  37. # xxxにtrueかfalseを指定して耐久度が0になったとき装備が破棄されるか設定します.
  38. #   ==装備耐久度Penalty:xxx==
  39. # ペナルティを設定します.xxxにはbreak,none,(自然数)のいずれかを指定します.

人家这一段不是写着吗?可以在备注栏里设置,格式就是“装備耐久度EnableDurability:xxx”这样的写法。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2017-11-25 21:32:23 | 只看该作者
估计是写备注里吧···这个脚本可以用code代码框一下吗···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 0 反对 1

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 15:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表